smp affinity для многоядерных систем
Надо распределить много прерываний от кучи сетевых карт по ядрам?
У меня вот подвернулся сервер с 16 потоками и 13 сетевыми картами, каждая из которых создаёт по несколько (8-9) очередей. Руками раскидывать очереди по ядрам – мартышкина работа.
Скрипт поможет!
#!/bin/bash# Посмотреть:# grep eth /proc/interrupts | sed 's/PCI-MSI-edge//g;s/ / /g;s/ / /g;s/ / /g;s/ / /g;s/ /\t/g'# Помониторить:# watch -n1 "grep eth /proc/interrupts | sed 's/://g;s/PCI-MSI-edge//g;s/ / /g;s/ / /g;s/ / /g;s/ / /g;s/ /\t/g' "CORE=1for INTERRUPT in $( grep eth /proc/interrupts | sed 's/://g' | awk '{print $1 }' ); do# echo core: $CORE interrupt: $INTERRUPTecho $CORE > /proc/irq/$INTERRUPT/smp_affinityCORE=`echo "$CORE * 2" | bc`if [ "$CORE" -gt "32768" ]; thenCORE=1fidone
Да, я знаю про существование irqbalance, который в автоматическом режиме умеет следить и распределятьпрерывания, но как показывает практика, делает он это крайне неоптимально и далеко не всегда становится лучше.
Комментарии |
опубликовано: Дек 2, 03:25


