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:
Alexander Vershilov
2012-10-26 09:05:41 +04:00
committed by William Hubbs
parent cf7b904704
commit 4f19c2f512
2 changed files with 31 additions and 7 deletions

View File

@@ -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