numad/numad-opensuse-init.patch

203 lines
4.4 KiB
Diff

From 0f92675aadf2cd7a3db586f5b3ff507361e27b68 Mon Sep 17 00:00:00 2001
From: Mel Gorman <mgorman@suse.de>
Date: Thu, 23 May 2013 00:14:31 +0100
Subject: [PATCH] Make init script openSUSE friendly
Subject says it all, current init script is RHEL/Fedora based. Update
systemd service script to shutdown numad cleanly.
Signed-off-by: Mel Gorman <mgorman@suse.de>
diff --git a/numad.init b/numad.init
index 053bb07..de74a1b 100755
--- a/numad.init
+++ b/numad.init
@@ -1,109 +1,85 @@
#!/bin/bash
-# chkconfig: - 99 1
-# description: Control operation of numad which will monitor and
-# rebalance assignment of NUMA resources
+#
+# /etc/init.d/numad
### BEGIN INIT INFO
# Provides: numad
-# Required-Start: cgconfig
-# Required-Stop:
+# Required-Start: $remote_fs
+# Required-Stop: $remote_fs
# Should-Start:
# Should-Stop:
-# Default-Start:
-# Default-Stop:
-# Short-Description: numad control
-# Description:
+# Default-Start: 3 5
+# Default-Stop: 0 1 2 6
+# Short-Description: numad daemon recommends or binds workloads to NUMA nodes
+# Description: numad is a userspace daemon that monitors NUMA usage
+# and resource usage and attempts to configure workloads
+# using cpusets to use a subset of CPUs and memory nodes
+# to maximise the number local memory access for best
+# performance. Alternatively, it can be used to give
+# hints as to how workloads should be manually bound
+# to CPUs and memory nodes.
### END INIT INFO
-if [ $(id -u) -ne 0 ]; then
- echo "This script can be run by root only. Exiting."
- exit 4
-fi
+NUMAD_BIN=/usr/sbin/numad
+NUMAD_CONFIG=/etc/numad.conf
-# Source function library.
-. /etc/rc.d/init.d/functions
+. /etc/rc.status
+LOCKFILE=${PIDFILE}.lock
-exec="/usr/bin/numad"
-prog="numad"
-config="/etc/numad.conf"
+# Reset status of this service
+rc_reset
-[ -e /etc/sysconfig/$prog ] && . /etc/sysconfig/$prog
-
-lockfile=/var/lock/subsys/$prog
-base=${0##*/}
-
-start() {
- [ -x $exec ] || exit 5
- [ -f $config ] || exit 6
- echo -n $"Starting $prog: "
- . $config
- daemon "$exec -i $INTERVAL"
- retval=$?
- echo
- [ $retval -eq 0 ] && touch $lockfile
- return $retval
-}
-
-stop() {
- echo -n $"Stopping $prog: "
- killproc $prog
- retval=$?
- echo
- [ $retval -eq 0 ] && rm -f $lockfile
- return $retval
-}
+case "$1" in
+start)
+ test -x $NUMAD_BIN || exit 5
+ test -f $NUMAD_CONFIG || exit 6
+ echo -n "Starting numad "
+ . $NUMAD_CONFIG
+ $NUMAD_BIN -i $INTERVAL
+ echo $! > "$PIDFILE"
+ touch "$LOCKFILE"
+ rc_status -v
+ ;;
-restart() {
- stop
- start
-}
+stop)
+ echo -n "Shutting down numad "
+ $NUMAD_BIN -i 0
+ RETVAL=$?
+ rc_status
+ if [ $RETVAL -eq 0 ]; then
+ rm -f "$LOCKFILE" "$PIDFILE"
+ fi
+ ;;
-reload() {
- restart
-}
+try-restart)
+ $0 status > /dev/null && $0 restart
+ rc_status
+ ;;
-force_reload() {
- restart
-}
+restart)
+ $0 stop
+ $0 start
+ rc_status
+ ;;
-rh_status() {
- # run checks to determine if the service is running or use generic status
- status $prog
-}
+reload)
+ $0 restart
+ ;;
-rh_status_q() {
- rh_status >/dev/null 2>&1
-}
+force_reload)
+ echo -n "Reload numad "
+ $0 restart
+ ;;
+status)
+ echo -n "Checking for numad "
+ check_proc "$PIDFILE" "$LOCKFILE"
-case "$1" in
- start)
- rh_status_q && exit 0
- $1
- ;;
- stop)
- rh_status_q || exit 0
- $1
- ;;
- restart)
- $1
- ;;
- reload)
- rh_status_q || exit 7
- $1
- ;;
- force-reload)
- force_reload
- ;;
- status)
- rh_status
- ;;
- condrestart|try-restart)
- rh_status_q || exit 0
- restart
- ;;
- *)
- echo $"Usage: $0 {start|stop|status|restart|condrestart|try-restart|reload|force-reload}"
- exit 2
+ rc_status -v
+ ;;
+*)
+ echo "Usage: $0 {start|stop|status|try-restart|restart|force-reload|reload}"
+ exit 1
+ ;;
esac
-exit $?
+rc_exit
diff --git a/numad.service b/numad.service
index 3f096d8..faf51ef 100644
--- a/numad.service
+++ b/numad.service
@@ -6,6 +6,7 @@ After=syslog.target
Type=forking
EnvironmentFile=/etc/numad.conf
ExecStart=/usr/sbin/numad -i $INTERVAL
+ExecStop=/usr/sbin/numad -i 0
[Install]
WantedBy=multi-user.target