112b69860f
As described in "Why nice levels are a placebo and have been for a very long time, and no one seems to have noticed"[1], the Linux kernel in its default configuration on many Linux distributions autogroups tasks by session ID and "fairly" allocates CPU time among such autogroups. The nice levels of tasks within each autogroup are only relative to other tasks within the same autogroup. Effectively, this means that the traditional nice level is rendered moot for tools like start-stop-daemon and supervise-daemon, which start each daemon in its own session and thus in its own autogroup. Linux does provide a means to change the niceness of autogroups relative to each other, so let's have start-stop- daemon and supervise-daemon make use of this feature where available so that -N,--nicelevel/SSD_NICELEVEL will actually do what the user intends. On systems where autogroups are not supported or are disabled, this commit introduces no change in behavior. Note that the setsid() call in the child process of start-stop-daemon is moved to much earlier. This is necessary so that the new process will be assigned to a new autogroup before the autogroup nicelevel is set. To avoid inadvertently acquiring /dev/tty as the controlling terminal of the new session after setsid() has given up the controlling terminal inherited from the parent process, tty_fd is opened before the call to setsid(). [1] https://www.reddit.com/r/linux/comments/d7hx2c/why_nice_levels_are_a_placebo_and_have_been_for_a/ This fixes #542. |
||
---|---|---|
.github/workflows | ||
bash-completion | ||
ci | ||
conf.d | ||
etc | ||
init.d | ||
local.d | ||
man | ||
pkgconfig | ||
sh | ||
src | ||
support | ||
sysctl.d | ||
test | ||
tools | ||
zsh-completion | ||
.cirrus.yml | ||
.clangd | ||
.gitignore | ||
.travis.yml | ||
agetty-guide.md | ||
AUTHORS | ||
BUSYBOX.md | ||
FEATURE-REMOVAL-SCHEDULE.md | ||
HISTORY.md | ||
init-guide.md | ||
LICENSE | ||
meson_options.txt | ||
meson.build | ||
NEWNET.md | ||
NEWS.md | ||
README.md | ||
runit-guide.md | ||
s6-guide.md | ||
service-script-guide.md | ||
STYLE-GUIDE.md | ||
supervise-daemon-guide.md | ||
TODO | ||
user-guide.md |
OpenRC README
OpenRC is a dependency-based init system that works with the
system-provided init program, normally /sbin/init
.
building and installing
OpenRC uses the meson build system, so use the usual methods for this build system to build and install.
Notes
We don't support building a static OpenRC with PAM.
PKG_PREFIX
should be set to where packages install to by default.
LOCAL_PREFIX
should be set to where user maintained packages are.
Only set LOCAL_PREFIX
if different from PKG_PREFIX
.
ROOTPREFIX
should be set when the root path is different from '/'.
rc
and rc.shutdown
are the hooks from the BSD init into OpenRC.
devd.conf
is modified from FreeBSD to call /etc/rc.devd
which is a
generic hook into OpenRC.
inittab
is the same, but for SysVInit as used by most Linux distributions.
This can be found in the support folder.
Obviously, if you're installing this onto a system that does not use OpenRC by default then you may wish to backup the above listed files, remove them and then install so that the OS hooks into OpenRC.
Discussions
We are testing discussions, so feel free to open topics there.
Reporting Bugs
Please report bugs on our bug tracker.
If you can contribute code , please feel free to do so by opening pull requests.
IRC Channel
We have an official irc channel, #openrc on the libera network. Please connect your irc client to irc.libera.chat and join #openrc on that network.