rc-scripts/trunk: rc.d/init.d/cpusets sysconfig/Makefile.am sysconfig/cpusets/Makefile.am sysconfig/...

baggins cvs at pld-linux.org
Wed Aug 10 22:10:51 CEST 2005


Author: baggins
Date: Wed Aug 10 22:10:47 2005
New Revision: 6290

Added:
   rc-scripts/trunk/rc.d/init.d/cpusets
   rc-scripts/trunk/sysconfig/cpusets/Makefile.am
   rc-scripts/trunk/sysconfig/cpusets/cpuset-test
Modified:
   rc-scripts/trunk/sysconfig/Makefile.am
   rc-scripts/trunk/sysconfig/system
Log:
- CPUSETS support (work in progress)


Added: rc-scripts/trunk/rc.d/init.d/cpusets
==============================================================================
--- (empty file)
+++ rc-scripts/trunk/rc.d/init.d/cpusets	Wed Aug 10 22:10:47 2005
@@ -0,0 +1,128 @@
+#!/bin/sh
+#
+# cpusets	Create/remove cpusets
+#
+# chkconfig:    12345 01 99
+# description:  Creates/Removes all cpu sets configured to \
+#		start at boot time.
+#
+# probe:	true
+
+# $Id: network 5884 2005-04-25 16:01:57Z adamg $
+
+PATH=/sbin:/usr/sbin:/bin:/usr/bin
+
+# NLS
+NLS_DOMAIN="rc-scripts"
+
+# Source function library.
+. /etc/rc.d/init.d/functions
+
+if is_yes ${CPUSETS} ; then
+    if ! grep -q "/dev/cpuset" /proc/mounts ; then
+	nls "ERROR: CPUSET support not enabled in kernel or /dev/cpuset not mounted" >&2
+    fi
+else
+    exit 0
+fi
+
+cpuset_create()
+{
+    . /etc/sysconfig/cpusets/cpuset-$i
+
+    mkdir /dev/cpuset/"$NAME"
+    [ -n "$CPUS" ] && >echo "$CPUS" >/dev/cpuset/"$NAME"/cpus
+    [ -n "$MEMS" ] && >echo "$MEMS" >/dev/cpuset/"$NAME"/mems
+    [ -n "$CPU_EXCLUSIVE" ] && echo "$CPU_EXCLUSIVE" >/dev/cpuset/"$NAME"/cpu_exclusive
+    [ -n "$MEM_EXCLUSIVE" ] && echo "$MEM_EXCLUSIVE" >/dev/cpuset/"$NAME"/mem_exclusive
+    [ -n "$NOTIFY_ON_RELEASE" ] && echo "$NOTIFY_ON_RELEASE" >/dev/cpuset/"$NAME"/notify_on_release
+    [ -n "$TASKS" ] && echo "$TASKS" >/dev/cpuset/"$NAME"/tasks
+}
+
+cpuset_remove()
+{
+    . /etc/sysconfig/cpusets/cpuset-$i
+
+    # This MUST be rmdir (not rm -rf)
+    rmdir /dev/cpuset/"$NAME"
+}
+
+cpuset_empty()
+{
+    if [ $(cat /dev/cpuset/$1/tasks | wc -c) -eq 0 ] ; then
+	# true returns zero
+	return 0
+    else
+	# false returns one
+	return 1
+    fi
+}
+
+# find all the interfaces besides loopback.
+# ignore aliases, alternative configurations, and editor backup files
+cpusets_boot=$((
+	. /etc/rc.d/init.d/functions; \
+	cd /etc/sysconfig/cpusets && ls -1 cpuset* | \
+	egrep 'cpuset-[a-z0-9\.:]+$' | \
+	for i in `cat`; do \
+	    ONBOOT=""; . /etc/sysconfig/cpusets/"$i"; is_yes "$ONBOOT" && echo "$i"; \
+	done | \
+	awk ' { gsub(/cpuset-/,NIL); print $0 } ') 2> /dev/null)
+
+# See how we were called.
+case "$1" in
+  start)
+  	rc_splash "bootcpusets start"
+
+	for i in $cpusets_boot ; do
+		nls "Creating cpuset %s" "$i"
+		cpuset_create $i
+		ok
+	done
+
+        touch /var/lock/subsys/cpusets
+        ;;
+  stop)
+	for i in $cpusets_boot ; do
+		nls "Removing cpuset %s" "$i"
+		busy
+		if cpuset_empty $i ; then
+		    cpuset_remove $i
+		    ok
+		else
+		    fail
+		fi
+	done
+
+        rm -f /var/lock/subsys/cpusets
+        ;;
+  status)
+	nls "Configured cpusets:"
+	echo "$cpusets_boot"
+	echo
+	nls "Currently empty cpusets:"
+	for i in `ls -1 /dev/cpuset` ; do
+	    if [ -d $i ] ; then
+		cpuset_empty $i && echo $i
+	    fi
+	done
+	nls "Currently active cpusets:"
+	for i in `ls -1 /dev/cpuset` ; do
+	    if [ -d $i ] ; then
+		cpuset_empty $i || echo $i
+	    fi
+	done
+	;;
+  restart)
+	$0 stop
+	$0 start
+	;;
+  *)
+        echo "Usage: $0 {start|stop|restart|status}"
+        exit 1
+esac
+
+exit 0
+
+# This must be last line !
+# vi:syntax=sh:tw=78:ts=8:sw=4

