Add CGroup support

X-Gentoo-Bug: 390297
X-Gentoo-Bug: http://bugs.gentoo.org/show_bug.cgi?id=390297
This commit is contained in:
Patrick Lauer 2011-11-12 22:19:55 +01:00 committed by William Hubbs
parent 66e99b6d63
commit 20df56f0b2
2 changed files with 29 additions and 0 deletions

View File

@ -1,3 +1,10 @@
# Set the control group for this service.
# If you do not set this, the default setting is the value of
# RC_SVCNAME.
# This setting is ignored if you do not have CONFIG_CGROUPS active in
# your kernel.
# RC_CGROUP="foo"
############################################################################## ##############################################################################
# LINUX SPECIFIC OPTIONS # LINUX SPECIFIC OPTIONS

View File

@ -189,6 +189,16 @@ fi
# Load any system overrides # Load any system overrides
sourcex -e "@SYSCONFDIR@/rc.conf" sourcex -e "@SYSCONFDIR@/rc.conf"
# Attach to CGroup - dir existing is enough for us
if [ -d /sys/fs/cgroup/ ]; then
# use RC_SVCNAME unless overridden in conf.d
SVC_CGROUP=${RC_CGROUP:-$RC_SVCNAME}
mkdir -p /sys/fs/cgroup/${SVC_CGROUP}
# now attach self to cgroup - any children of this process will inherit this
echo $$ > /sys/fs/cgroup/${SVC_CGROUP}/tasks
# TODO: set res limits from conf.d
fi
# Apply any ulimit defined # Apply any ulimit defined
[ -n "${rc_ulimit:-$RC_ULIMIT}" ] && ulimit ${rc_ulimit:-$RC_ULIMIT} [ -n "${rc_ulimit:-$RC_ULIMIT}" ] && ulimit ${rc_ulimit:-$RC_ULIMIT}
@ -291,3 +301,15 @@ while [ -n "$1" ]; do
eerror "$RC_SVCNAME: unknown function \`$1'" eerror "$RC_SVCNAME: unknown function \`$1'"
exit 1 exit 1
done done
# CGroup cleanup
if [ -d /sys/fs/cgroup/ ]; then
# use RC_SVCNAME unless overridden in conf.d
SVC_CGROUP=${RC_CGROUP:-$RC_SVCNAME}
# reattach to root cgroup
echo $$ > /sys/fs/cgroup/tasks
# remove cgroup if empty, will fail if any task attached
rmdir /sys/fs/cgroup/${SVC_CGROUP} 2>/dev/null
fi
exit 0