Zatizeni CPU pri velkem poctu paketu ixgbe

Dan Lukes dan at obluda.cz
Thu May 3 10:16:42 CEST 2018


Radek Krejča wrote on 2. 5. 2018 17:37:
> bojuji s nizkou propustnosti 10G sitovek pri vetsim poctu paketu. Mam tam ixgbe driver pro sitovky, dmesg ukazuje
> 
> ix0: <Intel(R) PRO/10GbE PCI-Express Network Driver, Version - 3.1.13-k> mem 0xfbc00000-0xfbdfffff,0xfbe04000-0xfbe07fff irq 11 at device 0.0 on pci5

> Neni problem protahnout skrze router a nat s pf 7 giga v ramci par spojeni a paketu na stole pres iperf, ale za normalniho trafficu jde cpu do haje pomerne brzy.

Kdyz on iperf vytvari veskrze pravidelne toky. To pak vsechno funguje 
tak nejak lepe - pakety jsou takrka vsechny stejen velke, interrupt 
coalescing tika jako chronometr, programovy kod je daleko 
pravdepodobneji v cache - a tak vubec.

Realny traffic tak hezky nebyva.


> Zkousel jsem zapnout polling, ale nezda se, ze by to melo nejaky efekt a hlavne je rozpor v dokumentaci, v manu pro polling není ixgbe vypsana, u ixgbe odkaz na polling je

Ja ho tam nevidim.

Kazdopadne, ixgbe ovladac pooling neumi. Neni to ale asi az takova 
ztrata - polling prinasi nejvetsi efekt u "tupejch" desktopovejch karet, 
ktere generuji HW preruseni s kazdym paketem. ixgbe karty maji MSI-X a 
hlavne interrupt coalescing, tam by efekt pollingu nebyl zdaleka tak 
videt. Pokud vubec.

> Cim dalsim bych mohl jeste CPU odlehcit? top -SH mi ted ukazuje toto (nicmene ted tam netece ani pul giga trafficu a relativne malo paketu):
> 
>     12 root          -92    -     0K   432K WAIT    0 1198.5  30.20% intr{irq264: ix0:q0}
>     12 root          -92    -     0K   432K WAIT    1 1186.4  25.87% intr{irq265: ix0:q1}
>     12 root          -92    -     0K   432K WAIT    3 1165.2  22.05% intr{irq267: ix0:q3}
>     12 root          -92    -     0K   432K WAIT    2 1169.9  16.75% intr{irq266: ix0:q2}
>     12 root          -92    -     0K   432K WAIT    1 720.8H  13.06% intr{irq270: ix1:q1}
>     12 root          -92    -     0K   432K WAIT    2 683.9H  11.01% intr{irq271: ix1:q2}
>     12 root          -92    -     0K   432K WAIT    3 676.3H  10.53% intr{irq272: ix1:q3}
>     12 root          -92    -     0K   432K WAIT    0 699.0H   8.60% intr{irq269: ix1:q0}


Pri danem poctu paketu (a ten patrne ovlivnit nemuzes) je jednou z 
moznosti dalsi zvyseni poctu paketu "na jedno preruseni". Odvracenou 
stranou metody je zvyseni prumerne latence, ale to by nemuselo az tak 
vadit. Ted nemam cas se podivat kde a jak se prametry interrupt 
coalescingu nastavuji, ale obvykle to byva nejake sysctl.

A pak, uz si s odsupem doby nepamatuju, jake vsechny veci se s paketem 
podnikaji jeste v ramci obsluhy preruseni - pokud by to bylo neco, co 
lze ozelet, tak i to muze zatizeni snizit.

Jinak ale, se dvema 10Gb kartami se stejne nejspis dostavas na hranici 
propustnosti PCI-X smernice. A k tomu NAT (predpokladam, ze in-kernel, 
nikoliv aplikacni NATD), firewall ...

Podle me tezce narazis na moznosti jak hardware tak FreeBSD, ktere s nim 
zkousi kouzlit. Nakonec ti nezbude nez udelat to co my - priznat, ze na 
tohle uz standardni PC ani FreeBSD neni vhodny nastroj a poridit 
profesionalni box k tomuhle designovany.


Dan


More information about the Users-l mailing list