Linked by Dennis Heuer on Wed 25th Aug 2010 22:23 UTC
Linux I came across a news entry at Phoronix about a new init replacement, systemd, and curiously started a read into the surprisingly heavy matter. Systemd is by no means as simple as upstart. It does far more things far more straight and in more detail. The differences are so significant that they enforce quite different configuration strategies. One can argue for both, depending on the goal to reach. However, that's not what I want to write about. After having read what systemd is capable of, and how it does it, I began to put the existence of all system daemons - in their today's forms - in question.
Thread beginning with comment 438340
To view parent comment, click here.
To read all comments associated with this story, please click here.
RE[2]: Comment by mtzmtulivu
by sorpigal on Thu 26th Aug 2010 16:49 UTC in reply to "RE: Comment by mtzmtulivu"
Member since:

If that were the only problem then any one of the init replacements created in the last 15 years would be an improvement.

Speed is secondary. An init replacement primarily needs to solve initialization sequencing. Building an init sequence in which the appropriate things are started at appopriate times, and not before other things that may be needed first, is a highly non-trivial process. Upstart and systemd try to solve this problem and the different approaches define more than anything else the differences between the systems.

After that there are some nice to have things which are lacking on linux. Here I primarily mean service control; it's embarrassing that Windows does this better (yes, better). Both upstart and systemd try to address this in fairly similar ways.

Both (but systemd in particular) do other things, of course, which I consider nonessential but still worthwhile and improvements on current systems. I have to give a great deal of credit to Lennart for not trying to solve just one tiny technical problem but aiming for a holistic approach, while still not greatly violating the *nix philosophy.

Reply Parent Score: 2

Bill Shooter of Bul Member since:

But init already does the sequencing correctly, in a linear fashion. That's not too difficult at all.

But linear is slow. We have muli core cpu's now. Booting would be faster if we loaded things in parallel. Ok, but what can we load parallel to what, and what has to remain serialized? That's the complexity of the sequencing. its complex due to the parallelization which is due to the need for speed.

Reply Parent Score: 3

RE[4]: Comment by mtzmtulivu
by sorpigal on Thu 26th Aug 2010 17:33 in reply to "RE[3]: Comment by mtzmtulivu"
sorpigal Member since:

Linear is not 'easy' - linear is hard. Nonlinear is harder, but linear is not trivial! You have a large, unknown set of things to run which must be run in a particular order. What order? If you know you have a good order and want to insert a new item to run, where in the sequence does it go? Can you *safely* alter the order by inserting this new item and can you be sure that doing so does not break anything?

For simple things it's pretty easy to just "drop it in" and hope it will be fine, but there are many non-simple things. Does your ldap daemon need to be started before your remote filesystems are mounted? What if your /home is mounted via nfs and all users are stored in ldap? How do you know which order to load things in and how do you re-order it when it changes? Even in a purely linear situation this is not simple. If thinks work well today it's because of luck and careful engineering over many years.

It's a management nightmare which only becomes worse over time. Designing a system that works on purpose, instead of accidentally, is a worthwhile effort and a tricky problem.

Being faster is nice, sure, but that's not really a problem that needs to be solved, it's just a nice side effect. Once we can figure out sequencing properly we can get parallelism "for free" and thus some speedups. But no, it's not a goal.

Reply Parent Score: 3