Intel LogoIntel® Ethernet 700 serija
Vodič za podešavanje performansi Linuxa
NEX Grupa za umrežavanje u oblaku (NCNG)
Rev. 1.2
decembar 2024

Istorija revizija

Revizija Datum Komentari
1.2 decembar 2024 · Dodane dodatne smjernice za upravljanje napajanjem.
· Dodan Intel* Turbo Boost.
· Dodan zaostatak mrežnog uređaja.
· Dodane konfiguracije i podešavanje specifične za platformu.
· Dodani su skalabilni procesori Intel* %eon* 4. generacije.
· Dodan AMD EPYC.
· Ažurirane mogućnosti provjere hardvera sistema.
· Ažuriran iPerf2.
· Ažuriran iPerf3.
· Ažurirani Tx/Rx redovi.
· Ažurirano moderiranje prekida.
· Ažurirana veličina prstena.
· Ažurirano podešavanje platforme (i40e nije specifično).
· Ažurirane postavke BIOS-a.
· Ažurirana C-state kontrola.
· Ažurirano skaliranje frekvencije CPU-a.
· Ažurirane postavke aplikacije.
· Ažurirane postavke operativnog sistema/kernela.
· Ažurirano IP prosljeđivanje.
· Ažurirano nisko kašnjenje.
avgust 2023 Promjene u ovom dokumentu uključuju:
· Dodane povezane reference.
· Dodato osiguranje ispravnog učitavanja DDP paketa.
· Dodan je iPerf2.
· Dodan je iPerf3.
· Dodan netperf.
· Ažurirani IRQ afinitet.
· Dodani Tx/Rx redovi.
· Ažurirana veličina prstena.
· Dodani Jumbo okviri.
· Dodano spajanje adaptera.
· Dodan je alat Intel svr-info.
1.0 mart 2016 Početno izdanje (Intel Public).

Uvod

Ovaj vodič je namijenjen pružanju smjernica za podešavanje okruženja za optimalne mrežne performanse korištenjem Intel ® Ethernet 700 serije mrežnih kartica u Linux okruženjima. Fokusira se na hardver, upravljačke programe i uvjete te postavke operativnog sistema koji mogu poboljšati mrežne performanse. Treba napomenuti da na mrežne performanse može utjecati niz vanjskih utjecaja, a u ovom vodiču su obuhvaćeni samo najčešći i najdramatičniji od njih.
1.1 Povezane reference

Inicijalna kontrolna lista

2.1 Ažuriranje verzija drajvera/firmvera
Provjerite verzije drajvera/firmvera koristeći ethtool -i ethx.
Ažurirajte sljedeće po potrebi:

