Если привязать прерывание от сетевой карты на один CPU, то пропускная способность Fast Ethernet
возрастает примерно на 15% (измерения проводились на 2.4 ядре, но справедливо и для ядер 2.6).Определяем прерывание сетевой карты:
cat /proc/interrupts
Привязываем к определенному CPU:
echo 2 > /proc/irq/NNN/smp_affinity
где NNN -- прерывание от сетевухи, 2 - битовая маска для выборка CPU.
если сетевухи две, для второй
echo 4 > /proc/irq/MMM/smp_affinityБитовые маски: 1 - CPU1, 2 - CPU2, 4 - CPU3 и т.д.
Подробнее см. Documentation/IRQ-affinity.txt
При включении демона irqbalance значения smp_affinity выбираются динамически.
URL: http://k001.livejournal.com/551559.html
Обсуждается: http://www.opennet.me/tips/info/1568.shtml
Я так понимаю демон irqbalance надо отключить, так?
Так.
а чем проверялось увеличение пропускной способности?
А мне кажется, что для 2.6 (по крайней мере 2.6.22, убунта 7.10) это лишнее. По крайней мереcat /proc/interrupts пишет, что все прерывания и так работают на первом проце.
Если ошибаюсь, прошу поправить...
А у меня косяк был, пока granch (sbni) на второй проц не перевел, роутер зависал наглухо. Без трафика всё нормально, как только трафик на sbni появлялся, через некоторое (разное) время роутер зависал. Нашёл причину собрав ядро под унипроц.
Устарело насмерть. тестил веб фронтенды с помощью ab - в обычном режиме 500К запросов - 26.7 секунды, при описанном способе, независимо от ядра - 32.5 и более
К сожалению, гранч (sbni) при переводе прерывания на второй проц, всёравно вешал систему наглухо, пришлось собрать ядро без поддержки мультипроца. Послеэтого всё работает нормально, без косяков.