#! /bin/sh # # irqbalance Start/Stop irq balancing daemon # # chkconfig: 2345 13 87 # description: The irqbalance daemon will distribute interrupts across \ # the cpus on a multiprocessor system with the purpose of \ # spreading the load. \ # processname: irqbalance # This is an interactive program, we need the current locale # Source function library. . /etc/init.d/functions # Check that we're a priviledged user [ `id -u` = 0 ] || exit 4 prog="irqbalance" # Check that networking is up. if [ "$NETWORKING" = "no" ] then exit 1 fi [ -f /usr/sbin/irqbalance ] || exit 5 # fetch configuration if it exists # ONESHOT=yes says to wait for a minute, then look at the interrupt # load and balance it once; after balancing exit and do not change # it again. # The default is to keep rebalancing once every 10 seconds. ONESHOT= [ -f /etc/sysconfig/irqbalance ] && . /etc/sysconfig/irqbalance case "$ONESHOT" in y*|Y*|on) ONESHOT=--oneshot ;; *) ONESHOT= ;; esac RETVAL=0 start() { export ONESHOT=$ONESHOT export IRQBALANCE_BANNED_INTERRUPTS=$IRQBALANCE_BANNED_INTERRUPTS export IRQBALANCE_BANNED_CPUS=$IRQBALANCE_BANNED_CPUS if [ -f /var/lock/irqbalance ]; then exit 0 fi echo -n $"Starting $prog: " if [ -n "$IRQ_AFFINITY_MASK" ]; then export IRQBALANCE_BANNED_CPUS=$IRQ_AFFINITY_MASK fi daemon irqbalance $ONESHOT RETVAL=$? echo if [ $RETVAL -eq 0 ]; then if [ -n "$ONESHOT" ]; then touch /var/lock/subsys/irqbalance else touch /var/lock/irqbalance fi fi return $RETVAL } stop() { echo -n $"Stopping $prog: " killproc irqbalance echo rm -f /var/lock/irqbalance return $RETVAL } restart() { stop start } # See how we were called. case "$1" in start) start ;; stop) stop ;; status) status irqbalance ;; restart|reload) restart ;; condrestart) [ -f /var/lock/subsys/irqbalance ] && restart || : ;; *) echo $"Usage: $0 {start|stop|status|restart|reload|condrestart}" exit 1 ;; esac exit $?