NIC interrupts / IRQs / Cores

Привіт, питаннячко маю
Ось є документація - 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) - гадаю
розкидає є шо.
# grep eno1 /proc/interrupts |awk '$1 ~ /^[0-9]+/ {printf("%s :: ",
$1); for(i=2;i

Привіт, Можливо трохи в сторону, я тільки що перевірив на домашньому NAS із Mellanox ConnectX-4 (25G) і він генерує десь 1.2 кора при 370k pps фулл 25G (самбою перевіряв по мережі). Може прийшов час поміняти мережеві якщо такі страждання ? Вони зараз dirt cheap, і взагалі 25G вже коммодіті, а не хайтек, як і 100G доречі. Тобто 300k pps - це "домашні" швидкості: input mce1 output packets errs idrops bytes packets errs bytes colls 31k 0 0 2.0M 244k 0 1.9G 0 45k 0 0 2.9M 368k 0 2.9G 0 49k 0 0 3.1M 371k 0 2.9G 0 51k 0 0 3.2M 373k 0 2.9G 0 50k 0 0 3.2M 369k 0 2.9G 0 52k 0 0 3.3M 369k 0 2.9G 0 52k 0 0 3.3M 375k 0 2.9G 0 433 0 0 28K 2.8k 0 22M 0 $ vmstat 1 procs memory page disks faults cpu r b w avm fre flt re pi po fr sr nda0 ada0 in sy cs us sy id ... 1 0 0 4.5T 4.5G 81 0 0 0 0 1.1k 0 0 43k 57k 132k 1 12 86 0 0 0 4.5T 4.5G 34 0 0 0 0 1.1k 0 0 83k 109k 254k 1 17 81 2 0 0 4.5T 4.5G 32 0 0 0 0 1.1k 0 0 80k 105k 245k 1 16 82 2 0 0 4.5T 4.5G 41 0 0 0 0 1.1k 0 0 89k 123k 279k 1 19 78 0 0 0 4.5T 4.5G 32 0 0 0 0 1.1k 0 0 85k 113k 261k 1 18 80 1 0 0 4.5T 4.5G 31 0 0 0 0 1.1k 0 0 91k 127k 287k 0 20 78 1 0 0 4.5T 4.3G 260 0 0 0 6 1.1k 0 0 86k 115k 265k 0 21 77 0 0 0 4.5T 4.3G 36 0 0 0 0 1.1k 0 0 20k 38k 64k 0 4 94 0 0 0 4.5T 4.3G 32 0 0 0 0 1.0k 0 0 104 1.4k 2.6k 0 0 99 Проц NAS'a i5-8600k On 06.05.2025 13:08, Volodymyr Litovka via UANOG 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) - гадаю розкидає є шо.
# grep eno1 /proc/interrupts |awk '$1 ~ /^[0-9]+/ {printf("%s :: ", $1); for(i=2;i
0) { printf("%d (%s) ",i-2, $i) } } printf("%s\n", $NF) }' 53: :: 8 (130512942) eno1np0-TxRx-0 54: :: 16 (131798602) eno1np0-TxRx-1 55: :: 30 (131497677) eno1np0-TxRx-2 56: :: 32 (132016063) eno1np0-TxRx-3 57: :: 40 (131285579) eno1np0-TxRx-4 58: :: 49 (130688802) eno1np0-TxRx-5 59: :: 57 (130551356) eno1np0-TxRx-6 60: :: 65 (131662981) eno1np0-TxRx-7 # grep eno1 /proc/interrupts |awk '$1 ~ /^[0-9]+/ {printf("%s :: ", $1); for(i=2;i
0) { printf("%d (%s) ",i-2, $i) } } printf("%s\n", $NF) }' 53: :: 8 (130583745) eno1np0-TxRx-0 54: :: 16 (131869546) eno1np0-TxRx-1 55: :: 30 (131569504) eno1np0-TxRx-2 56: :: 32 (132088328) eno1np0-TxRx-3 57: :: 40 (131355619) eno1np0-TxRx-4 58: :: 49 (130759795) eno1np0-TxRx-5 59: :: 57 (130622113) eno1np0-TxRx-6 60: :: 65 (131735316) eno1np0-TxRx-7 Власне, питання - це лічильники в /proc/interrupts брешуть чи я щось не долаштував?
Дяка. -- Volodymyr Litovka "Vision without Execution is Hallucination." -- Thomas Edison
_______________________________________________ UANOG mailing list --uanog@uanog.one To unsubscribe send an email touanog-leave@uanog.one