Modified: rc-scripts/trunk/sysconfig/Makefile.am
==============================================================================
--- rc-scripts/trunk/sysconfig/Makefile.am	(original)
+++ rc-scripts/trunk/sysconfig/Makefile.am	Wed Aug 10 22:10:47 2005
@@ -1,6 +1,6 @@
 @SET_MAKE@
 
-SUBDIRS = network-scripts interfaces hwprofiles
+SUBDIRS = network-scripts interfaces hwprofiles cpusets
 
 sysconfigdir = @sysconfigdir@
 

Added: rc-scripts/trunk/sysconfig/cpusets/Makefile.am
==============================================================================
--- (empty file)
+++ rc-scripts/trunk/sysconfig/cpusets/Makefile.am	Wed Aug 10 22:10:47 2005
@@ -0,0 +1,7 @@
+ at SET_MAKE@
+
+cpusetsdir = @sysconfigdir@/cpusets
+
+cpusets_DATA = cpuset-test
+
+EXTRA_DIST = $(cpusets_DATA)

Added: rc-scripts/trunk/sysconfig/cpusets/cpuset-test
==============================================================================
--- (empty file)
+++ rc-scripts/trunk/sysconfig/cpusets/cpuset-test	Wed Aug 10 22:10:47 2005
@@ -0,0 +1,25 @@
+# Name of the cpuset
+NAME=test
+
+# list of CPUs in that cpuset
+CPUS=1-2
+
+# list of Memory Nodes in that cpuset
+MEMS=1-2
+
+# If a cpuset is cpu or mem exclusive, no other cpuset, other than a direct
+# ancestor or descendent, may share any of the same CPUs or Memory Nodes.
+
+# is cpu placement exclusive?
+CPU_EXCLUSIVE=1
+
+# is memory placement exclusive?
+MEM_EXCLUSIVE=1
+
+# 
+#NOTIFY_ON_RELEASE=0
+
+# PIDs of tasks in this cpuset
+#TASKS=
+
+ONBOOT=no

Modified: rc-scripts/trunk/sysconfig/system
==============================================================================
--- rc-scripts/trunk/sysconfig/system	(original)
+++ rc-scripts/trunk/sysconfig/system	Wed Aug 10 22:10:47 2005
@@ -92,5 +92,8 @@
 # chroot properly)
 #SYSTEM_CHROOTS=
 
+# Enable cpusets support?
+CPUSETS=no
+
 # This must be last line !
 # vi:syntax=sh:tw=78:ts=8:sw=4



More information about the pld-cvs-commit mailing list