misc: Add an example for policy script
Add a do-nothing policy script as an example, pre-implement some basic logic that could be used for applying affinity_hinting setting strictly for IRQs of certain drivers.
This commit is contained in:
parent
5a1c7b89f7
commit
ac27391efc
|
@ -0,0 +1,39 @@
|
|||
#!/bin/sh
|
||||
# Do not edit this file, create your own policy script and make it
|
||||
# executable for irqbalance process, you can use this file as an
|
||||
# boilerplate.
|
||||
|
||||
SYS_DEV_PATH=$1
|
||||
IRQ_NUM=$2
|
||||
|
||||
IRQ_PATH=/proc/irq/$IRQ_NUM
|
||||
UEVENT_FILE=$SYS_DEV_PATH/uevent
|
||||
|
||||
# Scripts below is an example for banning certain IRQs from
|
||||
# irqbalance and strictly apply their affinity_hint setting
|
||||
[[ ! -e $UEVENT_FILE ]] && exit 1
|
||||
|
||||
# IRQs from following drivers will be handled by this script
|
||||
# Driver names should be separated by space
|
||||
AFFINITY_WHITELIST=""
|
||||
|
||||
while read line; do
|
||||
if [[ $line == "DRIVER="* ]] && \
|
||||
[[ " $AFFINITY_WHITELIST " == *" ${line#DRIVER=} "* ]]; then
|
||||
affinity_hint=$(cat $IRQ_PATH/affinity_hint 2>/dev/null)
|
||||
# Check if affinity_hint value have at least one bit set
|
||||
if [[ ! "$affinity_hint" =~ ^[0,]*$ ]]; then
|
||||
# Ban it from irqbalance so it won't get balanced,
|
||||
# we'll follow its affinity_hint setting
|
||||
echo "ban=true"
|
||||
# If the affinity_hint value is valid, kernel would set
|
||||
# the same value for smp_affinity. But force to set that
|
||||
# again in case the IRQ was balanced before.
|
||||
echo "$affinity_hint" > $IRQ_PATH/smp_affinity
|
||||
# Stop further script processing
|
||||
exit 0
|
||||
fi
|
||||
fi
|
||||
done <<< "$(cat $UEVENT_FILE)"
|
||||
|
||||
exit 1
|
Loading…
Reference in New Issue