Support cpu usage management for Linux
This commit was modified by William Hubbs as follows: - The paths in the cgroup fs were put into variables to ease maintenance. - Documentation was added to rc.conf.Linux. - The services were added originally to openrc/svcname cgroups under the controller cgroups, but this left an "openrc" cgroup which was unused. Now they are added to individual cgroups with the name openrc_${RC_SVCNAME}.
This commit is contained in:
parent
cf7b904704
commit
4f19c2f512
@ -20,10 +20,21 @@
|
||||
# consolefont, numlock, etc ...)
|
||||
rc_tty_number=12
|
||||
|
||||
##############################################################################
|
||||
# CGROUPS RESOURCE MANAGEMENT
|
||||
|
||||
# If you have cgroups turned on in your kernel, this switch controls
|
||||
# whether or not a group for each controler is mounted under
|
||||
# /sys/fs/cgroup.
|
||||
# Support for process management by cgroups is planned in the future,
|
||||
# so if you turn this off, be aware that you may not be able to use that
|
||||
# feature.
|
||||
# None of the other options in this section work if this is set to "NO".
|
||||
#rc_controller_cgroups="YES"
|
||||
|
||||
# These options can be set globally in this file; however, if you do
|
||||
# this, the same setting will apply to all of your services.
|
||||
# If you want different settings for each service, place the settings in
|
||||
# /etc/conf.d/foo for service foo.
|
||||
|
||||
# This is the number of CPU shares a service is allowed to use. The
|
||||
# default value, set by the kernel, is 1024.
|
||||
# Also, this setting is not preserved if you suspend your computer.
|
||||
#rc_cgroup_cpu_shares=1024
|
||||
|
@ -193,11 +193,24 @@ unset _conf_d
|
||||
# Load any system overrides
|
||||
sourcex -e "@SYSCONFDIR@/rc.conf"
|
||||
|
||||
if [ "$RC_UNAME" = "Linux" -a "$1" = "start" ]; then
|
||||
if [ -d /sys/fs/cgroup/openrc ]; then
|
||||
mkdir -p /sys/fs/cgroup/openrc/${RC_SVCNAME}
|
||||
echo $$ > /sys/fs/cgroup/openrc/${RC_SVCNAME}/tasks
|
||||
if [ "$RC_UNAME" = "Linux" -a "$RC_SYS" != "PREFIX" -a "$1" = "start" ]; then
|
||||
openrc_cgroup=/sys/fs/cgroup/openrc
|
||||
if [ -d ${openrc_cgroup} ]; then
|
||||
cgroup=${openrc_cgroup}/${RC_SVCNAME}
|
||||
mkdir -p ${cgroup}
|
||||
[ -f "${cgroup}"/tasks ] && echo 0 > "${cgroup}"/tasks
|
||||
fi
|
||||
|
||||
shares="${rc_cgroup_cpu_shares:-$RC_CGROUP_CPU_SHARES}"
|
||||
if [ -n "${shares}" -a -d /sys/fs/cgroup/cpu ]; then
|
||||
cgroup=/sys/fs/cgroup/cpu/openrc_${RC_SVCNAME}
|
||||
if [ ! -d ${cgroup} ]; then
|
||||
mkdir -p ${cgroup}
|
||||
fi
|
||||
[ -f "${cgroup}"/cpu.shares ] && echo ${shares} > "${cgroup}"/cpu.shares
|
||||
[ -f "${cgroup}"/tasks ] && echo 0 >> "${cgroup}"/tasks
|
||||
fi
|
||||
|
||||
#todo: add processes to cgroups based on settings in conf.d
|
||||
fi
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user