Avem un server Debian cu o legătură către VLAN-ul intern și unul către cel extern - ambele se conectează direct la același switch.
Pe ambele linkuri, vedem intermitent o cantitate neobișnuit de mare de evenimente de primire proastă, precum și o latență ridicată.
Tabelul interfeței kernelului
Iface MTU Met RX-OK RX-ERR RX-DRP RX-OVR TX-OK TX-ERR TX-DRP TX-OVR Flg
ethA 1500 0 884347583 0 49965509 49965509 1697514631 0 0 0 BMRU
ethB 1500 0 1611102819 0 77615811 77615811 819321274 0 0 0 BMRU
De asemenea, vedem procesele ksoftirqd pentru ambele interfețe la maximum 90% de cele mai multe ori, chiar și atunci când lucrurile ar trebui aparent să fie liniștite.
44 root 20 0 0 0 0 R 98.8 0.0 2557:46 ksoftirqd/3
51 root 20 0 0 0 0 R 85.6 0.0 2722:33 ksoftirqd/5
După cum am înțeles, asta înseamnă că serverul maximizează CPU-ul alocat pentru a procesa toate pachetele care vin pe această interfață. Dar chiar și atunci când vedem că ajung ~ 50 Mbps (și serverele identice gestionează > 800 Mbps), aceste procese pot ajunge la maxim și RX-DRP-urile se ridică vertiginos. irqbalance rulează, iar /proc/interrupts confirmă că aceste procesoare nu sunt ocupate cu nimic altceva.
Există cauze potențiale clare pentru acest lucru?
Alocarea mai multor procesoare (prin smp_affinity) pentru a gestiona întreruperile pentru acele interfețe ar putea ajuta? Nu reușesc să găsesc un singur exemplu de cineva care atribuie mai multe procesoare unei singure interfețe de rețea, așa că pare neconvențional în cel mai bun caz, demn de întrerupere a sistemului în cel mai rău caz.
Acest lucru a cauzat probleme în producție de ceva vreme, așa că aș accepta cu bucurie orice posibilă soluție.