Problem s overruns/rx_fifo_errors

Adam Pribyl pribyl na lowlevel.cz
Čtvrtek Březen 16 12:57:32 CET 2017


Podobne problemy jsme tusim na i210 meli kvuli TSO
ethtool -k eth0

https://forum.ivorde.com/linux-tso-tcp-segmentation-offload-what-it-means-and-how-to-enable-disable-it-t19721.html



On Thu, 16 Mar 2017, Dalibor Toman wrote:

> DD,
>
> resim takovy divny problem s narustajicim poctem poztracenych prijimanych 
> packetu na nekterych sitovkach. Mozna uz nekdo neco podobneho resil a poradi.
>
> - mam nekolik routeru (vsechno bezi na Scientific Linuxu 6.x), ktere mezi 
> paternim spojem a nejakou siti za routerem prehazuji packety, delaji nejaky 
> filtering pomoci iptables a shapuji pomoci htb.
> - vetsina routeru ma e1000e driver a na nich problem nepozoruji.
> - problem se zrejme vyskytuje jen na routerech s igb driverem. Pozoruju ho ve 
> vetsim meritku na 2 routerech, oba maji toky 1gbps+ (cca 100000pkts) jsou 
> osazeny sitovkami s lepsim chipsetem, ktery rozdeluje packety do front per 
> cpu jadro, irq mam rozhazene po jadrech. Jeden router pouziva chipset Intel 
> i210 (on board sitovky), druhy Intel 82576 (externi 2 portove sitovky), na 
> obou routerech jsou vytvorene 2 bondovane interfacy, vzdy ze 2 sitovek. 
> Jednotlive sitovky v bondech prenaseji cca stejne mnozstvi packetu
> - projevuje se to narazovym zvysovanim counteru 'overruns' ve vypisu 
> 'ifconfig ethx'. Cislo sedi s obsahem 'rx_fifo_errors' z 'ethtool -S ethx' a 
> 'rx_fifo_errors' zase sedi jako soucet jednotlivych 'rx_queue_Y_drops'. 
> Narazove znamena, ze se delsi dobu (klidne dny) nedeje nic a pak behem jedne 
> vteriny se ztrati (resp zapocita) par set az par desitek tisic packetu 
> najednou.
> - mam k dispozici grafy nekterych souvisejicich veci (rx packety, 
> rx_fifo_errors, cpu zatez, /proc/net/softnet_stat) odecitane kazdou sekundu. 
> Z nich je zatim videt, jen ze rx_fifo_counter najednou poskoci a nic dalsiho 
> podezreleho se nedeje. Zadny zvyseny tok packetu (nejaky silny burst, DDOS) , 
> pretizene CPU,..
>
> Informace, ktere jsem k problemu sehnal rikaji, ze by melo dochazet k 
> zaplneni kruhoveho bufferu pro packety, kam sitovka DMAckem uklada packety. 
> Na zaklade toho jsem zkousel
> - zvetsit ring buffer na sitovkach. Z defaultnich 256 packetu na 4096 pro RX. 
> Problem pretrvava dokonce se zda, ze od te doby se narazove ztraci vetsi 
> mnozstvi packetu
> - zvetsil jsem 'net.core.netdev_budget' aby SoftIRQ handler mol vyzvednout 
> vice packetu najednou ale nepomohlo. Poodle grafu navic malokdy nastane 
> situace, ze by SoftIRQ obsluha musela ukoncit praci drive nez vyprazdni RX 
> frontu a zatim to nikdy nenastalo v case, kdy se ztrati packety
> - cekal jsem, ze kdyz se ucpe fronta, bude se sitovka/driver snazit 
> signalizovat pomoci flow control switchi, ze ma zpomalit. Graf poctu 
> prijatych rxPause ramcu ze switche ale ukazuje, ze nic nechodi a i 'ethtool 
> -S ethx | egrep flow' ukazuje nuly. Pravda je, ze si nejsem jisty jak poznat 
> na linuxu, ze sitovka opravdu pouziva flowcontrol (switch tvrdi, ze je 
> povoleno ale mam nastaveno natvrdo ON). Switche zachazi s flowcontrol spravne 
> (zvysuje prislusne citace atd) - overeny na jinych portech s jinymi 
> pripojenymi zarizenimi
> - problem nastava v libovolnou denni dobu, nezda se, ze by byl zavisly na 
> mnozstvi provozu (je celkem jedno zda je spicka trafficu nebo utlum)
>
> Jeste jsem nezkousel zakazat vyssi sleep stavy CPUckum...
>
> Ve hre je take to, ze ten counter ze sitovky si vymysli. Nemam zatim nijak 
> potvrzeno, ze se nejake packety opravdu ztrati.
>
>
> Diky
> D. Toman


Další informace o konferenci Linux