From 047befef9b8ef074d34b05e294d753f6c2751987 Mon Sep 17 00:00:00 2001 From: Laurent Bercot Date: Wed, 23 Sep 2015 19:13:22 +0000 Subject: No need for -a in s6-rc -u invocation; remove -X from dryrun print --- doc/why.html | 42 +++++++++++++++++++++++++----------------- 1 file changed, 25 insertions(+), 17 deletions(-) (limited to 'doc/why.html') diff --git a/doc/why.html b/doc/why.html index 829b31a..8c4c869 100644 --- a/doc/why.html +++ b/doc/why.html @@ -26,14 +26,15 @@ runit, perp or daemontools -define a service as a long-lived process, a.k.a a +define a service as a long-lived process, a.k.a daemon. They provide tools to run the daemon in a reproducible way in a controlled environment and keep it alive if it dies; they also provide daemon management tools to, among others, send signals to the daemon without knowing its PID. They can -control individual long-lived process perfectly well, and +control individual long-lived processes perfectly well, and s6 also provides -tools to manage a whole supervision tree. +tools to manage a whole supervision tree. To any system administrator +concerned about reliability, supervision suites are a good thing.

@@ -45,22 +46,24 @@ tools to manage a whole supervision tree. management is doable on simple systems, where there aren't many dependencies, and where most of the one-time initialization can take place in stage 1, before any daemons are launched. -On embedded systems, for instance, this is perfectly reasonable. +On some embedded systems, for instance, this is perfectly reasonable.

- On bigger systems, though, it is more problematic. Here are a few + On other systems, though, it is more problematic. Here are a few issues encountered:

@@ -140,9 +143,10 @@ that it has a significant performance impact.

(Note that OpenRC has an option to start services in parallel, but at the time of this -writing, it has no readiness notification mechanism when this option -is used, and all the services are started in parallel without regard -for the dependency graph, so it is not reliable.) +writing, it uses polling on a lock file to check whether a service +has completed all its dependencies; this is heavily prone to race +conditions, and is not the correct mechanism to ensure proper service +ordering, so this option cannot be considered reliable.)

@@ -163,8 +167,8 @@ boilerplate, which adds to the inefficiency problem. the flaws of traditional service starters, and provide supervision, dependency management and sometimes readiness notification, while reducing the amount of scripting needed. -Unfortunately, the results were tightly integrated, monolithic init -systems straying very far away from Unix core principles, with +Unfortunately, the results are tightly integrated, monolithic init +systems straying far away from Unix core principles, with design flaws that make the historical inits' design flaws look like a joke.

@@ -174,7 +178,10 @@ a joke. one. On the front page, in the "feature highlights" section: "Tasks and Services are started and stopped by events. Events are generated as tasks and services are started -and stopped." Do you understand what that means? I don't. +and stopped." Do you understand what that means? I don't. Also, +Upstart was the first system that used ptrace on the +processes it spawned in order to keep track of their forks. If +you don't know what that means: it was pure insanity.
  • launchd, Darwin's init and service manager. The wikipedia page (linked here because Apple doesn't see fit to provide a documentation page for @@ -216,8 +223,9 @@ such as minimal software dependencies and shortness of code paths.
  • - Pages and pages could be written about the shortcomings of integrated -init systems; one fact remains - they are not a satisfying solution + Pages and pages could be - and have been - written about the shortcomings +of integrated +init systems, but one fact remains: they are not a satisfying solution to the problem of service management under Unix.

    -- cgit v1.3.1