Talk:Comparison of init systems

Dump of comparison table split off from OpenRC
The tabular comparison appears to be biased negatively against sysvinit and upstart. It is copied from the systemd website.

OpenRC bonus features:

Size and complexity
OpenRC (0.9.3): sysvinit + 300 files, ~30k lines, 3.3k posix sh, ~12k C

Upstart (1.5): 285 files, ~185k lines, ~97k C

Debian: sysvinit + 120 files, 5.8k lines

systemd (v44+): dbus + glib + 900 files, 224k lines, 125k C

sysvinit: 560kB, 75 files, ~15k lines

D-Bus: 11MB, ~500 files. 300k lines, 120k C

glib: 72MB, ~2500 files, ~1.7M lines, ~430k C

Debian startup is smallest, it's only shell with sysvinit (C) as dependency

Upstart is about 10 times bigger in terms of lines of code/text. Most of the extra complexity size comes from C.

OpenRC is about twice as big as debian startup. The size difference is mostly the OpenRC core written in C, which expands the footprint from ~3k LoC to ~15k LoC compared to shell.

systemd is about 10 times bigger, like upstart. But with the mandatory deps it blows up to about one hundred times the code footprint! Most of the extra code is in mandatory dependencies, but the systemd core is also bigger than anything else.


 * This comparison is totally misguided. Fixing it would require much more work than simply running wc(1) on the source repository. The numbers for systemd above include udev and multiple libraries for talking to it. Additionally, there's a whole slew of commands (for debugging purposes, mostly) that have nothing to do with PID 1. Like generating bootchart graphs in SVG format. That's also where glib comes from: it's used by gudev, a convenience wrapper around libudev. Then there's logind and various other stuff.


 * One can certainly disagree with the systemd guys' preference for maintaining a bunch of loosely related stuff in a single git repository. It doesn't affect the complexity of the init system, though, and this is what this section is supposedly about.


 * As it is, just running wc(1) on the src/ subtree of a repository (and this seems to be exactly how those numbers were achieved) and then drawing bogus conclusions doesn't provide any value at all. --Lsl (talk) 18:25, 5 February 2014 (UTC)

OpenRC parallel startup is an unstable feature
Acording to this comment on bug #391945:

"rc_parallel has always been considered an unstable feature of openrc. There was a very clear warning in rc.conf thatsetting rc_parallel=y can lock up your boot process.

rc_parallel=y is only to be used currently by developers and users who are willing to test the feature, and bugs against it are not considered release blockers.

I recommend removing any rc_parallel lines from your rc.conf unless you are comfortable with this risk."

I would like to change the "Yes (optional)" entry on the Parallel service startup / OpenRC cell, to "Yes (unstable)", with a link to the bug, if no one disagrees.

Update (version 0.12 and higher) The recent version of the OpenRC works with parallel setup quite nice, however there are exists corner cases in which OpenRC fails to work properly. In most of the cases problem is in init scripts themself and that are fixed when got discovered. Also openrc doesn't break dependency cycles well.