本文共 2258 字,大约阅读时间需要 7 分钟。
# setting up irq affinity according to /proc/interrupts# 2008-11-25 Robert Olsson# 2009-02-19 updated by Jesse Brandeburg## > Dave Miller:# (To get consistent naming in /proc/interrups)# I would suggest that people use something like:# char buf[IFNAMSIZ+6];## sprintf(buf, "%s-%s-%d",# netdev->name,# (RX_INTERRUPT ? "rx" : "tx"),# queue->index);## Assuming a device with two RX and TX queues.# This script will assign: ## eth0-rx-0 CPU0# eth0-rx-1 CPU1# eth0-tx-0 CPU0# eth0-tx-1 CPU1#set_affinity(){ if [ $VEC -ge 32 ] then MASK_FILL="" MASK_ZERO="00000000" let "IDX = $VEC / 32" for ((i=1; i<=$IDX;i++)) do MASK_FILL="${MASK_FILL},${MASK_ZERO}" done let "VEC -= 32 * $IDX" MASK_TMP=$((1<<$VEC)) MASK=`printf "%X%s" $MASK_TMP $MASK_FILL` else MASK_TMP=$((1<<$VEC)) MASK=`printf "%X" $MASK_TMP` fi printf "%s mask=%s for /proc/irq/%d/smp_affinity楼n" $DEV $MASK $IRQ printf "%s" $MASK > /proc/irq/$IRQ/smp_affinity}if [ "$1" = "" ] ; then echo "Description:" echo " This script attempts to bind each queue of a multi-queue NIC" echo " to the same numbered core, ie tx0|rx0 --> cpu0, tx1|rx1 --> cpu1" echo "usage:" echo " $0 eth0 [eth1 eth2 eth3]"fi# check for irqbalance runningIRQBALANCE_ON=`ps ax | grep -v grep | grep -q irqbalance; echo $?`if [ "$IRQBALANCE_ON" == "0" ] ; then echo " WARNING: irqbalance is running and will" echo " likely override this script's affinitization." echo " Please stop the irqbalance service and/or execute" echo " 'killall irqbalance'"fi## Set up the desired devices.#for DEV in $*do for DIR in rx tx TxRx do MAX=`grep $DEV-$DIR /proc/interrupts | wc -l` if [ "$MAX" == "0" ] ; then MAX=`egrep -i "$DEV:.*$DIR" /proc/interrupts | wc -l` fi if [ "$MAX" == "0" ] ; then echo no $DIR vectors found on $DEV continue fi for VEC in `seq 0 1 $MAX` do IRQ=`cat /proc/interrupts | grep -i $DEV-$DIR-$VEC"$" | cut -d: -f1 | sed "s/ //g"` if [ -n "$IRQ" ]; then set_affinity else IRQ=`cat /proc/interrupts | egrep -i $DEV:v$VEC-$DIR"$" | cut -d: -f1 | sed "s/ //g"` if [ -n "$IRQ" ]; then set_affinity fi fi done donedone
转载地址:http://vdqci.baihongyu.com/