2.2 Pročitajte README datoteku
Provjerite poznate probleme i preuzmite najnovije upute za konfiguraciju iz README datoteke file uključen u izvorni paket i40e.
2.3 Provjerite da li je vaš PCI Express (PCIe) slot x8
Neki PCIe x8 slotovi su zapravo konfigurisani kao x4 slotovi. Ovi slotovi nemaju dovoljan propusni opseg za punu linijsku brzinu sa uređajima sa dva i četiri porta. Osim toga, ako stavite PCIe v3.0-kompatibilan adapter u PCIe v2.x slot, ne možete dobiti pun propusni opseg. Drajverski program uređaja detektuje ovu situaciju i zapisuje sljedeću poruku u sistemski dnevnik:
PCI-Express propusni opseg dostupan za ovu karticu nije dovoljan za optimalne performanse. Za optimalne performanse potreban je x8 PCI-Express slot.
Ako se pojavi ova greška, premjestite adapter na pravi PCIe v3.0 x8 slot da biste riješili problem.
2.4 Provjerite mogućnosti hardvera sistema
Za Ethernet brzine od 10 Gbps, 25 Gbps i 40 Gbps, postoje neki minimalni zahtjevi za CPU i sistem. Općenito, moderni procesor serverske klase i optimalna konfiguracija memorije za vašu platformu trebali bi biti dovoljni, ali potrebe variraju ovisno o vašem opterećenju. Svi memorijski kanali trebaju biti popunjeni, a način rada za performanse memorije treba biti omogućen u BIOS-u. Provjerite da li vaš CPU i konfiguracija memorije mogu podržati nivo mrežnih performansi koji vam je potreban za vaše opterećenje.
NAPOMENA
XL710 je 40 GbE kontroler. Adapter od 2 x 40 GbE koji koristi ovaj kontroler nije namijenjen za 2 x 40 GbE, već za 1 x 40 GbE s aktivnim rezervnim portom. Prilikom pokušaja korištenja linijskog prometa koji uključuje oba porta, interni prekidač je zasićen, a kombinirani propusni opseg između dva porta je ograničen na ukupno XNUMX Gbps.
2.4.1 Parametri pokretanja kernela
Ako je Intel® Virtualization Technology for Directed I/O (Intel® VT-d) omogućena u BIOS-u, Intel preporučuje da IOMMU bude u pass-through modu za optimalne performanse host mreže. Ovo eliminiše DMA overhead na host saobraćaju, a istovremeno omogućava virtuelnim mašinama (VM) da i dalje imaju prednosti Intel® VT-d. To se postiže dodavanjem sljedeće linije parametrima pokretanja kernela: fommu-pt.
2.5 Provjerite da li se DDP paket ispravno učitava
Osnovni drajveri za 140ea i 140eb nemaju direktnu podršku za Dinamičku personalizaciju uređaja (DDP). Da biste koristili DDP sa uređajima serije 700, potreban je DDP pro.file može se primijeniti pomoću aplikacije testpmd.
Za detalje o DDP pro-ufilei kako se prijaviti za DDP profesionalcafile Za testpmd na uređajima serije 700, pogledajte Vodič za tehnologiju dinamičke personalizacije uređaja (DDP) za Intel® Ethernet 700 seriju.
Da biste provjerili da li je DDP profesionalacfile uspješno je učitano:
testpmd> ddp dohvati listu 0 Profile broj je: 1
NAPOMENA
Ako profesionalacfile Ako je broj 0, nijedan DDP paket nije učitan. U slučaju greške pri učitavanju DDP paketa, uređaj se podrazumijevano vraća u siguran način rada i mnoge funkcije performansi nisu dostupne. Ako postoje greške povezane s učitavanjem DDP paketa, to će uzrokovati probleme s performansama. Za korake za rješavanje problema, pogledajte Vodič za tehnologiju dinamičke personalizacije uređaja (DDP) Inte/* Ethernet 700 serije.

Osnovna mjerenja performansi i metodologija podešavanja

3.1 Mjerila performansi mreže
Prije početka podešavanja, važno je imati dobro osnovno mjerenje performansi vaše mreže. Obično, pored početnog mjerenja performansi vaše specifične aplikacije/radnog opterećenja, dobra je ideja koristiti i standardni benchmark performansi mreže kako biste provjerili da li je vaš mrežni uređaj u dobrom stanju.
Za optimizaciju jednog sistema, netperf ili iperf i NetPIPE su solidni besplatni alati otvorenog koda koji vam omogućavaju da opterećujete vezu i dijagnosticirate probleme s performansama.
Netperf je jak i za testiranje propusnosti i za testiranje latencije. NetPIPE je alat specifičan za latenciju, ali se može kompajlirati za bilo koje okruženje.
NAPOMENA
TCP_RR test u netperfu vraća latenciju u vrijednosti transakcija/sek. Ovo je broj kružnog putovanja. Jednosmjerna latencija se može izračunati pomoću sljedeće jednačine:
Latencija (usec) = (1⁄2) / [Transakcije/sec] * 1,000,000
3.1.1 iPerf2
Intel preporučuje iperf2 umjesto iperf3 za većinu benchmarking situacija zbog jednostavnosti korištenja i podrške za više niti u jednoj instanci aplikacije. Intel preporučuje pokretanje s opcijom -P s 2-4 niti za 25G veze i oko 4-6 niti za 40G veze.

  • Za pokretanje jednosmjernog prometa od klijenta do servera: Server command example: iperf2 -s
    Klijentova naredba example: iperf2 -c -P
  • Za pokretanje dvosmjernog prometa od klijenta do servera (i obrnuto): Serverska naredba example: iperf2 –s –p
    Klijentova naredba example:
    iperf2 -c -p -P --puni dupleks ILI
    iperf2 -c -p -P –d

NAPOMENA
I opcije –full-duplex i -d u iperf2 omogućavaju korisniku dvosmjerno testiranje. Međutim, opcija –full-duplex se posebno fokusira na testiranje punog dupleksa.
NAPOMENA
Prilikom testiranja iperf2 na više serverskih portova, zastavica -d se može dodati serverskoj naredbi kako bi se sve serverske sesije pokretale u pozadini iz istog prozora terminala. Zastavica -d se također može koristiti kada je serverska naredba ugrađena unutar for-petlje u skripti.
NAPOMENA
Prilikom pokretanja testa mrežne propusnosti s jednim streamom/niti (npr.amp(npr. P1), AMD procesori možda neće pružiti očekivani protok, posebno mrežne kartice većeg protoka (ako je brzina >= 25G propusni opseg). Kao rezultat toga, potrebno je povezivanje aplikacija s određenim jezgrama kako bi se postigao veći protok. Pogledajte Postavke aplikacije na stranici 22.
3.1.2 iPerf3
Ako se koristi iperf3, potrebno je više instanci aplikacije da bi se iskoristila prednost.tage višenitnih, RSS i hardverskih redova čekanja. Intel preporučuje pokretanje s 2-4 aplikacijske sesije za 25G veze i oko 4-6 sesija za 40G veze. Svaka sesija treba odrediti jedinstvenu vrijednost TCP porta pomoću opcije -p.

  • Za pokretanje jednosmjernog prometa od klijenta do servera:
    Serverska komanda example:
    iperf3 -s -p
    Klijentova naredba example:
    iperf3 -c -p
  • Za pokretanje dvosmjernog prometa od klijenta do servera (i obrnuto):
    Serverska komanda example:
    iperf3 –s –p
    Klijentova naredba example: iperf3 -c -p -P –-bidir
  • Za pokretanje više instanci (niti) iperf3, preporuka je korištenje for-petlje za mapiranje niti na TCP portove i pokretanje iperf3 u pozadini korištenjem & za paralelno kreiranje više procesa.
    Serverska komanda example, pokrenite 4 niti: port=””; for i in {0..3}; do port=520$i; bash -c “iperf3 -s -p $port &”; gotovo; Klijentska naredba example, pokrenite 4 niti – Prenesite test port=””; for i in {0..3}; do port=520$i; bash -c “iperf3 -c $serverIP -p $port &”; gotovo; Klijentska naredba example, pokrenite 4 niti – Primite test port=””; for i in {0..3}; do port=520$i; bash -c “iperf3 -R -c $serverIP -p $port &”; gotovo; Za 40G veze, povećajte for-petlju da biste kreirali do 6 instanci/niti.

NAPOMENA
Prilikom pokretanja testa mrežne propusnosti s jednim streamom/niti (npr.ampnpr. P1), AMD procesori možda neće pružiti očekivani protok, posebno veći protok
NIC-ovi (ako je brzina >= 25G propusnog opsega). Kao rezultat toga, potrebno je povezivanje aplikacija s određenim jezgrama kako bi se postigao veći protok. Pogledajte Postavke aplikacije na stranici 22 i AMD EPYC na stranici 26.
3.1.3 netperf
Alat Netperf je snažan izbor i za testiranje propusnosti i za testiranje latencije.

  • TCP_STREAM test u netperfu mjeri propusne mogućnosti uređaja. Serverska naredba example: netserver Klijentska komanda prample: netperf -t TCP_STREAM -l 30 -H
  • TCP_RR test u netperfu vraća latenciju u vrijednosti transakcija/sekundi. Ovo je kružni broj. Preporučuje se korištenje opcije -T x,x, gdje je x lokalni CPU za uređaj. Jednosmjerna latencija se može izračunati pomoću: Latency(usec)=(1⁄2)/ [Transakcije/sek]*1,000,\ Serverska naredba example: mrežni server
    Klijentova naredba example: netperf -t TCP_RR -l 30 -H -T x,x
  • Za pokretanje više instanci (niti) netperfa, preporuka je korištenje for-petlje za mapiranje niti na TCP portove i pokretanje netperfa u pozadini korištenjem & za paralelno kreiranje više procesa.
    Serverska komanda example, započnite 8 tema:
    port=””; za i u {0..7}; do port=520$i; bash -c “netserver -L $serverIP -p $port &”; gotovo;
    Klijentova naredba example, pokrenite 8 niti: port=””; for i in {0..7}; do port=520$i; bash -c “netperf -H $serverIP -p $port -t TCP_STREAM -l 30 &”; gotovo;

3.2 Metodologija podešavanja
Fokusirajte se na jednu promjenu podešavanja istovremeno kako biste znali kakav utjecaj svaka promjena ima na vaš test. Što ste metodičniji u procesu podešavanja, lakše će biti identificirati i riješiti uzroke uskih grla u performansama.

Podešavanje postavki drajvera za i40e

4.1 Afinitet IRQ-a
Konfigurisanje IRQ afiniteta tako da se prekidi za različite mrežne redove afinitetiziraju na različite CPU jezgre može imati ogroman utjecaj na performanse, posebno na testove višenitne propusnosti.
Da biste konfigurirali afinitet IRQ-a, zaustavite irqbalance, a zatim koristite skriptu set_irq_affinity iz izvornog paketa i40e ili ručno zakačite redove čekanja. Onemogućite balanser IRQ-a u korisničkom prostoru da biste omogućili zakačenje reda čekanja:

  • systemctl onemogućava irqbalance
  • systemctl zaustavlja irqbalance
    Korištenje skripte set_irq_affinity iz izvornog paketa i40e (preporučeno):
  • Da biste koristili sva jezgra:
    [putanja-do-i40epaketa]/scripts/set_irq_affinity -X all ethX
  • Da biste koristili samo jezgre na lokalnom NUMA socketu: [putanja-do-i40epackage]/scripts/set_irq_affinity -X local ethX
  • Također možete odabrati raspon jezgara. Izbjegavajte korištenje cpu0 jer on pokreće zadatke tajmera. [putanja-do-i40epackage]/scripts/set_irq_affinity 1-2 ethX

NAPOMENA
Skripta za afinitet omogućava upravljanje prijenosnim paketima (XPS) kao dio procesa prikvačivanja kada je navedena opcija -x. Kada je XPS omogućen, Intel preporučuje da onemogućite irqbalance, jer balanser kernela s XPS-om može uzrokovati nepredvidive performanse. Skripta za afinitet onemogućava XPS kada je navedena opcija -X. Onemogućavanje XPS-a i omogućavanje simetričnih redova čekanja korisno je za opterećenja gdje se najbolje performanse postižu kada se Tx i Rx promet opslužuju na istom paru (parovima) redova čekanja.
Konfigurisanje simetričnih redova čekanja u Linuxu uključuje podešavanje parametara drajvera mrežnog interfejsa kako bi se omogućili simetrični redovi čekanja za prijem (Rx) i simetrični redovi čekanja za slanje (Tx) za podržane mrežne adaptere.
NAPOMENA

  • Simetrični redovi su napredna mrežna funkcija i ne podržavaju ih svi mrežni adapteri ili upravljački programi serije 700.
  • Prije nego što pokušate konfigurirati simetrične redove čekanja, provjerite imate li potrebnu podršku za upravljačke programe i hardver.

Da biste konfigurirali simetrične redove čekanja, slijedite ove opće korake:

  1. Uredi konfiguraciju mrežnog interfejsa FileKoristite uređivač teksta (npr.ample, vi, nano ili gedit) za uređivanje konfiguracije mrežnog interfejsa file. The file se obično nalazi u direktoriju /etc/sysconfig/network-scripts/ i ima naziv poput ifcfg-ethX, gdje je ethX naziv vašeg mrežnog interfejsa.
  2. Dodajte parametre simetričnog reda čekanja. Dodajte sljedeće linije u konfiguraciju mrežnog interfejsa fileETHTOOL_OPTS=”rx-redovi 8 tx-redovi 8”
  3. Ponovo pokrenite mrežnu uslugu.
    Nakon što napravite promjene, ponovo pokrenite mrežni servis da biste primijenili novu konfiguraciju. sudo systemctl restart network

ručno:

  • Pronađite procesore povezane sa svakim čvorom koristeći: numactl –hardware lscpu
  • Pronađite bitne maske za svaki od procesora:
  • Pod pretpostavkom jezgara 0-11 za čvor 0: [1,2,4,8,10,20,40,80,100,200,400,800]
  • Pronađite IRQ-ove dodijeljene portu koji se dodjeljuje: grep ethX /proc/interrupts i zabilježite IRQ vrijednosti. Na primjerample, 181-192 za 12 učitanih vektora.
  • Unesi vrijednost SMP afiniteta u odgovarajući IRQ unos. Imajte na umu da se ovo mora uraditi za svaki IRQ unos: echo 1 > /proc/irq/181/smp_affinity echo 2 > /proc/irq/182/smp_affinity echo 4 > /proc/irq/183/smp_affinity Prikaži IRQ afinitet:
  • Da biste prikazali IRQ afinitet za sva jezgra: /scripts/set_irq_affinity -s ethX
  • Da biste prikazali samo jezgre na lokalnom NUMA socketu: /scripts/set_irq_affinity -s lokalni ethX
  • Također možete odabrati niz jezgara: /scripts/set_irq_affinity -s 40-0-8,16 ethX

NAPOMENA
Skripta set_irq_affinity podržava zastavicu -s u i40e drajveru verzije 2.16.11 i novijim.
4.2 Redovi za slanje/prijem
Zadani broj redova čekanja koje je upravljački program omogućio za svaki Ethernet port prilikom inicijalizacije jednak je ukupnom broju CPU-ova dostupnih na platformi. Ovo dobro funkcionira za mnoge platforme i konfiguracije radnog opterećenja. Međutim, na platformama s velikim brojem jezgara i/ili velikom gustoćom Ethernet portova, ova konfiguracija može uzrokovati sukob resursa. Stoga bi u nekim slučajevima moglo biti potrebno izmijeniti zadanu vrijednost za svaki port u sistemu.
Zadani broj Tx/Rx redova može varirati ovisno o specifičnom modelu i verziji upravljačkog programa. Broj redova može se podesiti pomoću naredbe ethtool -L navedene u nastavku.
NAPOMENA
U ovim slučajevima, Intel preporučuje da smanjite zadani broj redova čekanja za svaki port na ne više od broja CPU-ova dostupnih u NUMA čvoru lokalnom za adapter port. U nekim slučajevima, prilikom pokušaja uravnoteženja resursa na implementacijama s velikim brojem portova, možda će biti potrebno dodatno smanjiti ovaj broj.
Da biste izmijenili konfiguraciju reda čekanja:
Sljedeći prample postavlja port na 32 Tx/Rx reda: ethtool -L ethX combined 32
Example output:
ethtool -l ethX
Parametri kanala za ethX: Unaprijed postavljeni maksimumi:
RX: 96
TX: 96
Ostalo: 1
Kombinirano: 96
Trenutne postavke hardvera:
RX: 0
TX: 0
Ostalo: 1
Kombinirano: 32
4.3 Moderiranje prekida
Adaptivno moderiranje prekida je uključeno prema zadanim postavkama i dizajnirano je da osigura uravnotežen pristup između niskog korištenja CPU-a i visokih performansi. Međutim, možete pokušati ručno podesiti postavke prekida kako bi odgovarale vašem slučaju upotrebe.
Raspon od 0-235 mikrosekundi pruža efektivni raspon od 4,310 do 250,000 prekida u sekundi. Vrijednost rx-μsecs-high može se postaviti nezavisno od rx-μsecs i tx-μsecs u istoj ethtool naredbi, a također je nezavisna od adaptivnog algoritma za moderiranje prekida. Osnovni hardver podržava granularnost u intervalima od 2 mikrosekunde, tako da susjedne vrijednosti mogu rezultirati istom brzinom prekida.

  • Da biste isključili adaptivnu moderaciju prekida: ethtool -C ethX adaptive-rx off adaptive-tx off
  • Da biste uključili adaptivnu moderaciju prekida: ethtool -C ethX adaptive-rx on adaptive-tx on

Dobro mjesto za početak općeg podešavanja je 84 μs, ili ~12000 prekida/s. Ako vidite da se rx_dropped brojači izvode tokom prometa (korištenjem ethtool -S ethX), onda vjerovatno imate previše spor CPU, nedovoljno bafera iz veličine prstena adaptera (ethtool -G) za zadržavanje paketa tokom 84 μs ili prenisku brzinu prekida.

  • Da biste postavili moderiranje prekida na fiksnu brzinu prekida od 84 μs između prekida (12000 prekida/s): ethtool -C ethX adaptive-rx off adaptive-tx off rx-usecs 84 tx-usecs 84 Sljedeća vrijednost koju treba isprobati, ako niste maksimalno iskorišteni na CPU-u, je 62 μs. Ovo koristi više CPU-a, ali brže opslužuje bafere i zahtijeva manje deskriptora (veličina prstena, ethtool -G).
  • Za postavljanje moderacije prekida na fiksnu brzinu prekida od 62 useka između prekida (16000 prekida/s). ethtool -C ethX adaptive-rx off adaptive-tx off rx-usecs 62 tx-usecs 62
    Ako se brojači rx_dropped povećavaju tokom saobraćaja (korištenjem ethtool -S ethX), vjerovatno imate previše spor CPU, premalo bafera od veličine prstena adaptera (ethtool -G) ili prenisku brzinu prekida. Ako niste maksimalno iskorišteni CPU, možete povećati brzinu prekida smanjenjem ITR vrijednosti. Ovo koristi više CPU-a, ali brže opslužuje bafere i zahtijeva manje deskriptora (veličina prstena, ethtool -G).
    Ako je vaš CPU opterećen na 100%, onda se ne preporučuje povećanje brzine prekida. U određenim okolnostima, kao što je opterećenje ograničeno na CPU, možda ćete htjeti povećati vrijednost μs kako biste omogućili više CPU vremena za druge aplikacije.
    Ako su vam potrebne performanse s niskom latencijom i/ili imate dovoljno CPU-a za mrežnu obradu, možete potpuno onemogućiti moderiranje prekida, što omogućava da se prekidi aktiviraju što je brže moguće.
  • Da biste onemogućili moderiranje prekida, koristite ethtool -C ethX adaptive-rx off adaptive-tx off rx-usecs 0 tx-usecs 0

NAPOMENA
Prilikom pokretanja s onemogućenom moderacijom prekida, stopa prekida u svakom redu može biti vrlo visoka. Razmislite o uključivanju parametra rx-usec-high kako biste postavili gornju granicu stope prekida. Sljedeća naredba onemogućava adaptivnu moderaciju prekida i dozvoljava maksimalno 5 mikrosekundi prije nego što označi da je prijem ili slanje završeno. Umjesto da rezultira sa čak 200,000 prekida u sekundi, ograničava ukupan broj prekida u sekundi na 50,000 putem parametra rx-usec-high. # ethtool -C ethX adaptive-rx off adaptive-tx off rx-usecs-high 20 rx-usecs 5 txusecs 5 Pokušajte podesiti tajmer slanja/primanja/koalesciranja visokog prioriteta na više (80/100/150/200) ili niže (25/20/10/5) kako biste pronašli optimalnu vrijednost za radno opterećenje.
4.4 Veličina prstena
Ako vidite rx_dropped brojače u ethtool -S ethX (rx_dropped, rx_dropped.nic) ili sumnjate na pritisak keša s više aktivnih redova čekanja, možete pokušati prilagoditi veličinu prstena u odnosu na zadanu vrijednost. Zadana vrijednost je 512, maksimalna je 4096.

  • Da biste provjerili trenutne vrijednosti: ethtool -g ethX
    Ako se sumnja da nedostatak baferovanja uzrokuje padove pri trenutnoj brzini prekida, možete prvo pokušati s maksimalnom, zatim s minimalnom, a zatim nastaviti s binarnom pretragom dok ne vidite optimalne performanse.
    Ako se sumnja na pritisak keš memorije (aktivno mnogo redova), smanjenje bafera u odnosu na zadane vrijednosti može pomoći Intel® Data Direct I/O (Intel® DDIO) da radi efikasnije. Intel preporučuje da se isproba 128 ili 256 po redu, imajući na umu da bi povećanje brzine prekida putem ethtool -C moglo biti potrebno kako bi se izbjeglo povećanje rx_dropped.
  • Da biste postavili veličinu prstena na fiksnu vrijednost: ethtool -G eth12 rx 256 tx 256

NAPOMENA
Da biste popravili gubitke Rx paketa pronađene pomoću ethtool -S ethX|grep drop, razmislite o povećanju veličine prstena na 4096. Eksperimentišite kako biste pronašli najbolju postavku za opterećenje, ali pazite na prekomjernu upotrebu memorije s višim vrijednostima.
4.5 Kontrola protoka
Kontrola protoka sloja 2 može značajno uticati na performanse TCP-a i preporučuje se da se onemogući za većinu radnih opterećenja. Potencijalni izuzetak je promet u naletima gdje naleti nisu dugog trajanja.
Kontrola protoka je podrazumevano onemogućena.

  • Da biste omogućili kontrolu protoka: ethtool -A ethX rx on tx on
  • Da biste onemogućili kontrolu protoka: ethtool -A ethX rx off tx off

NAPOMENA
Morate imati partnersku vezu koja podržava kontrolu protoka da biste uspješno omogućili kontrolu protoka.
4.6 Jumbo okviri
Kada se očekivano okruženje prometa sastoji od prijenosa velikih blokova podataka, moglo bi biti korisno omogućiti funkciju jumbo frameova. Podrška za jumbo frameove se omogućava promjenom maksimalne jedinice prijenosa (MTU) na vrijednost veću od zadane vrijednosti od 1500. Ovo omogućava uređaju da prenosi podatke u većim paketima unutar mrežnog okruženja. Ova postavka može poboljšati propusnost i smanjiti korištenje CPU-a za velika I/O opterećenja. Međutim, to može utjecati na opterećenja s malim paketima ili osjetljiva na latenciju.
NAPOMENA
Jumbo okviri ili veća MTU postavka moraju biti pravilno konfigurirani u cijelom mrežnom okruženju.
Koristite naredbu ifconfig da biste povećali veličinu MTU-a. Na primjerample, unesite sljedeće, gdje je broj interfejsa: ifconfig mtu 9000 gore
Alternativno, možete koristiti ip naredbu na sljedeći način: ip link set mtu 9000 dev postavljanje IP veze za razvojne programere

Podešavanje platforme (i40e nije specifično)

5.1 BIOS postavke

  • Omogućite Intel® VT-d za virtualizacijska opterećenja.
  • Hiper-nitnost (logički procesori) može uticati na performanse. Eksperimentišite s njom, uključujući je ili isključujući, u zavisnosti od radnog opterećenja.
  • Intel® Turbo Boost omogućava jezgrama CPU-a da rade na višoj frekvenciji od osnovne frekvencije CPU-a. Omogućavanje Intel® Turbo Boost-a može poboljšati performanse za mnoga radna opterećenja, ali troši više energije kako bi jezgre ostale na višoj frekvenciji. Eksperimentišite s uključivanjem/isključivanjem Turbo Boost-a za svoje radno opterećenje.

NAPOMENA
Turbo frekvencije nisu zagarantovane ako platforma ima visoko ukupno korištenje CPU-a. Više turbo frekvencije jezgra se smanjuju kako se povećava ukupno korištenje CPU-a.
5.2 Upravljanje napajanjem
Upravljanje napajanjem može utjecati na performanse, posebno kod opterećenja s niskom latencijom. Ako su performanse veći prioritet od smanjenja potrošnje energije, Intel preporučuje da eksperimentirate s ograničavanjem učinaka upravljanja napajanjem. Postoji mnogo različitih načina za ograničavanje upravljanja napajanjem, putem alata operativnog sistema, postavki BIOS-a i parametara pokretanja kernela. Odaberite najbolju metodu i nivo koji odgovara vašem okruženju.
5.2.1 C-State Control
Ograničavanje ulaska u C-stanje na CO ili C1 poboljšava performanse i povećava iskorištenost energije.
Onemogućavanje unosa stanja CPU paketa C6 može poboljšati performanse mreže. Međutim, ovo povećava potrošnju energije.
Dostupne su sljedeće opcije:

  • Dinamički kontrolišite ulazak u C-stanje:
    Otvori
    /dev/cpu_dma_latency i upišite maksimalnu dozvoljenu latenciju u nju.

NAPOMENA
Postoji mali program pod nazivom cpudmalatency.c koji se može preuzeti sa zajednice otvorenog koda, kompajlirati i pokrenuti iz komandne linije da bi se upravo to uradilo.
Sljedeći prample dozvoljava pet μs vremena buđenja, i stoga dozvoljava unos C1: cpudmalatency 5 &

  • Ograničite maksimalno C-stanje u postavkama pokretanja kernela:
    Za Intel procesore: intel_idle.max_cstates=1
    Za procesore koji nisu Intelovi: processor.max_cstates=1
  • Koristite naredbu cpupower za provjeru i onemogućavanje stanja CPU C6: Provjerite: cpupower monitor ili cpupower idle-info
    Onemogući C6: cpupower idle-set -d3 ili
    Onemogući C-stanja: cpupower idle-set -D0

napomene:

  1. Onemogućite C-stanja na CPU-u ako server ima Intel® Xeon® skalabilni procesor(e) 4. generacije. Kada je Hyper Threading omogućen ili onemogućen, onemogućavanje stanja mirovanja (-D0) sprječava jezgre da pređu u stanja niske potrošnje energije tokom perioda mirovanja i smanjuje latenciju CPU-a za prelazak između stanja mirovanja i aktivnog stanja.
  2. Upravljanje napajanjem skalabilnog procesora Intel® 4. generacije Intel® Xeon® je izuzetno agresivno. Da biste izbjegli da jezgre pređu u stanje niske potrošnje energije, pokušajte smanjiti broj jezgara u upotrebi kako biste ih duže držali budnima (ethtool -L kombinovano Također, vežite prekide za određene jezgre koristeći set irq afinitet (najčešće sa -x local ili list of CPU cores) i osigurajte da se radno opterećenje izvršava na istim jezgrama pomoću taskset ili numactl. Ovo poboljšava performanse održavanjem jezgara aktivnim i optimizacijom rukovanja prekidima.

Omogući C6:
cpupower idle-set -d3
Omogući C-stanja:
cpupower idle-set -E

  • Druga metoda je korištenje alata tuned (uključenog u mnoge Linux distribucije) za postavljanje profesionalnih performansi.file. Ove profilemijenjaju nekoliko postavki operativnog sistema koje mogu uticati na performanse mnogih aplikacija. Utvrđeno je da je mrežni protok...file pruža poboljšanje za većinu radnih opterećenja.
    provjerite:
    tuned-adm active
    Set:
    tuned-adm profile mrežni protok
    NAPOMENA
    Podešena usluga mora biti pokrenuta za gore navedene naredbe. Za provjeru/ponovno pokretanje, podešavajte: systemctl status tuned systemctl restart tuned
    Također možete zabraniti bilo koji unos C-stanja dodavanjem sljedećeg u liniju za pokretanje kernela:
    neaktivan=anketa
  • Ograničite C-stanje putem postavki upravljanja napajanjem u BIOS-u sistema, što može imati utjecaj na performanse.file dostupan.
    Alati poput turbostata ili x86_energy_perf_policy mogu se koristiti za provjeru ili podešavanje postavki upravljanja napajanjem.

5.2.2 Upravljanje napajanjem PCIe
Upravljanje napajanjem u aktivnom stanju (ASPM) omogućava stanje niže potrošnje energije za PCIe veze kada nisu aktivno u upotrebi. To može uzrokovati veću latenciju na PCIe mrežnim uređajima, stoga Intel preporučuje da onemogućite ASPM za radna opterećenja osjetljiva na latenciju. Onemogućite ASPM dodavanjem sljedećeg u liniju za pokretanje kernela: pcie_aspm=off
5.2.3 Skaliranje frekvencije procesora
Skaliranje frekvencije CPU-a (ili skaliranje brzine CPU-a) je tehnika upravljanja napajanjem u Linuxu u kojoj se brzina sistemskog takta podešava u hodu kako bi se uštedjela energija i toplina. Baš kao i C-stanja, ovo može uzrokovati neželjenu latenciju na mrežnim vezama.
Alat cpupower se također može koristiti za provjeru i izmjenu zadanih postavki i ograničenja performansi CPU-a:

  • Provjerite: monitor snage procesora ili
  • Postavljanje CPU-a u režim performansi: cpupower frequency-set -g performance

NAPOMENA
Modifikacije ograničenja frekvencije CPU-a mogu utjecati na mnoga opterećenja i mogu onemogućiti druge funkcije, kao što je turbo način rada CPU-a.
Da biste onemogućili skaliranje frekvencije CPU-a, onemogućite uslugu napajanja CPU-a sljedećim naredbama:
systemctl stop cpupower.service
systemctl onemogući cpupower.service
5.2.4 Dodatne smjernice za upravljanje napajanjem
Dodatni detalji su dati u ovom općem dokumentuview mnogih funkcija upravljanja napajanjem u skalabilnim procesorima Intel® Xeon® treće generacije, kao i smjernice o tome kako se ove funkcije mogu integrirati na nivou platforme: https://networkbuilders.intel.com/solutionslibrary/power-management-technologyoverview-technology-guide
5.3 Intel® Turbo Boost
Intel® Turbo Boost ubrzava procesor kada je to potrebno, ali može trošiti dodatnu energiju. Isključivanje Turbo Boost-a održava procesor na konstantnoj brzini, pružajući vam konzistentan nivo performansi za određena opterećenja.
5.4 Zaštitni zidovi
Zaštitni zidovi mogu utjecati na performanse, posebno na latenciju.
Onemogućite iptables/firewalld ako nije potreban.
5.5 Postavke aplikacije
Često jedna nit (koja odgovara jednom mrežnom redu čekanja) nije dovoljna za postizanje maksimalne propusnosti. Neke arhitekture platformi, kao što je AMD, imaju tendenciju da odbace više Rx paketa sa jednom niti u poređenju sa platformama sa Intel procesorima.
Razmislite o korištenju alata poput taskset ili numactl za prikačivanje aplikacija na NUMA čvor ili CPU jezgre lokalne za mrežni uređaj. Za neka opterećenja kao što je I/O pohrana, premještanje aplikacije na nelokalni čvor pruža prednost.
Ako je moguće, eksperimentišite sa povećanjem broja niti koje koristi vaša aplikacija.
Verzija jezgra 5.6
Većina modernih ugrađenih kernela je prilično dobro optimizirana za performanse, ali, ovisno o vašoj upotrebi, ažuriranje kernela može pružiti poboljšane performanse. Preuzimanje izvornog koda vam također omogućava da omogućite/onemogućite određene funkcije prije izgradnje kernela.
5.7 Postavke operativnog sistema/kernela
Za više informacija o općem podešavanju operativnog sistema, pogledajte vodiče za podešavanje operativnog sistema, kao što je Vodič za podešavanje performansi mreže Red Hat Enterprise Linux.
Neki uobičajeni parametri za podešavanje navedeni su u sljedećoj tabeli. Imajte na umu da su ovo samo predložene početne tačke i da njihova promjena u odnosu na zadane vrijednosti može povećati resurse koji se koriste na sistemu. Iako povećanje vrijednosti može pomoći u poboljšanju performansi, potrebno je eksperimentirati s različitim vrijednostima kako bi se utvrdilo šta najbolje funkcionira za dati sistem, radno opterećenje i vrstu prometa.
Parametri kernela se mogu konfigurirati pomoću uslužnog programa sysctl u Linuxu kao što je prikazano u nastavku.
To view Zadane vrijednosti za rmem i wmem na sistemu:
sysctl net.core.rmem_default
sysctl net.core.wmem_default
Postavite vrijednosti na maksimum (16 MB):
sysctl -w net.core.rmem_max=16777216
sysctl -w net.core.wmem_max=16777216
Veličine socket buffera, poznate i kao prijemni buffer (rmem) i odašiljački buffer (wmem), su sistemski parametri koji određuju količinu memorije rezervirane za dolazni i odlazni mrežni promet.
Pokretanje sysctl-a bez argumenta -w prikazuje parametar sa njegovom trenutnom postavkom.

Postavka steka Opis
net.core.rmem_default Zadana veličina prozora za prijem
net.core.wmem_default Zadana veličina prozora za prijenos
net.core.rmem_max Maksimalna veličina prozora za prijem
net.core.wmem_max Maksimalna veličina prozora za prijenos
net.core.optmem_max Maksimalni baferi memorije za opcije
net.core.netdev_max_backlog Zaostatak neobrađenih paketa prije nego što kernel počne da se odbacuje
net.ipv4.tcp_rmem Rezerva memorije za TCP bafere za čitanje
net.ipv4.tcp_wmem Rezerva memorije za TCP bafere za slanje

Parametri jezgra, mrežnog steka, rukovatelja memorijom, brzine CPU-a i upravljanja napajanjem mogu imati veliki utjecaj na performanse mreže. Uobičajena preporuka je primjena na mrežni protok profile korištenjem naredbe tuned. Ovo mijenja nekoliko postavki operativnog sistema kako bi se dala prednost mrežnim aplikacijama.
provjerite:
tuned-adm active
Set:
tuned-adm profile mrežni protok
5.8 Zaostatak mrežnog uređaja
Ova funkcija pomaže u poboljšanju performansi mreže efikasnim upravljanjem dolaznim prometom, smanjenjem gubitka paketa, smanjenjem latencije i povećanjem propusnosti. To dovodi do boljeg korisničkog iskustva i bržeg odziva sistema.
Podrazumevano je omogućeno u većini Linux operativnih sistema. Da biste provjerili podrazumevanu vrijednost:
sysctl net.core.netdev_max_backlog
Maksimalna vrijednost za netdev_max_backlog može varirati ovisno o faktorima kao što su verzija kernela, hardver, memorija i opterećenje. U mnogim slučajevima, vrijednost 8192 se smatra dobrom vrijednošću. sysctl -w net.core.netdev_max_backlog=8192
5.9 Konfiguracije i podešavanje specifične za platformu
5.9.1 Skalabilni procesori Intel® Xeon® 4. generacije

Upravljanje napajanjem Intel® Xeon® Scalable procesora 4. generacije je izuzetno agresivno u poređenju sa Intel® Xeon® Scalable procesorima 3. generacije. Da biste izbjegli da jezgre pređu u stanje niske potrošnje energije, pokušajte smanjiti broj jezgri koje se koriste kako biste ih duže održali budnima.
Preporučene postavke BIOS-a za najbolje performanse

  1. Omogućavanje/onemogućavanje hiper-nitnosti (na osnovu zahtjeva za opterećenjem i ciljeva performansi) na CPU-u.
  2. Postavite sistem profesionalnofile na Performanse za maksimalne performanse.
    NAPOMENA
    To rezultira većom potrošnjom energije
  3. Postavite upravljanje napajanjem CPU-a na Maksimalne performanse kako biste dali prioritet maksimalnim performansama CPU-a u odnosu na energetsku efikasnost.
  4. Omogućite Turbo Boost. Onemogućavanje Turbo Boost-a u postavkama sistemskog BIOS-a obično sprečava CPU da dinamički povećava brzinu takta iznad osnovne frekvencije.
  5. NAPOMENA
    Onemogućavanje Turbo Boosta može biti prikladno za određene slučajeve upotrebe gdje su konzistentne performanse, energetska efikasnost ili upravljanje temperaturom prioritet u odnosu na maksimalne performanse.
  6. Isključite funkciju Single Root I/O Virtualization (SR-IOV) ako sistem ne koristi tehnologije virtualizacije.
  7. Onemogućite C-stanja kako biste dali instrukcije CPU-u da ostane aktivan i spriječi ulazak u dublja stanja mirovanja.
  8. Onemogućite C1E kako biste osigurali da CPU ostane aktivan i da ne uđe u stanje mirovanja C1E.
  9. Postavite neosnovnu frekvenciju na maksimum kako biste sistemu dali instrukcije da radi na najvišoj dostupnoj frekvenciji.
  10. Na Dell platformama, postavite emulaciju jezgara Multiple APIC Description Table (MADT) na Linear (ili Round-Robin, ovisno o BIOS-u) kako biste osigurali jasno i predvidljivo mapiranje jezgara CPU-a.

Preporučena podešavanja na nivou operativnog sistema za optimizovane performanse

  1. Postavite regulator skaliranja frekvencije CPU-a na performanse. cpupower frequency-set -g performance cpupower frequency-info
  2. Onemogući C-stanja. cpupower idle-set -D0
  3. Postavite maksimalnu vrijednost glavnih Rx (rmem) i Tx (wmem) bafera. sysctl -w net.core.rmem_max=16777216 sysctl -w net.core.wmem_max=16777216
  4. Postavi zaostatak mrežnog uređaja. sysctl -w net.core.netdev_max_backlog=8192
  5. Set podešeno profesionalnofile (opterećenje zavisi od protoka/latencije).
    tuned-adm profile mrežni protok

Preporučena podešavanja nivoa adaptera za optimizovane performanse

  1. Ograničite broj redova čekanja koji se koriste za promet aplikacije. Koristite minimalni broj redova čekanja potreban da bi povezane CPU jezgre ostale aktivne kako biste spriječili njihov ulazak u dublja stanja mirovanja (prilagodite radnom opterećenju): ethtool -L ukupno 32
  2. Postavljanje brzine moderiranja prekida. ethtool -C adaptivno-rx isključeno adaptivno-tx isključeno rx-usecs-visoko 50 rx-usecs 50 tx-usecs 50
    Pokušajte podesiti tajmer za slanje/prijem/koalesciranje visokog prioriteta na više (80/100/150/200) ili niže (25/20/10/5) kako biste pronašli optimalnu vrijednost za radno opterećenje.
  3. Postavite veličine Rx/Tx prstenova. ethtool -G rx 4096 tx 4096
    NAPOMENA
    Ako vidite gubitak Rx paketa pomoću ethtool -S| grep drop, pokušajte smanjiti veličinu prstena na <4096. Pokušajte pronaći optimalnu vrijednost za opterećenje gdje se paketi ne odbacuju.
  4. Postavite IRQ afinitet. Koristite jezgre lokalne za NIC ili specifično mapiranje jezgara (gdje je broj jezgara jednak broju redova čekanja postavljenih u 1 na stranici 26). systemctl stop irqbalance set_irq_affinity -X local ILI set_irq_affinity -X

5.9.2 AMD EPYC
AMD EPYC procesori su moćni CPU-ovi napravljeni za servere i podatkovne centre, izgrađeni na AMD-ovoj Zen arhitekturi. Donja podešavanja su iz AMD-ove EPYC serije 4. generacije.
Preporučene postavke BIOS-a za najbolje performanse

  1. Omogućite prilagođeni način rada kako biste korisnicima omogućili podešavanje performansi procesora, potrošnje energije i drugih postavki. Ovo pomaže u finom podešavanju sistema za najbolju ravnotežu između performansi i energetske efikasnosti.
  2. Omogućite povećanje performansi jezgra kako biste omogućili CPU-u da automatski poveća svoju brzinu za obradu zahtjevnijih zadataka, poboljšavajući ukupne performanse.
  3. Onemogućite globalnu kontrolu C-stanja kako biste spriječili da CPU uđe u dublja stanja uštede energije poznata kao C-stanja, koja mogu održati brzinu odziva.
    NAPOMENA
    Onemogućavanje C-stanja može uzrokovati dodatnu potrošnju energije i povećanje termalnih temperatura. Pratite oba zbog opterećenja.
  4. Omogućite/onemogućite simultano višenitno izvršavanje (SMT) na CPU-u, na osnovu zahtjeva opterećenja i ciljeva performansi. SMT je ekvivalentan hipernitnom izvršavanju na Intel CPU-ima.
    NAPOMENA
    Za optimizirane performanse, pogledajte Podešavanje postavki upravljačkog programa za i40e na stranici 13 i Podešavanje platforme (i40e nije specifično) na stranici 19 za preporučeno podešavanje na nivou operativnog sistema i adaptera.

Spajanje adaptera

Linux povezivanje je moćna funkcija koja može značajno poboljšati performanse mreže, redundanciju i toleranciju grešaka u serverskim okruženjima. Međutim, važno je napomenuti da je za pravilno funkcionisanje potreban kompatibilan mrežni hardver i pravilna konfiguracija i na serveru i na prekidaču.
Drajver za povezivanje u Linuxu vam omogućava da agregirate više fizičkih mrežnih interfejsa u jedan povezani interfejs. Ovaj povezani interfejs se operativnom sistemu i aplikacijama pojavljuje kao jedan virtuelni mrežni interfejs.
NAPOMENA
Veza je logički interfejs, tako da nije moguće postaviti afinitet CPU-a direktno na interfejsu veze (na primjeramp(npr. bond0). To jest, nema direktnu kontrolu nad rukovanjem prekidima ili afinitetom CPU-a. Afinitet CPU-a mora biti konfiguriran za temeljne interfejse koji su dio veze.
Lijepljenje nudi nekoliko načina rada, svaki sa svojim karakteristikama.

Mode  Tip
0 Round Robin
1 Active Backup
2 XOR
3 Broadcast
4 LACP
5 Balans opterećenja prijenosa
6 Adaptivna ravnoteža opterećenja

Postoje različite metode za kreiranje povezivanja (bonding) u Linuxu. Jedna od najčešćih metoda je korištenje mrežne konfiguracije. files (nprample, /etc/network/interfaces ili /etc/sysconfig/network-scripts/ifcfg-bondX).
Konfiguracija pomoću mrežne konfiguracije Files
Sljedeći koraci kreiraju povezivanje putem konfiguracije mreže files.

  1. Odaberite dva ili više NIC portova za povezivanje (na primjerample, ethX i ethY)
  2. Otvori konfiguraciju mrežne kartice Files pod /etc/sysconfig/network-scripts/ za potreban NIC interfejs (na primjerample, vi ifcfg-ethX i vi ifcfg-ethY) i dodajte sljedeći tekst:
    MASTER=vezaN [Napomena: N je cijeli broj koji označava broj veze.] SLAVE=da
  3. Kreirajte skriptu za mrežu veza file koristeći vi /etc/sysconfig/networkscripts/ifcfg-bondN i unesite sljedeći tekst:
    DEVICE=bondN [Napomena: N je cijeli broj koji označava broj veze] ONBOOT=yes USERCTL=no BOOTPROTO=dhcp (ili) none
    IPADDR=200.20.2.4 [obavezno ako BOOTPROTO=none] NETMASK=255.255.255.0 [obavezno ako BOOTPROTO=none] NETWORK=200.20.2.0 [obavezno ako BOOTPROTO=none] BROADCAST=200.20.2.255 [obavezno ako BOOTPROTO=none] BONDING_OPTS=”mode=1 miimon=100″
    NAPOMENA
    Mod može biti bilo koji cijeli broj od 0 do 6, ovisno o zahtjevu.
  4. Ponovo pokrenite mrežne servise koristeći servis network restart ili systemctl restart NetworkManager.service

Rešavanje problema sa performansama

7.1 Iskorištenost CPU-a
Provjerite iskorištenost CPU-a po jezgru dok se izvršava radno opterećenje.
Imajte na umu da je iskorištenost po jezgri relevantnija za performanse od ukupne iskorištenosti CPU-a, jer pruža ideju o iskorištenosti CPU-a po mrežnom redu čekanja. Ako imate samo nekoliko niti koje pokreću mrežni promet, onda je moguće da se koristi samo nekoliko jezgri. Međutim, ako su te jezgre na 100%, onda je propusnost vaše mreže vjerovatno ograničena iskorištenošću CPU-a i vrijeme je da izvršite sljedeće:

  1. Podesite moderaciju IRQ-a/veličinu prstena kako je detaljno opisano u Moderiranju prekida.
  2. Povećajte broj niti aplikacije kako biste rasporedili opterećenje CPU-a na više jezgri. Ako sve jezgre rade sa 100%, onda je vaša aplikacija možda vezana za CPU, a ne za mrežu.

Uobičajeno dostupni alati:

  • top
    — Pritisnite 1 da biste proširili listu CPU-a i provjerili koji se koriste.
    — Obratite pažnju na nivo iskorištenosti.
    — Obratite pažnju na to koji su procesi navedeni kao najaktivniji (vrh liste).
  • mpstat
    Sljedeći prampKomandna linija je testirana na Red Hat Enterprise Linuxu 7.x.
    Prikazuje iskorištenost CPU-a po jezgri (pronalaženjem ukupnog procenta neaktivnosti i oduzimanjem od 100) i označava vrijednosti iznad 80% crvenom bojom. mpstat -P ALL 1 1 | grep -v Average | tail -n +5 | head -n -1 | awk '{ print (100-$13)}' | egrep -color=always '[^\.][8-9][0-9][\.]?.*|^[8-9][0-9][\.]?.*| 100|' | column
  • perf top Potražite gdje se ciklusi troše.

7.2 i40e brojači
Drajver i40e pruža dugu listu brojača za otklanjanje grešaka i praćenje interfejsa putem naredbe ethtool -S ethX. Može biti korisno pratiti izlaz dok se radno opterećenje izvršava i/ili upoređivati ​​vrijednosti brojača prije i nakon izvršavanja radnog opterećenja.

  • Da biste dobili kompletan dump i40e brojača: ethtool -S ethX
  • Da biste pratili samo brojače koji nisu nula: watch -d (ethtool -S ethX) | egrep -v :\ 0 | column
    Neke stvari na koje treba obratiti pažnju:
  • rx_dropped znači da CPU ne opslužuje bafere dovoljno brzo.
  • port.rx_dropped znači da nešto nije dovoljno brzo u slotu/memoriji/sistemu.

7.3 Mrežni brojači
Provjerite netstat -s prije/poslije izvršavanja radnog opterećenja.
Netstat prikuplja informacije o mreži sa svih mrežnih uređaja u sistemu. Stoga, rezultati mogu biti pogođeni i drugim mrežama osim one koja se testira. Izlaz iz netstat -s naredbe može biti dobar pokazatelj problema s performansama u Linux operativnom sistemu ili kernelu. Za više informacija o općem podešavanju operativnog sistema, pogledajte vodiče za podešavanje operativnog sistema, kao što je Red Hat Enterprise Linux Network Performance Tuning Guide.
7.4 Sistemski zapisnici
Provjerite sistemske zapise za greške i upozorenja (/var/log/messages, dmesg).
7.5 Intelov alat za svr-info
Intel pruža alat svr-info (pogledajte https://github.com/intel/svr-info) za Linux koji prikuplja relevantne detalje o hardveru i softveru sa servera. Izlaz svr-info može biti izuzetno koristan za identifikaciju uskih grla sistema ili postavki/podešavanja koja nisu optimizirana za radno opterećenje. Prilikom otvaranja zahtjeva za podršku kod Intela za probleme s performansama vezanim za Ethernet, obavezno uključite izlaz svr-info (tekst file) za svaki Linux server u testnoj konfiguraciji.

  1. Preuzmite i instalirajte svr-info:
    wget -qO- https://github.com/intel/svr-info/releases/latest/download/svrinfo.tgztar xvz cd svr-info
    ./svr-info
    > naziv_hostname.txt
  2. Sakupite izlaz:
    ./svr-info > naziv_hostname.txt
  3. Priložite jedan tekst (.txt) file za svaki server vašoj Intel podršci radi analize.

Preporuke za uobičajene scenarije performansi

8.1 IP prosljeđivanje

  • Ažurirajte kernel.
    Neki noviji kerneli unutar distribucije imaju smanjene performanse usmjeravanja zbog promjena u kodu usmjeravanja, počevši od uklanjanja keša usmjeravanja iz sigurnosnih razloga. Noviji kerneli izvan distribucije trebali bi imati zakrpe koje ublažavaju utjecaj ovih promjena na performanse i mogu pružiti poboljšane performanse.
  • Onemogući hiper-nitnost (logičke jezgre).
  • Uredite parametre pokretanja kernela.
    — Prisilno isključivanje iommu-a (intel_iommu=off ili iommu=off) iz linije za pokretanje kernela, osim ako nije potrebno za virtualizaciju
    — Isključi upravljanje napajanjem: processor.max_cstates=1 idle=poll pcie_aspm=off
  • Ograničite broj redova čekanja da bude jednak broju jezgara na lokalnom socketu (12 u ovom primjeruample). ethtool -L ethX u kombinaciji 12
  • Povezuje prekide samo na lokalni socket. set_irq_affinity -X local ethX ILI set_irq_affinity -X local ethX
    NAPOMENA
    -X ili -x se mogu koristiti u zavisnosti od radnog opterećenja.
  • Promijenite veličine Tx i Rx prstenova po potrebi. Veća vrijednost zahtijeva više resursa, ali može osigurati bolje brzine prosljeđivanja. ethtool -G ethX rx 4096 tx 4096
  • Onemogućite GRO prilikom rutiranja.
    Zbog poznatog problema s kernelom, GRO mora biti isključen prilikom usmjeravanja/prosljeđivanja. ethtool -K ethX gro off gdje je ethX Ethernet interfejs koji treba modificirati.
  • Onemogući adaptivnu moderaciju prekida i postavi statičku vrijednost. ethtool -C ethX adaptive-rx off adaptive-tx off ethtool -C ethX rx-usecs 64 tx-usecs 64

NAPOMENA
U zavisnosti od tipa procesora i radnog opterećenja, parametri spajanja za RX i TX mogu se podesiti radi poboljšanja performansi (ili manjeg gubitka kadrova).

  • Onemogućite zaštitni zid. sudo systemctl disable firewalld sudo systemctl stop firewalld
  • Omogući IP prosljeđivanje. sysctl -w net.ipv4.ip_forward=1
  • Konfigurišite maksimalne vrijednosti za veličine bafera soketa za prijem i slanje. sysctl -w net.core.rmem_max=16777216 sysctl -w net.core.wmem_max=16777216

NAPOMENA
U zavisnosti od radnog opterećenja ili zahtjeva, ove vrijednosti se mogu promijeniti u odnosu na zadane.
8.2 Niska latencija

  • Isključite hiper-nitnost (logičke jezgre).
  • Provjerite je li mrežni uređaj lokalni za numa core 0.
  • Prikačite benchmark na core 0 koristeći taskset -c 0.
  • Isključite irqbalance pomoću naredbi systemctl stop irqbalance ili systemctl disable irqbalance.
  • Pokrenite afinitetnu skriptu za širenje po jezgrama. Pokušajte s lokalnim ili svim jezgrama.
  • Isključi moderiranje prekida. ethtool -C ethX rx-usecs 0 tx-usecs 0 adaptive-rx off adaptive-tx off rxusecs- high 0
  • Ograničite broj redova čekanja da bude jednak broju jezgara na lokalnom socketu (32 u ovom primjeruample). ethtool -L ethX u kombinaciji 32
  • Priključuje prekide samo na lokalni socket (skripta u paketu s izvornim kodom i40e drajvera). set_irq_affinity -X local ethX
  • Koristite utvrđeni benchmark kao što je netperf -t TCP_RR, netperf -t UDP_RR ili NetPipe. netperf -t TCP_RR ili netperf -t UDP_RR
  • Prikači benchmark na jednu jezgru u lokalnom NUMA čvoru. taskset -c

Intel® Ethernet 700 serija
Vodič za podešavanje performansi Linuxa
decembar 2024
Br. dokumenta: 334019, Rev.: 1.2

Dokumenti / Resursi

Podešavanje performansi Intel Ethernet 700 serije za Linux [pdf] Korisnički priručnik
334019, Podešavanje performansi Linuxa za Ethernet 700 seriju, Ethernet 700 serija, Podešavanje performansi Linuxa, Podešavanje performansi, Podešavanje

Reference

Ostavite komentar

Vaša email adresa neće biti objavljena. Obavezna polja su označena *