35 lines
1003 B
Bash
Executable File
35 lines
1003 B
Bash
Executable File
#!/bin/sh
|
|
#
|
|
# WARNING: Binding IRQs to a core will put system at risk of instability
|
|
# even after unbinding, and will require a reboot
|
|
#
|
|
basedir=`dirname $0`
|
|
binding="ix0:0:16 ix0:1:17 ix0:2:18 ix0:3:19 ix0:4:20 ix0:5:21 ix0:6:22 ix0:7:23 ix1:0:24 ix1:1:25 ix1:2:26 ix1:3:27 ix1:4:28 ix1:5:29 ix1:6:30 ix1:7:31"
|
|
release=0
|
|
|
|
# if "-r" is given as parameter, threads affinity will be unbound
|
|
|
|
if [ $# -gt 0 ]; then
|
|
if [ $1 = "-r" ]; then
|
|
release=1
|
|
fi
|
|
fi
|
|
|
|
|
|
for l in ${binding}; do
|
|
if [ -n "$l" ]; then
|
|
iface=`echo $l | cut -f 1 -d ":"`
|
|
queue=`echo $l | cut -f 2 -d ":"`
|
|
cpu=`echo $l | cut -f 3 -d ":"`
|
|
irq=`vmstat -i | grep "${iface}:que ${queue}" | cut -f 1 -d ":" | sed "s/irq//g"`
|
|
if [ $release -gt 0 ]; then
|
|
echo "Binding ${iface} queue #${queue} (irq ${irq}) -> CPU${cpu}"
|
|
cpuset -l $cpu -x $irq
|
|
else
|
|
echo "Unbinding ${iface} queue #${queue} (irq ${irq}) -> CPU${cpu}"
|
|
cpuset -l all -x $irq
|
|
fi
|
|
fi
|
|
done
|
|
|