Гарна ідея, дякую Там зараз встановлені BCM57416 NetXtreme-E Dual-Media 10G RDMA Ethernet Controller - вірогідно варто подумати над заміною на Інтел або Меланокс On 5/6/25 14:10, Volodymyr Sharun wrote:
Привіт,
Можливо трохи в сторону, я тільки що перевірив на домашньому NAS із Mellanox ConnectX-4 (25G) і він генерує десь 1.2 кора при 370k pps фулл 25G (самбою перевіряв по мережі). Може прийшов час поміняти мережеві якщо такі страждання ? Вони зараз dirt cheap, і взагалі 25G вже коммодіті, а не хайтек, як і 100G доречі.
Тобто 300k pps - це "домашні" швидкості:
input mce1 output packets errs idrops bytes packets errs bytes colls 31k 0 0 2.0M 244k 0 1.9G 0 45k 0 0 2.9M 368k 0 2.9G 0 49k 0 0 3.1M 371k 0 2.9G 0 51k 0 0 3.2M 373k 0 2.9G 0 50k 0 0 3.2M 369k 0 2.9G 0 52k 0 0 3.3M 369k 0 2.9G 0 52k 0 0 3.3M 375k 0 2.9G 0 433 0 0 28K 2.8k 0 22M 0
$ vmstat 1 procs memory page disks faults cpu r b w avm fre flt re pi po fr sr nda0 ada0 in sy cs us sy id ... 1 0 0 4.5T 4.5G 81 0 0 0 0 1.1k 0 0 43k 57k 132k 1 12 86 0 0 0 4.5T 4.5G 34 0 0 0 0 1.1k 0 0 83k 109k 254k 1 17 81 2 0 0 4.5T 4.5G 32 0 0 0 0 1.1k 0 0 80k 105k 245k 1 16 82 2 0 0 4.5T 4.5G 41 0 0 0 0 1.1k 0 0 89k 123k 279k 1 19 78 0 0 0 4.5T 4.5G 32 0 0 0 0 1.1k 0 0 85k 113k 261k 1 18 80 1 0 0 4.5T 4.5G 31 0 0 0 0 1.1k 0 0 91k 127k 287k 0 20 78 1 0 0 4.5T 4.3G 260 0 0 0 6 1.1k 0 0 86k 115k 265k 0 21 77 0 0 0 4.5T 4.3G 36 0 0 0 0 1.1k 0 0 20k 38k 64k 0 4 94 0 0 0 4.5T 4.3G 32 0 0 0 0 1.0k 0 0 104 1.4k 2.6k 0 0 99
Проц NAS'a i5-8600k
On 06.05.2025 13:08, Volodymyr Litovka via UANOG 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) - гадаю розкидає є шо.
# grep eno1 /proc/interrupts |awk '$1 ~ /^[0-9]+/ {printf("%s :: ", $1); for(i=2;i
0) { printf("%d (%s) ",i-2, $i) } } printf("%s\n", $NF) }' 53: :: 8 (130512942) eno1np0-TxRx-0 54: :: 16 (131798602) eno1np0-TxRx-1 55: :: 30 (131497677) eno1np0-TxRx-2 56: :: 32 (132016063) eno1np0-TxRx-3 57: :: 40 (131285579) eno1np0-TxRx-4 58: :: 49 (130688802) eno1np0-TxRx-5 59: :: 57 (130551356) eno1np0-TxRx-6 60: :: 65 (131662981) eno1np0-TxRx-7 # grep eno1 /proc/interrupts |awk '$1 ~ /^[0-9]+/ {printf("%s :: ", $1); for(i=2;i
0) { printf("%d (%s) ",i-2, $i) } } printf("%s\n", $NF) }' 53: :: 8 (130583745) eno1np0-TxRx-0 54: :: 16 (131869546) eno1np0-TxRx-1 55: :: 30 (131569504) eno1np0-TxRx-2 56: :: 32 (132088328) eno1np0-TxRx-3 57: :: 40 (131355619) eno1np0-TxRx-4 58: :: 49 (130759795) eno1np0-TxRx-5 59: :: 57 (130622113) eno1np0-TxRx-6 60: :: 65 (131735316) eno1np0-TxRx-7 Власне, питання - це лічильники в /proc/interrupts брешуть чи я щось не долаштував?
Дяка. -- Volodymyr Litovka "Vision without Execution is Hallucination." -- Thomas Edison
_______________________________________________ UANOG mailing list --uanog@uanog.one To unsubscribe send an email touanog-leave@uanog.one
_______________________________________________ UANOG mailing list --uanog@uanog.one To unsubscribe send an email touanog-leave@uanog.one
-- Volodymyr Litovka "Vision without Execution is Hallucination." -- Thomas Edison
participants (2)
-
Volodymyr Litovka
-
Volodymyr Sharun