On Sat, Feb 22, 2014 at 9:28 AM, Andrew Savchenko <[email protected]> wrote:
[snip]
> And here we have a design issue. I already pointed this issue in this
> discussion:
> http://www.mail-archive.com/[email protected]/msg144144.html
> Though it was completely ignored by you. I understand: it is easier
> to discuss design in terms of taste than in technical merits.

I'm sorry, I was not part of that particular subthread. You are wrong
anyway (see below)

> Systemd assumes that time required to start service is small (at
> microseconds scale). While this is true for widely used simple
> setups, this is not true in general case. Service may take seconds or
> even minutes to start up (good example are services depending on
> enterprise SAN or large databases).

Yeah; and systemd needs not to worry about that. The clients
connecting have to. Set the clients to wait a reasonable time, and
then everybody is happy.

> And because systemd never assumes
> it can take long time to start we have the following issues possible
> in general case:
>
> 1. Client connections are lost due to timeout when service takes
> long time to start. Systemd fakes service to be available while it
> isn't still. Thus systemd is not an option for production grade
> servers.

Again, you can configure that on the clients.

> 2. Even if connection timeout is not reached, requests may pale up and
> be lost. Loss trigger depends on memory available, thus systemd is
> not an option for both embedded setups and production server setups.

You realize that if it's embedded, it makes no sense that it receives
the godzillion connections necessary for the kernel queue to fill up?
And on big iron, you can define the size of the queue; in the kernel,
again, this has nothing to do with systemd. You don't even need to
recompile your kernel.

> As one can see, while systemd socket activation design will work for
> many case,

Glad to see you at least recognize this; but it can work for all
cases. It doesn't have to, though (see below).

> it will fail for corner ones and by no means can't be used
> in production (where this corner cases have a high chance to rise).

You evidently have no idea what are you talking about.

First of all, as I said, the "problems" you mention are not problems
at all, since slow starting services, by definition, have clients that
need to cope with the slow starting (and if they don't, it's a bug in
the clients); and because either you are embedded, and therefore you
don't expect a godzillion connections, or you are medium size or big
iron, and you set your queue size with a kernel knob to be as large as
necessary.

And secondly, even if those problems were real (which they are not),
socket activation *IS OPTIONAL*. It's a feature that systemd supports,
*if the admin wants to use it*. If you are in a corner case and you
cannot change the timeout of your clients (because they are
proprietary, for example), or you are constrained by memory (if you
are embedded but anyhow want to handle gracefully a godzillion
connections), THEN YOU DON'T USE SOCKET ACTIVATION.

"Problem" solved.

If you are *really* interested in learning about the advantages of
socket activation, read [1]. However, I'm sure that you will not, as
time and again in this thread you only have show that you are not even
willing to do your homework before you start ranting against systemd;
just like you did when you said that libsystemd.so was used in PID 1
[2] (which, of course, you conveniently ignored although I replied
specifically to you).

Therefore, I'm not going to waste more of my time arguing with someone
who doesn't even read the proper documentation.

I'm done with you in this thread.

Regards.

[1] http://0pointer.de/blog/projects/socket-activation.html
[2] http://article.gmane.org/gmane.linux.gentoo.user/272840
-- 
Canek Peláez Valdés
Posgrado en Ciencia e Ingeniería de la Computación
Universidad Nacional Autónoma de México

Reply via email to