3 # cpusets Create/remove cpusets
5 # chkconfig: 12345 01 99
6 # description: Creates/Removes all cpu sets configured to \
13 . /etc/sysconfig/system
15 if [ "${CPUSETS:-no}" = "no" ]; then
23 # Source function library.
24 . /etc/rc.d/init.d/functions
28 if grep -q "/dev/cgroup" /proc/mounts ; then
30 elif grep -q "/dev/cpuset" /proc/mounts ; then
34 if [ -n "${CGDIR}" ]; then
35 if [ -e ${CGDIR}/cpuset.cpus ]; then
37 elif [ ! -e ${CGDIR}/cpus ]; then
38 nls "ERROR: CGROUP/CPUSET mounted in a way I can't recognize" >&2
44 [ -n "${CGDIR}" ] && return
46 if grep -q cgroup /proc/filesystems 2>/dev/null ; then
47 mkdir -p /dev/cpuset 2>/dev/null
48 mount -t cgroup none /dev/cpuset -ocpuset
50 elif grep -q cpuset /proc/filesystems 2>/dev/null ; then
51 mkdir -p /dev/cpuset 2>/dev/null
52 mount -t cpuset none /dev/cpuset
55 nls "ERROR: CGROUP/CPUSET support not enabled in kernel" >&2
62 local CPUS MEMS CPU_EXCLUSIVE MEM_EXCLUSIVE NOTIFY_ON_RELEASE TASKS
64 . /etc/sysconfig/cpusets/cpuset-$i
66 if mkdir "${CGDIR}/${NAME}" >/dev/null 2>&1 ; then
67 [ -n "$CPUS" ] && echo "$CPUS" >"${CGDIR}/${NAME}/${CSUBSYS}cpus"
68 [ -n "$MEMS" ] && echo "$MEMS" >"${CGDIR}/${NAME}/${CSUBSYS}mems"
69 [ -n "$CPU_EXCLUSIVE" ] && echo "$CPU_EXCLUSIVE" >"${CGDIR}/${NAME}/${CSUBSYS}cpu_exclusive"
70 [ -n "$MEM_EXCLUSIVE" ] && echo "$MEM_EXCLUSIVE" >"${CGDIR}/${NAME}/${CSUBSYS}mem_exclusive"
71 [ -n "$VIRTUALIZE" ] && echo "$VIRTUALIZE" >"${CGDIR}/${NAME}/${CSUBSYS}virtualize"
72 [ -n "$NOTIFY_ON_RELEASE" ] && echo "$NOTIFY_ON_RELEASE" >"${CGDIR}/${NAME}/${CSUBSYS}notify_on_release"
73 [ -n "$TASKS" ] && echo "$TASKS" >"${CGDIR}/${NAME}/tasks"
80 local CPUS MEMS CPU_EXCLUSIVE MEM_EXCLUSIVE NOTIFY_ON_RELEASE TASKS
82 . /etc/sysconfig/cpusets/cpuset-$i
84 # This MUST be rmdir (not rm -rf)
85 if rmdir "${CGDIR}/${NAME}" >/dev/null 2>&1 ; then
93 if [ $(cat "${CGDIR}/$1/tasks" 2>/dev/null | wc -c) -eq 0 ] ; then
103 rc_splash "bootcpusets start"
105 for i in $cpusets_boot; do
106 show "$(nls -n "Creating cpuset %s" "$i")"
107 if cpuset_create $i ; then
114 touch /var/lock/subsys/cpusets
118 for i in $cpusets_boot; do
119 show "$(nls -n "Removing cpuset %s" "$i")"
121 if cpuset_empty $i; then
122 if cpuset_remove $i; then
132 rm -f /var/lock/subsys/cpusets >/dev/null 2>&1
135 # Get list of config files
136 # ignores editor backup files and rpm blackups
139 for a in /etc/sysconfig/cpusets/$match; do
141 *rpmorig|*rpmnew|*rpmsave|*~|*.orig)
151 cpuset_files="$(cpuset_configs 'cpuset-*')"
153 for i in $cpuset_files; do
154 ONBOOT=""; . "$i" 2>/dev/null
155 is_yes "$ONBOOT" && echo "${i##*/cpuset-}"
159 # See how we were called.
169 nls "Configured cpusets:"
172 nls "Currently empty cpusets:"
173 for i in $(ls /dev/cpuset 2>/dev/null); do
174 if [ -d ${CGDIR}/$i ]; then
175 cpuset_empty $i && echo $i
179 nls "Currently active cpusets:"
180 for i in $(ls /dev/cpuset 2>/dev/null); do
181 if [ -d ${CGDIR}/$i ]; then
182 cpuset_empty $i || echo $i
193 msg_usage "$0 {start|stop|restart|status}"