s6

Mirror/fork of https://skarnet.org/software/s6/
git clone https://ccx.te2000.cz/git/s6
Log | Files | Refs | README | LICENSE

commit eba790dff930c232d6b5266fdfda0b1231167609
parent 12b096677c1fd9d90c496a807ac4555be211fc18
Author: Laurent Bercot <ska-skaware@skarnet.org>
Date:   Sat, 24 Jun 2023 04:42:49 +0000

 Document new s6-svscan options

Signed-off-by: Laurent Bercot <ska@appnovation.com>

Diffstat:
MINSTALL | 2+-
MNEWS | 1+
Mdoc/index.html | 2+-
Mdoc/s6-svscan.html | 25++++++++++++++++++++-----
Mdoc/upgrade.html | 4++++
Msrc/supervision/s6-svscan.c | 2+-
6 files changed, 28 insertions(+), 8 deletions(-)

diff --git a/INSTALL b/INSTALL @@ -7,7 +7,7 @@ Build Instructions - A POSIX-compliant C development environment - GNU make version 3.81 or later - skalibs version 2.13.2.0 or later: https://skarnet.org/software/skalibs/ - - execline version 2.9.3.0 or later: https://skarnet.org/software/execline/ + - execline version 2.9.4.0 or later: https://skarnet.org/software/execline/ (You can disable this requirement at configure time, but will lose some functionality.) - Optional: nsss version 0.2.0.3 or later: https://skarnet.org/software/nsss/ diff --git a/NEWS b/NEWS @@ -5,6 +5,7 @@ In 2.11.4.0 - New option to s6-svc: -s, to specify a signal by name (or number). - New option to s6-log: -t, to specify a timeout for partial last lines. + - s6-svscan rewrite: no more quadratic reaps, no more forced 1s wait on shutdown In 2.11.3.2 diff --git a/doc/index.html b/doc/index.html @@ -88,7 +88,7 @@ requirement if you link against the shared version of the skalibs library. </li> <li> (Optional, but really recommended for full functionality): <a href="//skarnet.org/software/execline/">execline</a> version -2.9.3.0 or later. When s6 is built with execline support (which is the default), +2.9.4.0 or later. When s6 is built with execline support (which is the default), execline is a build-time requirement, and also a run-time requirement for certain binaries that spawn scripts interpreted with <a href="//skarnet.org/software/execline/execlineb.html">execlineb</a>. </li> diff --git a/doc/s6-svscan.html b/doc/s6-svscan.html @@ -27,7 +27,7 @@ the root or a branch of a <em>supervision tree</em>. <h2> Interface </h2> <pre> - s6-svscan [ -d <em>notif</em> ] [ -X <em>consoleholder</em> ] [ -c max ] [ -t <em>rescan</em> ] [ <em>scandir</em> ] + s6-svscan [ -d <em>notif</em> ] [ -X <em>consoleholder</em> ] [ -c max | -C services_max ] [ -L name_max ] [ -t <em>rescan</em> ] [ <em>scandir</em> ] </pre> <ul> @@ -67,6 +67,7 @@ even that the relevant <a href="s6-supervise.html">s6-supervise</a> processes ha been started. If you need to test for <em>deep readiness</em>, meaning that all the services in the supervision tree have been started and are ready, you cannot rely on this option. </li> + <li> <tt>-X&nbsp;<em>consoleholder</em></tt>&nbsp;: assume the output console is available on descriptor <em>consoleholder</em>. If this option is given, and a <tt>s6-svscan-log</tt> service exists, the <a href="s6-supervise.html">s6-supervise</a> process for that service @@ -75,17 +76,31 @@ for a setup done via <a href="//skarnet.org/software/s6-linux-init/">s6-linux-in where all error messages go to the <tt>s6-svscan-log</tt> catch-all logger service by default, except messages from this service itself, which fall back to <em>consoleholder</em>. If you're not sure what to use this option for, or how, you don't need it. </li> - <li> <tt>-c&nbsp;<em>max</em></tt>&nbsp;: maintain services for up to <em>max</em> -service directories. Default is 500. Lower limit is 2. Upper limit is 90000. If + + <li> <tt>-C&nbsp;<em>services_max</em></tt>&nbsp;: maintain services for up to <em>services_max</em> +service directories, including loggers. Default is 1000. Lower limit is 4. Upper limit is 160000. If you're increasing this value from the default, please note that: <ul> <li> The higher <em>max</em> is, the more stack memory s6-svscan will use, -up to 100 bytes per service. </li> +up to 200 bytes per service, also depending on the value of <em>name_max</em>. </li> <li> s6-svscan uses 2 file descriptors per logged service. </li> </ul> It is the admin's responsibility to make sure that s6-svscan has enough available descriptors to function properly and does not exceed its stack limit. The default -of 500 is safe and provides enough room for every reasonable system. </li> +of 1000 is safe and provides enough room for every reasonable system. </li> + + <li> <tt>-c&nbsp;<em>max</em></tt>&nbsp;: a deprecated way of setting <em>services_max</em>. +If the <tt>-c</tt> option is given, the value of <em>max</em> is doubled, and the result +is used as <em>services_max</em>. The reason for the change is that previous versions +of s6-svscan handled services+loggers as a single entity; but this version of s6-svscan +handles services and loggers in the same way, so with the default values it's now possible +to handle e.g. 600 unlogged services, whereas previously you were limited to 500 because +s6-svscan was reserving room for the loggers. </li> + + <li> <tt>-L&nbsp;<em>name_max</em></tt>&nbsp;: the maximum length of a name in the +scan directory. Names longer than <em>name_max</em> won't be taken into account. +Default is 251. It cannot be set lower than 11 or higher than 1019. </li> + <li> <tt>-t&nbsp;<em>rescan</em></tt>&nbsp;: perform a scan every <em>rescan</em> milliseconds. If <em>rescan</em> is 0 (the default), automatic scans are never performed after the first one and s6-svscan will only detect new services when told to via a diff --git a/doc/upgrade.html b/doc/upgrade.html @@ -23,8 +23,12 @@ <ul> <li> <a href="//skarnet.org/software/skalibs/">skalibs</a> dependency bumped to 2.13.2.0. </li> + <li> <a href="//skarnet.org/software/execline/">execline</a> +dependency bumped to 2.9.4.0. </li> <li> New <tt>-s</tt> option to <a href="s6-svc.html">s6-svc</a>. </li> <li> New <tt>-t</tt> option to <a href="s6-log.html">s6-log</a>. </li> + <li> <a href="s6-svscan.html">s6-svscan</a> rewrite; new options +<tt>-C</tt> and <tt>-L</tt>. </li> </ul> <h2> in 2.11.3.2 </h2> diff --git a/src/supervision/s6-svscan.c b/src/supervision/s6-svscan.c @@ -775,7 +775,7 @@ int main (int argc, char const *const *argv) if (!tain_future(&scan_deadline)) flag |= 1 ; if (!tain_future(&start_deadline)) flag |= 2 ; } - LOLDEBUG("loop: %d ms%s%s", ms, flag & 1 ? ", scan" : "", flag & 2 ? ", start" : "") ; + LOLDEBUG("loop: %d ms", ms) ; } #endif r = iopause_g(x, 2, &deadline) ;