
Саме для interrupts мережевої карти не можна виставити декілька процесорів для обробки. Чи це характеристика мережевої карти чи ядра - ХЗ Але трішки обійти цю ситуацію вдалось збільшенням кількості черг: "ethtool -L eno1p0 combined 24" створила 24 черги, які кожна сіла на свій interrupt на свій процесор. On 5/6/25 13:18, Volodymyr Litovka wrote:
On 5/6/25 12:46, Andrey Blochintsev wrote:
Ось є документація - https://docs.kernel.org/networking/scaling.html - в якій є розділ RSS IRQ Configuration, де кажуть шо або irqbalance, або manual adjust відповідно до https://docs.kernel.org/core-api/irq/irq-affinity.html
Ок, для тесту я пішов в manul adjust й зробив відповідні smp_affinity (застопав irqbalance, звісно) - тут апаратні черги NIC чіпляються до різних IRQ, відповідно маска встановлена так, щоб розкидати це IRQ по 8 корам:
53 :: 00000000,00000000,0000ff00 :: 8-15 54 :: 00000000,00000000,00ff0000 :: 16-23 55 :: 00000000,00000000,ff000000 :: 24-31 56 :: 00000000,000000ff,00000000 :: 32-39 57 :: 00000000,0000ff00,00000000 :: 40-47 58 :: 00000000,00ff0000,00000000 :: 48-55 59 :: 00000000,ff000000,00000000 :: 56-63 60 :: 000000ff,00000000,00000000 :: 64-71
але дивлюсь на значення лічильників в /proc/interrupts й бачу що пох - шо з irqbalance, шо з маска в smp_affinity - приростає по кожному IRQ тільки на одній корі. Трафіку в цілому до біса (200к+ pps) - гадаю розкидає є шо.
А что в /proc/irq/{5[3-9],60}/{effective_affinity,effective_affinity,effective_affinity_list} ?
Гм.... такі не спрацювало -
# for n in $(grep eno1 /proc/interrupts |awk '{print $1}' | tr -d ":"); do echo "$n :: $(cat /proc/irq/$n/smp_affinity) :: $(cat /proc/irq/$n/smp_affinity_list)"; done [ ... ] 93 :: 00000000,00000000,000000ff :: 0-7
# cat /proc/irq/93/{effective_affinity,effective_affinity,effective_affinity_list} 00000000,00000000,00000080 00000000,00000000,00000080 7
доки я буду курити ту доку, є ідеї - чому?
дякую
https://www.kernel.org/doc/html/v6.13/core-api/genericirq.html
|effective_affinity|
The effective IRQ affinity on SMP as some irq chips do not allow multi CPU destinations. A subset of *affinity*.
-- Volodymyr Litovka "Vision without Execution is Hallucination." -- Thomas Edison
-- Volodymyr Litovka "Vision without Execution is Hallucination." -- Thomas Edison