[squid-dev] SMP scaling in no_daemon mode?

Alex Rousskov rousskov at measurement-factory.com
Fri Jun 9 14:23:06 UTC 2017


On 06/09/2017 01:38 AM, Andreas Weigel wrote:

> The
> overall idea was to make the decision to create and manage kids to
> depend on the number of configured workers/diskers. 

It feels like you may be drifting into a dangerous territory of
fixing/changing "everything" related to SMP. Please stay focused on
fixing --foreground! Fixing --foreground does not change how or whether
kids are created and managed. It only changes who does that.


> But I start to think
> that this is not very wise because it prevents adding worker processes
> by just reloading the configuration? 

When daemonized, Squid master process does not support reconfiguration
at all. There are plans to change that, but those difficult changes are
completely outside your project scope.


>> * -N: The initial process is a master and a worker process.
>>        No kids.
>>        No daemonimization.
>>
>> * --foreground: The initial process is the master process.
>>        One or more worker kids (depending on workers=N).
>>        No daemonimization.
>>
>> * neither: The initial process double-forks the master process.
>>        One or more worker kids (depending on workers=N).
>>        Daemonimization.

> I think I can agree to that.

Great. Please limit your changes to making the above true. AFAICT, that
means fixing --foreground. Everything else is already working as
expected as far as the above summary is concerned. There are many other
bugs in that area, especially in v3.5, but you need to ignore them to
succeed.


> And [-N] should definitely not be termed "no daemon"-mode, as
> that is what --foreground will probably do in the future.

You may be right, but I would _not_ change that terminology now because
all the renaming will obfuscate your true fix and make it more difficult
to understand/review. It may also preclude v3.5 acceptance.


> What I get from http://bugs.squid-cache.org/show_bug.cgi?id=3826#c40 is,
> that the mentioned setup works because systemd broadcasts
> (KillMode=mixed) the signals to all child processes.

>From design point of view, Squid should not rely on 3rd party
applications sending signals to kids. If such broadcast works today in
some environment, great, but this is not a part of Squid interface. As
far as signaling is concerned, Squid interface is the PID file. All
signals should be sent to the process listed there. Everything else is
unsupported.

Alex.


More information about the squid-dev mailing list