freebsd-scripts/ixque.sh

38 lines
748 B
Bash
Raw Normal View History

2016-08-09 14:31:02 +04:30
#!/bin/sh
#
# Bind interface queues to different cpu cores to reduce
# context switching and cpu cache misses
#
# start from this core
cpu=0
interfaces="ix0 ix1"
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
basedir=`dirname $0`
for int in ${interfaces}; do
for t in `procstat -ak | grep "${int} que" | awk '{print $2}'`; do
if [ -n "$t" ]; then
if [ $release -gt 0 ]; then
echo "Unbinding ${int} kernel queue (thread #${t})"
cpuset -l all -t $t
else
echo "Binding ${int} kernel queue (thread #${t}) -> CPU${cpu}"
cpu=`expr $cpu + 1`
cpuset -l $cpu -t $t
fi
fi
done
done