Puncte:1

De ce parametrii inelului NIC nu sunt pre-setați la capabilitățile lor hardware maxime?

drapel us

Verificați tamponul inel al NIC:

# ethtool -g eth0
Parametri inel pentru eth0:
Maxime prestabilite:
RX: 4096
RX Mini: 0
RX Jumbo: 0
TX: 4096
Setări hardware curente:
RX: 256
RX Mini: 0
RX Jumbo: 0
TX: 256

Se poate seta „RX/TX” până la limita afișată în „Maxime prestabilite” cum ar fi:

# ethtool -G eth0 rx 4096 rx 4096

Întrebarea este: implicit;, de ce sunt acestea setate atât de jos (în fiecare server pe care îl am, toate sunt la 256) în loc de o valoare mai mare sau capabilitățile lor Hardware max? Există dezavantaje (dacă da, care?) la creșterea acestor valori?

ewwhite avatar
drapel ng
Buna intrebare!!
Puncte:1
drapel cn

În primul rând, numerele pe care le setați nu sunt incluse octeți așa cum cred mulți oameni, sunt în descriptori (și dimensiunea descriptorului este dependentă de hardware). Deci, atunci când creșteți lungimea inelului, solicitați mai multă memorie pentru a fi alocată în nucleu pentru acești descriptori. În general, doriți ca această memorie a nucleului să fie în cache L1, astfel încât procesarea întreruperii să fie cât mai rapidă posibil. Creșterea dimensiunii inelului face acest lucru mai puțin probabil și, în unele cazuri, complet imposibil.

Următorul lucru este întreruperea coalescerii - în general, când creșteți dimensiunea tamponului inel, NIC-ul își va ajusta în mod corespunzător notele scăzute/înalte și va declanșa întreruperea atunci când sunt stocate mai multe date în tampon (adică mai rar). Timpul necesar nucleului pentru a procesa aceste cantități mai mari de date în timpul procesării întrerupte ar crește, de asemenea, ca rezultat.

Toate cele de mai sus au ca rezultat un simplu efect de bucket - cu o probabilitate mai mare de scădere a pachetului de inel scade și latența rețelei crește. Acest lucru poate fi perfect dacă transmiteți fișiere mari prin TCP și poate fi complet nedorit dacă sunteți o aplicație de pachete mici cu latență redusă (adică jocuri și altele).

Numerele implicite pe care le vedeți reprezintă un compromis rezonabil între cele două.

CrazyRabbit avatar
drapel us
Mulțumesc pentru această explicație. Folosesc o aplicație pentru a servi fișiere prin TCP și aveam erori fifo, așa că pe baza acestui https://serverfault.com/questions/650596/meaning-of-rx-queue-csum-err-and-rx-fifo- erori l-am crescut. Există vreo altă modalitate, în afară de încercare și eroare, de a crește aceasta la o „valoare bună” între valoarea implicită de 256 și valoarea maximă acceptată de 4096?
Peter Zhabin avatar
drapel cn
@user1773988, pentru o anumită sarcină de lucru pentru care se cunoaște dimensiunea pachetului, folosim `iperf` cu parametrii corespunzători pentru a emula încărcarea și pentru a vedea performanța și încărcarea procesorului de sistem (care este, de asemenea, afectată de această setare) pentru a găsi un punct favorabil. A trebuit odată să le setăm pe o grămadă de firewall-uri Linux într-un rol de BRAS al săracului într-un mediu ISP și acolo este singura metodă de încercare și eroare.
CrazyRabbit avatar
drapel us
Mulțumesc pentru intrare. Întrebare subsidiară; acestea pot fi reduse mai jos de 256? Să spunem un server Redis, pachete mici, NIC dedicat, având rx și tx setate la 128?
Peter Zhabin avatar
drapel cn
@user1773988 aceasta poate fi redusă până la 48 AFAIR, dar probabilitățile de scădere a pachetelor vor crește mai ales în cazul unei explozii neașteptate de pps. Redis este o aplicație TCP și drop-urile nu vor ajuta la nimic. Nu am experiență de primă mână cu chestii cu latență scăzută, doar din perspectiva ISP-ului, așa că aproape întotdeauna creșteam aceste valori, dar până la un anumit punct pe baza statisticilor de monitorizare 24 de ore.

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.