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:
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 <em>consoleholder</em></tt> : 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 <em>max</em></tt> : 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 <em>services_max</em></tt> : 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 <em>max</em></tt> : 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 <em>name_max</em></tt> : 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 <em>rescan</em></tt> : 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) ;