Intel ® Ethernet 700-serien
Veiledning for justering av Linux ytelse
NEX Cloud Networking Group (NCNG)
Rev. 1.2
desember 2024
Revisjonshistorie
Revisjon | Dato | Kommentarer |
1.2 | desember 2024 | · Lagt til ekstra strømstyringsveiledning. · Lagt til Intel* Turbo Boost. · Lagt til etterslep på nettverksenheter. · Lagt til plattformspesifikke konfigurasjoner og tuning. · Lagt til 4. generasjons Intel* %eon* skalerbare prosessorer. · Lagt til AMD EPYC. · Oppdatert sjekk systemmaskinvarefunksjoner. · Oppdatert iPerf2. · Oppdatert iPerf3. · Oppdaterte Tx/Rx-køer. · Oppdatert avbruddsmoderering. · Oppdatert ringstørrelse. · Oppdatert plattforminnstilling (i40e ikke-spesifikk). · Oppdaterte BIOS-innstillinger. · Oppdatert C-State Control. · Oppdatert CPU-frekvensskalering. · Oppdaterte programinnstillinger. · Oppdaterte operativsystem/kjerneinnstillinger. · Oppdatert IP-videresending. · Oppdatert lav latens. |
august 2023 | Endringer i dette dokumentet inkluderer: · Lagt til relaterte referanser. · Lagt til Sørg for at DDP-pakken lastes inn riktig. · Lagt til iPerf2. · Lagt til iPerf3. · Lagt til netperf. · Oppdatert IRQ-tilhørighet. · Lagt til Tx/Rx-køer. · Oppdatert ringstørrelse. · Lagt til jumborammer. · Lagt til Adapter Bonding. · Lagt til Intel svr-info Tool. |
|
1.0 | mars 2016 | Første utgivelse (Intel Public). |
Introduksjon
Denne veiledningen er ment å gi veiledning for innstilling av miljøer for optimal nettverksytelse ved bruk av en Intel ® Ethernet 700 Series NIC i Linux-miljøer. Den fokuserer på maskinvare-, driver- og operativsystemforhold og innstillinger som kan forbedre nettverksytelsen. Det skal bemerkes at nettverksytelsen kan påvirkes av en rekke påvirkninger utenfor, bare de vanligste og mest dramatiske av disse er dekket i denne veiledningen.
1.1 Relaterte referanser
- Brukerveiledning for alle Intel ® Ethernet-adaptere og -enheter, som støtter Windows og Linux:
Intel ® Ethernet-adaptere og -enheter brukerveiledning - Teknisk dataark:
Intel ® Ethernet-kontroller X710/XXV710/XL710 Datablad - Komplett SW-pakke for alle Intel ® Ethernet-produkter (last ned alle drivere, NVM-er, verktøy osv.):
Intel ® Ethernet Adapter Komplett driverpakke - NVM (ikke-flyktig minne) oppdateringspakke:
Ikke-flyktig minne (NVM) oppdateringsverktøy for Intel ® Ethernet Network Adapter 700 Series - svr-info-verktøy for Linux som fanger opp relevante maskinvare- og programvaredetaljer fra en server: https://github.com/intel/svr-info
- DDP-teknologiveiledning:
Intel ® Ethernet 700 Series Dynamic Device Personalization (DDP) Technology Guide
Første sjekkliste
2.1 Oppdater driver-/fastvareversjoner
Sjekk driver-/fastvareversjonene med ethtool -i ethx.
Oppdater følgende etter behov:
- Oppdater i40e driver
http://sourceforge.net/projects/e1000/files/i40e%20stable/ or https:// downloadcenter.intel.com/ download/24411/Network-Adapter-Driver-for-PCI-E-40- Gigabit-Network-Connections-under-Linux - Oppdater fastvare
https: //downloadcenter.intel.com/download/24769/NVM-Update-Utility-for-Intel- Ethernet-ConvergedNetwork-Adapter-XL710-X710-Series
2.2 Les README
Se etter kjente problemer og få de siste konfigurasjonsinstruksjonene fra README file inkludert i i40e-kildepakken.
2.3 Sjekk at PCI Express (PCIe)-sporet er x8
Noen PCIe x8-spor er faktisk konfigurert som x4-spor. Disse sporene har utilstrekkelig båndbredde for full linjehastighet med enheter med to porter og fire porter. I tillegg, hvis du setter en PCIe v3.0-kompatibel adapter i et PCIe v2.x-spor, kan du ikke få full båndbredde. Programvareenhetsdriveren oppdager denne situasjonen og skriver følgende melding i systemloggen:
PCI-Express-båndbredden som er tilgjengelig for dette kortet er ikke tilstrekkelig for optimal ytelse. For optimal ytelse kreves et x8 PCI-Express-spor.
Hvis denne feilen oppstår, flytt adapteren til et ekte PCIe v3.0 x8-spor for å løse problemet.
2.4 Kontroller systemets maskinvareegenskaper
Ved 10 Gbps, 25 Gbps og 40 Gbps Ethernet er det noen minimumskrav til CPU og system. Generelt bør en moderne serverklasseprosessor og optimal minnekonfigurasjon for plattformen din være tilstrekkelig, men behovene varierer avhengig av arbeidsbelastningen din. Alle minnekanaler skal fylles ut og minneytelsesmodus skal være aktivert i BIOS. Kontroller at CPU- og minnekonfigurasjonen er i stand til å støtte nivået av nettverksytelse du trenger for arbeidsbelastningen.
NOTE
XL710 er en kontroller på 40 GbE. 2 x 40 GbE-adapteren som bruker denne kontrolleren er ikke ment å være en 2 x 40 GbE, men en 1 x 40 GbE med en aktiv backup-port. Når du prøver å bruke linjehastighetstrafikk som involverer begge portene, er den interne svitsjen mettet og den kombinerte båndbredden mellom de to portene begrenses til totalt SO Gbps.
2.4.1 Kjernestartparametere
Hvis Intel® Virtualization Technology for Directed I/O (Intel® VT-d) er aktivert i BIOS, anbefaler Intel at IOMMU er i pass-through-modus for optimal vertsnettverksytelse. Dette eliminerer DMA-overhead på vertstrafikk, samtidig som virtuelle maskiner (VM-er) fortsatt kan ha fordelene med Intel® VT-d. Dette oppnås ved å legge til følgende linje i kjernens oppstartsparametere: fommu-pt.
2.5 Sørg for at DDP-pakken lastes inn riktig
140ea og 140eb basedrivere har ikke direkte støtte for Dynamic Device Personalization (DDP). For å bruke DDP med enheter i 700-serien, en DDP-profffile kan brukes med testpmd-applikasjonen.
For detaljer om DDP profiles, og hvordan du bruker en DDP-profffile med testpmd på enheter i 700-serien, se Intel® Ethernet 700-serien Dynamic Device Personalization (DDP) Technology Guide.
For å bekrefte om en DDP-profffile ble lastet inn:
testpmd> ddp få liste 0 Profile nummeret er: 1
NOTE
Hvis proffenfile nummeret er 0, ingen DDP-pakke er lastet inn. I tilfelle en DDP-pakkeinnlastingsfeil, går enheten som standard til sikker modus og mange ytelsesfunksjoner er utilgjengelige. Hvis det er feil relatert til lasting av DDP-pakken, vil det føre til ytelsesproblemer. For feilsøkingstrinn, se Inte/* Ethernet 700 Series Dynamic Device Personalization (DDP) Technology Guide.
Baseline ytelsesmålinger og innstillingsmetodikk
3.1 Benchmarks for nettverksytelse
Før du starter en tuning-øvelse, er det viktig å ha en god baseline-måling av nettverksytelsen din. Vanligvis i tillegg til å få en innledende måling av ytelsen til den spesifikke applikasjonen/arbeidsbelastningen, er det en god idé å også bruke en standard nettverksytelsesstandard for å bekrefte at nettverksenheten din er i god stand.
For enkeltsystemoptimalisering er netperf eller iperf og NetPIPE alle solide gratisverktøy for åpen kildekode som lar deg stresse en forbindelse og diagnostisere ytelsesproblemer.
Netperf er sterk for både gjennomstrømnings- og latenstesting. NetPIPE er et latensspesifikt verktøy, men kan kompileres for alle slags miljøer.
NOTE
TCP_RR-testen i netperf returnerer latens i en verdi på transaksjoner/sek. Dette er et tur-retur-nummer. Enveisforsinkelsen kan beregnes ved å bruke følgende ligning:
Latens(bruk) = (1⁄2) / [Transaksjoner/sek] * 1,000,000 XNUMX XNUMX
3.1.1 iPerf2
Intel anbefaler iperf2 fremfor iperf3 for de fleste benchmarking-situasjoner på grunn av brukervennligheten og støtten til flere tråder i en enkelt applikasjonsforekomst. Intel anbefaler å kjøre med -P-alternativet med 2-4 tråder for 25G-tilkoblinger og rundt 4-6 tråder for 40G-tilkoblinger.
- For å kjøre enveis trafikk fra klient til server: Serverkommando f.eksample: iperf2 -s
Klientkommando eksample: iperf2 -c -P - For å kjøre toveis trafikk fra klient til server (og omvendt): Serverkommando f.eksample: iperf2 –s –s
Klientkommando eksampde:
iperf2 -c -s -P --full-dupleks ELLER
iperf2 -c -s -P –d
NOTE
Både -full-duplex og -d alternativene i iperf2 lar brukeren utføre toveis testing. Men – full-dupleks-alternativet fokuserer spesifikt på full dupleks-testing.
NOTE
Når du tester iperf2 på tvers av flere serverporter, kan -d-flagget legges til serverkommandoen for å kjøre alle serversesjoner i bakgrunnen fra det samme terminalvinduet. -d-flagget kan også brukes når serverkommandoen er innebygd i en for-loop i et skript.
NOTE
Når du kjører nettverksgjennomstrømningstesten med en enkelt strøm/tråd (f.eksample: P1), kan det hende at AMD-prosessorer ikke gir forventet gjennomstrømning, spesielt NICer med høyere båndbredde (hvis hastigheten er >= 25G båndbredde). Som et resultat er applikasjonsfesting til spesifikke kjerner nødvendig for å oppnå høyere gjennomstrømning. Se Applikasjonsinnstillinger på side 22.
3.1.2 iPerf3
Hvis iperf3 brukes, kreves det flere forekomster av applikasjonen for å ta fordeltage av multitråds-, RSS- og maskinvarekøene. Intel anbefaler å kjøre med 2-4 applikasjonsøkter for 25G-tilkoblinger og rundt 4-6 økter for 40G-tilkoblinger. Hver økt skal spesifisere en unik TCP-portverdi ved å bruke -p-alternativet.
- Slik kjører du enveis trafikk fra klient til server:
Serverkommando eksampde:
iperf3 -s -s
Klientkommando eksampde:
iperf3 -c -s - For å kjøre toveis trafikk fra klient til server (og omvendt):
Serverkommando eksampde:
iperf3 –s –s
Klientkommando eksample: iperf3 -c -s -P –-bidir - For å starte flere forekomster (tråder) av iperf3, er anbefalingen å bruke en for-løkke for å kartlegge tråder til TCP-porter og kjøre iperf3 i bakgrunnen ved å bruke & for å lage flere prosesser parallelt.
Serverkommando eksample, start 4 tråder: port=""; for i i {0..3}; do port=520$i; bash -c "iperf3 -s -p $port &"; ferdig; Klientkommando eksample, start 4 tråder – Send testport=””; for i i {0..3}; do port=520$i; bash -c "iperf3 -c $serverIP -p $port &"; ferdig; Klientkommando eksample, start 4 tråder – Motta testport=””; for i i {0..3}; do port=520$i; bash -c "iperf3 -R -c $serverIP -p $port &"; ferdig; For 40G-tilkoblinger øker du for-løkken for å opprette opptil 6 forekomster/tråder.
NOTE
Når du kjører nettverksgjennomstrømningstesten med en enkelt strøm/tråd (f.eksample: P1), kan det hende at AMD-prosessorer ikke gir forventet gjennomstrømning, spesielt høyere båndbredde
NIC-er (hvis hastigheten er >= 25G båndbredde). Som et resultat er applikasjonsfesting til spesifikke kjerner nødvendig for å oppnå høyere gjennomstrømning. Se Applikasjonsinnstillinger på side 22 og AMD EPYC på side 26.
3.1.3 netperf
Netperf-verktøyet er et sterkt valg for både gjennomstrømnings- og latenstesting.
- TCP_STREAM-testen i netperf måler gjennomstrømningskapasiteten til enheten. Serverkommando eksample: netserver Klientkommando eksample: netperf -t TCP_STREAM -l 30 -H
- TCP_RR-testen i netperf returnerer latens i en verdi på transaksjoner/sekund. Dette er et tur-retur-nummer. Det anbefales å bruke alternativet -T x,x, hvis x er CPU lokal for enheten. Enveisforsinkelsen kan beregnes ved å bruke: Latency(usec)=(1⁄2)/ [Transactions/sek]*1,000,\ Server-kommando example: nettserver
Klientkommando eksample: netperf -t TCP_RR -l 30 -H -T x,x - For å starte flere forekomster (tråder) av netperf, er anbefalingen å bruke en for-loop for å kartlegge tråder til TCP-porter og kjøre netperf i bakgrunnen ved å bruke & for å lage flere prosesser parallelt.
Serverkommando eksample, start 8 tråder:
port=""; for i i {0..7}; do port=520$i; bash -c "netserver -L $serverIP -p $port &"; ferdig;
Klientkommando eksample, start 8 tråder: port=””; for i i {0..7}; do port=520$i; bash -c "netperf -H $serverIP -p $port -t TCP_STREAM -l 30 &"; ferdig;
3.2 Tuning-metodikk
Fokuser på én innstillingsendring om gangen slik at du vet hvilken innvirkning hver endring har på testen din. Jo mer metodisk du er i innstillingsprosessen, desto lettere blir det å identifisere og adressere årsakene til flaskehalser i ytelsen.
Stille inn i40e driverinnstillinger
4.1 IRQ-tilhørighet
Konfigurering av IRQ-tilhørighet slik at avbrudd for forskjellige nettverkskøer knyttes til forskjellige CPU-kjerner kan ha stor innvirkning på ytelsen, spesielt multithread-gjennomstrømningstester.
For å konfigurere IRQ-tilhørighet, stopp irqbalance og bruk deretter enten set_irq_affinity-skriptet fra i40e-kildepakken eller pin køer manuelt. Deaktiver brukerplass IRQ-balansering for å aktivere køfesting:
- systemctl deaktiver irqbalance
- systemctl stoppe irqbalance
Bruke set_irq_affinity-skriptet fra i40e-kildepakken (anbefalt): - Slik bruker du alle kjerner:
[path-to-i40epackage]/scripts/set_irq_affinity -X all ethX - For å bruke bare kjerner på den lokale NUMA-kontakten: [path-to-i40epackage]/scripts/set_irq_affinity -X local ethX
- Du kan også velge en rekke kjerner. Unngå å bruke cpu0 fordi den kjører timeroppgaver. [path-to-i40epackage]/scripts/set_irq_affinity 1-2 ethX
NOTE
Affinitetsskriptet aktiverer Transmit Packet Steering (XPS) som en del av festeprosessen når -x-alternativet er spesifisert. Når XPS er aktivert, anbefaler Intel at du deaktiverer irqbalance, da kjernebalanseren med XPS kan forårsake uforutsigbar ytelse. Affinitetsskriptet deaktiverer XPS når -X-alternativet er spesifisert. Deaktivering av XPS og aktivering av symmetriske køer er fordelaktig for arbeidsbelastninger der best ytelse oppnås når Tx- og Rx-trafikk betjenes på samme køpar.
Konfigurering av symmetriske køer i Linux innebærer å justere nettverksgrensesnittdriverparameterne for å aktivere symmetriske mottakskøer (Rx) og symmetriske overføringskøer (Tx) for støttede nettverkskort.
NOTE
- Symmetriske køer er en avansert nettverksfunksjon, og ikke alle 700-seriens nettverkskort eller drivere støtter dem.
- Sørg for at du har nødvendig driver og maskinvarestøtte før du prøver å konfigurere symmetriske køer.
Følg disse generelle trinnene for å konfigurere symmetriske køer:
- Rediger nettverksgrensesnittkonfigurasjon File: Bruk et tekstredigeringsprogram (f.eksample, vi, nano eller gedit) for å redigere nettverksgrensesnittkonfigurasjonen file. De file er vanligvis plassert under katalogen /etc/sysconfig/network-scripts/ og har et navn som ifcfg-ethX, der ethX er navnet på nettverksgrensesnittet ditt.
- Legg til symmetriske køparametre. Legg til følgende linjer i nettverksgrensesnittkonfigurasjonen file: ETHTOOL_OPTS=”rx-køer 8 tx-køer 8″
- Start nettverkstjenesten på nytt.
Etter å ha gjort endringene, start nettverkstjenesten på nytt for å bruke den nye konfigurasjonen. sudo systemctl start nettverket på nytt
Manuelt:
-
Finn prosessorene som er koblet til hver node ved å bruke: numactl –hardware lscpu
-
Finn bitmaskene for hver av prosessorene:
- Forutsatt kjerner 0-11 for node 0: [1,2,4,8,10,20,40,80,100,200,400,800]
- Finn IRQ-ene som er tilordnet porten som blir tildelt: grep ethX /proc/interrupts og legg merke til IRQ-verdiene for f.eks.ample, 181-192 for de 12 lastede vektorene.
- Ekko SMP-affinitetsverdien i den tilsvarende IRQ-oppføringen. Merk at dette må gjøres for hver IRQ-oppføring: echo 1 > /proc/irq/181/smp_affinity echo 2 > /proc/irq/182/smp_affinity echo 4 > /proc/irq/183/smp_affinity Vis IRQ-tilhørighet:
- For å vise IRQ-tilhørigheten for alle kjerner: /scripts/set_irq_affinity -s ethX
- For å vise bare kjerner på den lokale NUMA-kontakten: /scripts/set_irq_affinity -s lokale ethX
- Du kan også velge en rekke kjerner: /scripts/set_irq_affinity -s 40-0-8,16 ethX
NOTE
Set_irq_affinity-skriptet støtter -s-flagget i i40e-driverversjon 2.16.11 og nyere.
4.2 Tx/Rx-køer
Standard antall køer aktivert for hver Ethernet-port av driveren ved initialisering er lik det totale antallet CPUer som er tilgjengelige på plattformen. Dette fungerer bra for mange plattformer og arbeidsbelastningskonfigurasjoner. På plattformer med høyt kjernetall og/eller høy Ethernet-porttetthet kan imidlertid denne konfigurasjonen forårsake ressursstrid. Derfor kan det i noen tilfeller være nødvendig å endre standarden for hver port i systemet.
Standard antall Tx/Rx-køer kan variere avhengig av den spesifikke modellen og driverversjonen. Antall køer kan justeres ved å bruke ethtool -L kommandoen som er oppført nedenfor.
NOTE
I disse tilfellene anbefaler Intel at du reduserer standard køantall for hver port til ikke mer enn antallet CPUer som er tilgjengelige i NUMA-noden lokalt til adapterporten. I noen tilfeller, når du prøver å balansere ressurser på implementeringer med høyt portantall, kan det være nødvendig å redusere dette tallet ytterligere.
Slik endrer du køkonfigurasjon:
Følgende eksample setter porten til 32 Tx/Rx-køer: ethtool -L ethX kombinert 32
Example utgang:
ethool -l ethX
Kanalparametere for ethX: Forhåndsinnstilte maksimumsverdier:
RX: 96
TX: 96 XNUMX XNUMX
Annet: 1
Sammenlagt: 96
Gjeldende maskinvareinnstillinger:
RX: 0
TX: 0 XNUMX XNUMX
Annet: 1
Sammenlagt: 32
4.3 Avbryt moderering
Adaptiv avbruddsmoderering er på som standard, og er designet for å gi en balansert tilnærming mellom lav CPU-utnyttelse og høy ytelse. Du kan imidlertid prøve å justere avbruddsinnstillingene manuelt for å passe til din brukssituasjon.
Området på 0-235 mikrosekunder gir et effektivt område på 4,310 250,000 til 2 XNUMX avbrudd per sekund. Verdien av rx-μsecs-high kan settes uavhengig av rx-μsecs og tx-μsecs i samme ethtool-kommando, og er også uavhengig av den adaptive avbruddsmodereringsalgoritmen. Den underliggende maskinvaren støtter granularitet i intervaller på XNUMX mikrosekunder, så tilstøtende verdier kan resultere i samme avbruddsfrekvens.
- Slik slår du av moderering av adaptiv avbrudd: ethtool -C ethX adaptive-rx av adaptiv-tx av
- Slik slår du på moderering av adaptiv avbrudd: ethtool -C ethX adaptive-rx på adaptiv-tx på
Et godt sted å starte for generell tuning er 84 μs, eller ~12000 avbrudd/s. Hvis du ser at rx_dropped-tellere kjører under trafikk (ved hjelp av ethtool -S ethX), har du sannsynligvis for treg CPU, ikke nok buffere fra adapterens ringstørrelse (ethtool -G) til å holde pakker i 84 μs eller for lav avbruddsfrekvens.
- For å sette avbruddsmoderering til en fast avbruddshastighet på 84 μs mellom avbrudd (12000 avbrudd/s): ethtool -C ethX adaptive-rx av adaptiv-tx av rx-usecs 84 tx-usecs 84 Den neste verdien du skal prøve, hvis du ikke er maks. på CPU-utnyttelse, er 62 μs. Dette bruker mer CPU, men det betjener buffere raskere, og krever færre deskriptorer (ringstørrelse, ethtool -G).
- For å sette avbruddsmoderasjon til fast avbruddshastighet på 62 brukere mellom avbrudd (16000 avbrudd/s). ethtool -C ethX adaptive-rx av adaptive-tx av rx-usecs 62 tx-usecs 62
Hvis rx_dropped tellere øker under trafikk (ved hjelp av ethtool -S ethX), har du sannsynligvis for treg CPU, ikke nok buffere fra adapterens ringstørrelse (ethtool -G), eller for lav avbruddsfrekvens. Hvis du ikke er maksimert på CPU-utnyttelse, kan du øke avbruddsfrekvensen ved å senke ITR-verdien. Dette bruker mer CPU, men tjenester buffer raskere, og krever færre deskriptorer (ringstørrelse, ethtool -G).
Hvis CPU-en din er på 100 %, anbefales det ikke å øke avbruddsfrekvensen. Under visse omstendigheter, for eksempel en CPU-bundet arbeidsbelastning, vil du kanskje øke μs-verdien for å muliggjøre mer CPU-tid for andre applikasjoner.
Hvis du trenger ytelse med lav latens og/eller har rikelig med CPU å bruke til nettverksbehandling, kan du deaktivere avbruddsmoderering helt, noe som gjør at avbruddene kan avfyres så raskt som mulig. - For å deaktivere avbruddsmoderering ethtool -C ethX adaptive-rx av adaptive-tx av rx-usecs 0 tx-usecs 0
NOTE
Når du kjører med avbruddsmoderering deaktivert, kan avbruddsfrekvensen på hver kø være svært høy. Vurder å inkludere parameteren rx-usec-high for å angi en øvre grense for avbruddsfrekvens. Følgende kommando deaktiverer adaptiv avbruddsmoderering og tillater maksimalt 5 mikrosekunder før den indikerer at mottak eller sending var fullført. I stedet for å resultere i så mange som 200,000 50,000 avbrudd per sekund, begrenser den det totale antallet avbrudd per sekund til 20 5 via parameteren rx-usec-high. # ethtool -C ethX adaptive-rx av adaptiv-tx av rx-usecs-high 5 rx-usecs 80 txusecs 100 Prøv å justere sending/mottak/høyprioritert koalesceringstimer høyere (150/200/25/20) eller lavere (10/5/XNUMX) for å finne den optimale verdien for arbeidet.
4.4 Ringstørrelse
Hvis du ser rx_dropped-tellere i ethtool -S ethX (rx_dropped, rx_dropped.nic), eller mistenker hurtigbuffertrykk med flere aktive køer, kan du prøve å justere ringestørrelsen fra standardverdien. Standardverdien er 512, maks er 4096.
- For å sjekke gjeldende verdier: ethtool -g ethX
Hvis det er mistanke om at mangel på buffering forårsaker fall ved gjeldende avbruddsfrekvens, kan du prøve maksimum først, deretter minimum, og deretter fortsette i et binært søk til du ser optimal ytelse.
Hvis det er mistanke om hurtigbuffertrykk (mange køer aktive) kan reduksjon av buffere fra standard hjelpe Intel ® Data Direct I/O (Intel ® DDIO) til å fungere mer effektivt. Intel anbefaler å prøve 128 eller 256 per kø, og er klar over at en økning i avbruddsfrekvensen via ethtool -C kan være nødvendig for å unngå en økning i rx_dropped. - For å sette ringstørrelse til fast verdi: ethtool -G eth12 rx 256 tx 256
NOTE
For å fikse Rx-pakkefall funnet med ethtool -S ethX|grep drop, vurder å øke ringestørrelsen til 4096. Eksperimenter for å finne den beste innstillingen for arbeidsbelastningen, men se opp for overdreven minnebruk med høyere verdier.
4.5 Strømningskontroll
Lag 2 flytkontroll kan påvirke TCP-ytelsen betraktelig og anbefales deaktivert for de fleste arbeidsbelastninger. Et potensielt unntak er eksplodert trafikk der utbruddene ikke er lange.
Flytkontroll er deaktivert som standard.
- For å aktivere flytkontroll: ethtool -A ethX rx on tx on
- For å deaktivere flytkontroll: ethtool -A ethX rx off tx off
NOTE
Du må ha en koblingspartner med evne til flytkontroll for å kunne aktivere flytkontroll.
4.6 Jumborammer
Når det forventede trafikkmiljøet består av store datablokker som overføres, kan det være fordelaktig å aktivere jumboframe-funksjonen. Støtte for Jumbo Frames aktiveres ved å endre MTU (Maximum Transmission Unit) til en verdi som er større enn standardverdien på 1500. Dette gjør at enheten kan overføre data i større pakker innenfor nettverksmiljøet. Denne innstillingen kan forbedre gjennomstrømningen og redusere CPU-utnyttelsen for store I/O-arbeidsbelastninger. Det kan imidlertid påvirke arbeidsbelastninger som er følsomme for små pakker eller ventetid.
NOTE
Jumborammer eller større MTU-innstilling må være riktig konfigurert på tvers av nettverksmiljøet.
Bruk ifconfig-kommandoen for å øke MTU-størrelsen. For eksample, skriv inn følgende, hvor er grensesnittnummeret: ifconfig mtu 9000 opp
Alternativt kan du bruke ip-kommandoen som følger: ip link set mtu 9000 dev ip-link oppsett dev
Plattformtuning (i40e ikke-spesifikk)
5.1 BIOS-innstillinger
- Aktiver Intel® VT-d for virtualiseringsarbeidsbelastninger.
- Hyper-threading (logiske prosessorer) kan påvirke ytelsen. Eksperimenter med det på eller av for arbeidsmengden din.
- Intel® Turbo Boost lar CPU-kjerner operere med en høyere frekvens enn grunnfrekvensen til CPU. Aktivering av Intel® Turbo Boost kan forbedre ytelsen for mange arbeidsbelastninger, men bruker mer strøm for å holde kjernene på høyere frekvens. Eksperimenter med Turbo Boost av/på for arbeidsmengden din.
NOTE
Turbofrekvenser er ikke garantert hvis plattformen opplever høy generell CPU-utnyttelse. Høyere kjerneturbofrekvenser reduseres etter hvert som den totale CPU-utnyttelsen øker.
5.2 Strømstyring
Strømstyring kan påvirke ytelsen, spesielt ved arbeidsbelastninger med lav ventetid. Hvis ytelse er en høyere prioritet enn å senke strømforbruket, anbefaler Intel at du eksperimenterer med å begrense effekten av strømstyring. Det er mange forskjellige måter å begrense strømstyring på, gjennom operativsystemverktøy, BIOS-innstillinger og kjerneoppstartsparametere. Velg den beste metoden og nivået som passer ditt miljø.
5.2.1 C-State Control
Begrensning av C-tilstandsinngang til CO eller C1 forbedrer ytelsen og øker strømutnyttelsen.
Deaktivering av CPU-pakke C6-statusoppføring kan forbedre nettverksytelsen. Dette øker imidlertid strømforbruket.
Følgende alternativer er tilgjengelige:
- Kontroller C-state-oppføringen dynamisk:
Åpne
/dev/cpu_dma_latency og skriv maksimalt tillatt ventetid til den.
NOTE
Det er et lite program kalt cpudmalatency.c som kan lastes ned fra open source-fellesskapet, kompileres og kjøres fra kommandolinjen for å gjøre akkurat dette.
Følgende eksample tillater fem μs våknetid, og tillater dermed C1-inngang: cpudmalatency 5 &
- Begrens maksimal C-tilstand i kjernens oppstartsinnstillinger:
For Intel-prosessorer: intel_idle.max_cstates=1
For ikke-Intel CPUer: processor.max_cstates=1 - Bruk cpupower-kommandoen til å sjekke og deaktivere CPU C6-tilstand: Sjekk: cpupower-monitor eller cpupower-tomgangsinfo
Deaktiver C6: cpupower idle-set -d3 eller
Deaktiver C-Stater: cpupower idle-set -D0
Merknader:
- Deaktiver C-tilstander på CPU-en hvis serveren har Intel® 4th Gen Intel® Xeon® skalerbar(e) prosessor(er). Når Hyper Threading er aktivert eller deaktivert, forhindrer deaktivering av inaktive tilstander (-D0) kjerner fra å gå inn i laveffekttilstander under inaktive perioder og reduserer ventetiden for CPU-en til å gå mellom inaktiv og aktiv tilstand.
- Strømstyringen til Intel® 4th Gen Intel® Xeon® skalerbar prosessor er ekstremt aggressiv. For å unngå at kjerner går inn i laveffekttilstander, prøv å redusere antall kjerner som er i bruk for å holde dem våkne lenger (ethtool -L kombinert ). Bind også avbrudd til spesifikke kjerner ved å bruke satt irq-affinitet (oftest med -x local eller liste over CPU-kjerner), og sørg for at arbeidsbelastningen kjører på de samme kjernene med taskset eller numactl. Dette forbedrer ytelsen ved å holde kjernene aktive og optimalisere avbruddshåndteringen.
Aktiver C6:
cpupower tomgangssett -d3
Aktiver C-Stater:
cpupower tomgangssett -E
- En annen metode er å bruke det innstilte verktøyet (inkludert med mange Linux-distribusjoner) for å sette en ytelsesprofffile. Disse profiles endre flere OS-innstillinger som kan påvirke ytelsen på tvers av mange applikasjoner. Det har blitt funnet at nettverksgjennomstrømningsprofile gir forbedring for de fleste arbeidsbelastninger.
Sjekke:
tuned-adm aktiv
Sett:
tuned-adm profile nettverksgjennomstrømning
NOTE
Innstilt tjeneste må kjøres for kommandoene ovenfor. For å sjekke/starte på nytt, innstilt: systemctl status innstilt systemctl omstart innstilt
Du kan også nekte enhver C-state-oppføring ved å legge til følgende i kjernens oppstartslinje:
ledig=avstemning - Begrens C-tilstanden gjennom systemets BIOS-strømstyringsinnstillinger, som kan ha en ytelsesprofffile tilgjengelig.
Verktøy som turbostat eller x86_energy_perf_policy kan brukes til å kontrollere eller angi strømstyringsinnstillinger.
5.2.2 PCIe Power Management
Active-State Power Management (ASPM) muliggjør en lavere strømtilstand for PCIe-koblinger når de ikke er i aktiv bruk. Dette kan forårsake høyere ventetid på PCIe-nettverksenheter, så Intel anbefaler at du deaktiverer ASPM for ventetid-sensitive arbeidsbelastninger. Deaktiver ASPM ved å legge til følgende i kjernens oppstartslinje: pcie_aspm=off
5.2.3 CPU-frekvensskalering
CPU-frekvensskalering (eller CPU-hastighetsskalering) er en Linux-strømstyringsteknikk der systemets klokkehastighet justeres i farten for å spare strøm og varme. Akkurat som C-tilstander kan dette forårsake uønsket ventetid på nettverkstilkoblinger.
cpupower-verktøyet kan også brukes til å sjekke og endre CPU-ytelsesstandarder og grenser:
- Sjekk: cpupower monitor eller
- Sett CPUer til ytelsesmodus: cpupower frequency-set -g ytelse
NOTE
Endringer i CPU-frekvensgrenser kan ha innvirkning på mange arbeidsbelastninger og kan deaktivere andre funksjoner, for eksempel CPU-turbomodus.
For å deaktivere CPU-frekvensskalering, deaktiver CPU-strømtjenesten med følgende kommandoer:
systemctl stoppe cpupower.service
systemctl deaktiver cpupower.service
5.2.4 Ytterligere veiledning for strømstyring
Ytterligere detaljer er gitt i denne overskriften på høyt nivåview av mange av strømstyringsfunksjonene i 3. generasjons Intel® Xeon® skalerbare prosessorer, samt veiledning om hvordan disse funksjonene kan integreres på plattformnivå: https://networkbuilders.intel.com/solutionslibrary/power-management-technologyoverview-technology-guide
5.3 Intel® Turbo Boost
Intel® Turbo Boost gjør prosessoren raskere når det trengs, men kan forbruke ekstra strøm. Å slå av Turbo Boost holder prosessoren på en jevn hastighet, og gir deg et konsistent ytelsesnivå for spesifikke arbeidsbelastninger.
5.4 Brannmurer
Brannmurer kan påvirke ytelsen, spesielt latency ytelse.
Deaktiver iptables/brannmur hvis ikke nødvendig.
5.5 Applikasjonsinnstillinger
Ofte er ikke en enkelt tråd (som tilsvarer en enkelt nettverkskø) tilstrekkelig for å oppnå maksimal båndbredde. Noen plattformarkitekturer, som AMD, har en tendens til å slippe flere Rx-pakker med en enkelt tråd sammenlignet med plattformer med Intel-baserte prosessorer.
Vurder å bruke verktøy som taskset eller numactl for å feste applikasjoner til NUMA-noden eller CPU-kjerner lokalt på nettverksenheten. For noen arbeidsbelastninger som lagrings-I/O, gir det fordeler å flytte applikasjonen til en ikke-lokal node.
Eksperimenter med å øke antallet tråder som brukes av applikasjonen din hvis mulig.
5.6 Kjerneversjon
De fleste moderne in-box-kjerner er rimelig godt optimalisert for ytelse, men avhengig av din brukssituasjon kan oppdatering av kjernen gi forbedret ytelse. Nedlasting av kilden lar deg også aktivere/deaktivere visse funksjoner før du bygger kjernen.
5.7 Operativsystem/kjerneinnstillinger
Se veiledningene for justering av operativsystemet, for eksempel Red Hat Enterprise Linux Network Performance Tuning Guide, for mer innsikt i generell justering av operativsystemet.
Noen vanlige parametere for å stille inn er oppført i tabellen nedenfor. Merk at disse bare er foreslåtte startpunkter, og å endre dem fra standardinnstillingene kan øke ressursene som brukes på systemet. Selv om økning av verdiene kan bidra til å forbedre ytelsen, er det nødvendig å eksperimentere med forskjellige verdier for å finne ut hva som fungerer best for et gitt system, arbeidsbelastning og trafikktype.
Kjerneparametrene kan konfigureres ved å bruke sysctl-verktøyet i Linux som angitt nedenfor.
Til view standardverdiene for rmem og wmem på systemet:
sysctl net.core.rmem_default
sysctl net.core.wmem_default
Sett verdiene til maks (16 MB):
sysctl -w net.core.rmem_max=16777216
sysctl -w net.core.wmem_max=16777216
Socketbufferstørrelser, også kjent som mottaksbuffer (rmem) og overføringsbuffer (wmem), er systemparametere som spesifiserer mengden minne som er reservert for innkommende og utgående nettverkstrafikk.
Å kjøre sysctl uten -w-argumentet viser parameteren med gjeldende innstilling.
Stabelinnstilling | Beskrivelse |
net.core.rmem_default | Standard mottaksvindustørrelse |
net.core.wmem_default | Standard overføringsvindustørrelse |
net.core.rmem_max | Maksimal størrelse på mottaksvinduet |
net.core.wmem_max | Maksimal overføringsvindustørrelse |
net.core.optmem_max | Maksimal tilleggsminnebuffere |
net.core.netdev_max_backlog | Etterslep av ubehandlede pakker før kjernen begynner å slippe |
net.ipv4.tcp_rmem | Minnereserver for TCP-lesebuffere |
net.ipv4.tcp_wmem | Minnereserver for TCP sende buffere |
Kjerne, nettverksstabel, minnebehandler, CPU-hastighet og strømstyringsparametere kan ha stor innvirkning på nettverksytelsen. En vanlig anbefaling er å søke om nettverksgjennomstrømning profile ved å bruke den innstilte kommandoen. Dette endrer noen få OS-innstillinger for å gi preferanse til nettverksapplikasjoner.
Sjekke:
tuned-adm aktiv
Sett:
tuned-adm profile nettverksgjennomstrømning
5.8 Nettverksenhetsetterslep
Denne funksjonen bidrar til å forbedre nettverksytelsen ved å administrere innkommende trafikk effektivt, redusere pakketap, senke ventetiden og øke gjennomstrømningen. Dette fører til en bedre brukeropplevelse og raskere systemrespons.
Som standard er det aktivert i de fleste Linux-operativsystemer. Slik kontrollerer du standardverdien:
sysctl net.core.netdev_max_backlog
Maksimalverdien for netdev_max_backlog kan variere avhengig av faktorer som kjerneversjon, maskinvare, minne og arbeidsbelastning. I mange tilfeller blir 8192 sett på som en god verdi. sysctl -w net.core.netdev_max_backlog=8192
5.9 Plattformspesifikke konfigurasjoner og innstilling
5.9.1 4. generasjon Intel® Xeon® skalerbare prosessorer
Strømstyringen til Intel® 4. generasjons Intel® Xeon® skalerbar prosessor er ekstremt aggressiv sammenlignet med 3. generasjons Intel® Xeon® skalerbare prosessorer. For å unngå at kjerner går inn i laveffekttilstander, prøv å redusere antall kjerner som er i bruk for å holde dem våkne lenger.
Anbefalte Bios-innstillinger for høyeste ytelse
- Hyper-threading aktivere/deaktivere (basert på arbeidsbelastningskrav og ytelsesmål) på CPU.
- Still inn systemproffenfile til ytelse for maksimal ytelse.
NOTE
Dette gir høyere strømforbruk - Sett CPU-strømstyring til Maksimal ytelse for å prioritere maksimal CPU-ytelse fremfor strømeffektivitet.
- Aktiver Turbo Boost. Deaktivering av Turbo Boost i system-BIOS-innstillingene forhindrer vanligvis CPU-en i å øke klokkehastigheten dynamisk utover basisfrekvensen.
- NOTE
Deaktivering av Turbo Boost kan være egnet for visse brukstilfeller der konsistent ytelse, strømeffektivitet eller termisk styring prioriteres fremfor maksimal ytelse. - Slå av funksjonen Single Root I/O Virtualization (SR-IOV) hvis systemet ikke bruker virtualiseringsteknologi.
- Deaktiver C-tilstander for å instruere CPU-en til å forbli aktiv og forhindre å gå inn i dypere inaktive tilstander.
- Deaktiver C1E for å sikre at CPU-en forblir aktiv og ikke går inn i C1E-inaktiv tilstand.
- Still inn kjernefrekvensen til maksimum for å instruere systemet til å operere med den høyeste tilgjengelige frekvensen.
- På Dell-plattformer, sett Multiple APIC Description Table (MADT) kjerneemulering til Linear (eller Round-Robin avhengig av BIOS) for å gi en klar og forutsigbar kartlegging av CPU-kjerner.
Anbefalte OS-nivåjusteringer for optimalisert ytelse
- Sett CPU-frekvensskaleringsregulator til ytelse. cpupower frequency-set -g ytelse cpupower frequency-info
- Deaktiver C-Stater. cpupower tomgangssett -D0
- Sett kjerne Rx (rmem) og Tx (wmem) buffere til maksimal verdi. sysctl -w net.core.rmem_max=16777216 sysctl -w net.core.wmem_max=16777216
- Angi etterslep på nettverksenheter. sysctl -w net.core.netdev_max_backlog=8192
- Sett innstilt profile (arbeidsmengdeavhengig for gjennomstrømning/latency).
tuned-adm profile nettverksgjennomstrømning
Anbefalte justeringer av adapternivå for optimalisert ytelse
- Begrens antall køer som skal brukes for programtrafikk. Bruk minimum antall køer som kreves for å holde de tilknyttede CPU-kjernene aktive for å forhindre at de går inn i dypere inaktive tilstander (juster for arbeidsbelastningen): ethtool -L sammenlagt 32
- Angi avbruddsmodereringshastigheter. ettool -C adaptive-rx av adaptiv-tx av rx-usecs-high 50 rx-usecs 50 tx-usecs 50
Prøv å justere sending/mottak/høyprioritert koalesceringstimer høyere (80/100/150/200) eller lavere (25/20/10/5) for å finne optimal verdi for arbeidsbelastningen. - Still inn Rx/Tx-ringstørrelsene. ettool -G rx 4096 tx 4096
NOTE
Hvis du ser Rx-pakken faller med ethtool -S| grep drop, prøv å redusere ringstørrelsen til <4096. Prøv å finne den optimale verdien for arbeidsbelastningen der pakker ikke slippes. - Still inn IRQ-tilhørighet. Bruk kjerner lokalt til NIC, eller spesifikk kjernetilordning (der # kjerner er lik antall køer satt i 1 på side 26. systemctl stop irqbalance set_irq_affinity -X local ELLER set_irq_affinity -X
5.9.2 AMD EPYC
AMD EPYC-prosessorer er kraftige CPUer laget for servere og datasentre, bygget på AMDs Zen-arkitektur. Innstillingene nedenfor er fra AMDs 4. generasjons EPYC-serie.
Anbefalte BIOS-innstillinger for høyeste ytelse
- Aktiver tilpasset modus for å tillate brukere å justere CPU-ytelse, strømforbruk og andre innstillinger. Dette hjelper til med å finjustere systemet for den beste balansen mellom ytelse og energieffektivitet.
- Aktiver kjerneytelsesøkning for å la CPU automatisk øke hastigheten for å håndtere mer intensive oppgaver, og forbedre den generelle ytelsen.
- Deaktiver global C-state-kontroll for å forhindre at CPU-en går inn i dypere strømsparingstilstander kjent som C-tilstander, som kan opprettholde respons.
NOTE
Deaktivering av C-tilstander kan forårsake ekstra strømforbruk og øke termiske temperaturer. Overvåk begge for arbeidsmengden. - Aktiver/deaktiver Simultaneous Multithreading (SMT) på CPU, basert på arbeidsbelastningskrav og ytelsesmål. SMT tilsvarer Hyper Threading på Intel CPUer.
NOTE
For optimalisert ytelse, se Tuning i40e-driverinnstillinger på side 13 og Plattformtuning (i40e Non-Specific) på side 19 for anbefalt OS- og adapternivåinnstilling.
Adapterliming
Linux-binding er en kraftig funksjon som betydelig kan forbedre nettverksytelsen, redundansen og feiltoleransen i servermiljøer. Det er imidlertid viktig å merke seg at det krever kompatibel nettverksmaskinvare og riktig konfigurasjon på både serveren og svitsjen for å fungere ordentlig.
Bonding-driveren i Linux lar deg samle flere fysiske nettverksgrensesnitt til et bundet grensesnitt. Dette bundne grensesnittet vises som et enkelt virtuelt nettverksgrensesnitt til operativsystemet og applikasjonene.
NOTE
Bindingen er et logisk grensesnitt, så det er ikke mulig å sette CPU-affinitet direkte på bindingsgrensesnittet (f.eks.ample, obligasjon0). Det vil si at den ikke har noen direkte kontroll over avbruddshåndtering eller CPU-tilhørighet. CPU-affinitet må konfigureres for de underliggende grensesnittene som er en del av bindingen.
Bonding gir flere driftsmåter, hver med sine egne egenskaper.
Modus | Type |
0 | Round Robin |
1 | Aktiv sikkerhetskopiering |
2 | XOR |
3 | Kringkaste |
4 | LACP |
5 | Send lastbalanse |
6 | Adaptiv belastningsbalanse |
Det er forskjellige metoder for å lage en binding i Linux. En av de vanligste metodene er å bruke nettverkskonfigurasjon files (eksample, /etc/network/ interfaces eller /etc/sysconfig/network-scripts/ifcfg-bondX).
Konfigurasjon ved hjelp av nettverkskonfigurasjon Files
De følgende trinnene skaper binding gjennom nettverkskonfigurasjonen files.
- Velg to eller flere NIC-porter for binding (f.eksample, ethX og ethY)
- Åpne NIC-konfigurasjon Files under /etc/sysconfig/network-scripts/ for det nødvendige NIC-grensesnittet (f.eks.ample, vi ifcfg-ethX og vi ifcfg-ethY) og legg til følgende tekst:
MASTER=bondN [Merk: N er et heltall for å nevne obligasjonsnummeret.] SLAVE=ja - Lag et obligasjonsnettverksskript file ved å bruke vi /etc/sysconfig/networkscripts/ifcfg-bondN og skriv inn følgende tekst:
DEVICE=bondN [Merk: N er et heltall for å nevne obligasjonsnummeret] ONBOOT=ja USERCTL=nei BOOTPROTO=dhcp (eller) ingen
IPADDR=200.20.2.4 [påkrevd hvis BOOTPROTO=ingen] NETMASK=255.255.255.0 [påkrevd hvis BOOTPROTO=ingen] NETTVERK=200.20.2.0 [påkrevd hvis BOOTPROTO=ingen] BROADCAST [påkrevd.200.20.2.255=1 BOOTPROTO=ingen] BONDING_OPTS=”modus=100 miimon=XNUMX″
NOTE
Modus kan være et hvilket som helst heltall fra 0 til 6 basert på kravet. - Start nettverkstjenestene på nytt ved å bruke omstart av tjenestenettverk eller systemctl omstart NetworkManager.service
Feilsøking av ytelse
7.1 CPU-bruk
Sjekk CPU-bruk per kjerne mens arbeidsbelastningen kjører.
Merk at utnyttelse per kjerne er mer relevant for ytelsen enn total CPU-utnyttelse siden den gir en ide om CPU-bruken per nettverkskø. Hvis du bare har noen få tråder som kjører nettverkstrafikk, kan det hende du bare har noen få kjerner som brukes. Imidlertid, hvis disse kjernene er på 100 %, er nettverksgjennomstrømningen sannsynligvis begrenset av CPU-bruk, og det er på tide å utføre følgende:
- Still inn IRQ-moderering/ringestørrelse som beskrevet i Avbruddsmoderering.
- Øk antall applikasjonstråder for å spre CPU-belastningen over flere kjerner. Hvis alle kjerner kjører på 100 %, kan applikasjonen din være CPU-bundet i stedet for nettverksbundet.
Vanlige tilgjengelige verktøy:
- topp
— Trykk 1 for å utvide listen over CPUer og sjekke hvilke som brukes.
— Legg merke til utnyttelsesgraden.
— Legg merke til hvilke prosesser som er oppført som mest aktive (øverst på listen). - mpstat
Følgende eksampkommandolinjen ble testet på Red Hat Enterprise Linux 7.x.
Den viser CPU-bruk per kjerne (ved å finne den totale prosentandelen ledig og trekke fra 100) og fremhever verdiene over 80 % i rødt. mpstat -P ALL 1 1 | grep -v Gjennomsnittlig | hale -n +5 | hode -n -1 | awk '{ print (100-$13)}' | egrep -color=alltid '[^\.][8-9][0-9][\.]?.*|^[8-9][0-9][\.]?.*| 100|' | søyle - perf top Se etter hvor syklusene blir brukt.
7.2 i40e tellere
i40e-driveren gir en lang liste med tellere for grensesnittfeilsøking og overvåking gjennom ethtool -S ethX-kommandoen. Det kan være nyttig å se på utdataene mens en arbeidsbelastning kjører og/eller sammenligne tellerverdiene før og etter en arbeidsbelastningskjøring.
- For å få en full dump av i40e-tellere: ethtool -S ethX
- For å se bare tellere som ikke er null: watch -d (ethtool -S ethX) | egrep -v :\ 0 | søyle
Noen ting å se etter: - rx_dropped betyr at CPU ikke betjener buffere raskt nok.
- port.rx_dropped betyr at noe ikke er raskt nok i sporet/minnet/systemet.
7.3 Nettverkstellere
Sjekk netstat -s før/etter en arbeidsbelastningskjøring.
Netstat samler inn nettverksinformasjon fra alle nettverksenheter i systemet. Derfor kan resultatene bli påvirket fra andre nettverk enn nettverket som testes. Utdataene fra netstat -s kan være en god indikator på ytelsesproblemer i Linux-operativsystemet eller -kjernen. Se veiledningene for justering av operativsystemet, for eksempel Red Hat Enterprise Linux Network Performance Tuning Guide, for mer innsikt i generell justering av operativsystemet.
7.4 Systemlogger
Sjekk systemloggene for feil og advarsler (/var/log/messages, dmesg).
7.5 Intel svr-info-verktøy
Intel tilbyr et svr-info-verktøy (se https://github.com/intel/svr-info) for Linux som fanger opp relevante maskinvare- og programvaredetaljer fra en server. svr-info-utdata kan være svært nyttig for å identifisere systemflaskehalser eller innstillinger/justeringer som ikke er optimalisert for arbeidsbelastningen. Når du åpner et støttedeksel med Intel for Ethernet-relaterte ytelsesproblemer, sørg for å inkludere svr-info-utgang (tekst file) for hver Linux-server i testkonfigurasjonen.
- Last ned og installer svr-info:
wget -qO- https://github.com/intel/svr-info/releases/latest/download/svrinfo.tgz| tar xvz cd svr-info
./svr-info
> vertsnavn.txt - Samle resultatet:
./svr-info > vertsnavn.txt - Legg ved én tekst (.txt) file for hver server til din Intel-støttesak for analyse.
Anbefalinger for vanlige ytelsesscenarier
8.1 IP-videresending
- Oppdater kjernen.
Noen nylige in-distro-kjerner har forringet rutingytelse på grunn av kjerneendringer i rutingkoden som starter med fjerning av ruting-cachen på grunn av sikkerhet. Nylige ut-av-distro-kjerner bør ha patcher som reduserer ytelseseffekten av disse endringene og kan gi forbedret ytelse. - Deaktiver hyper-threading (logiske kjerner).
- Rediger kjernens oppstartsparametere.
— Tving iommu av (intel_iommu=av eller iommu=av) fra kjernens oppstartslinje med mindre nødvendig for virtualisering
— Slå av strømstyring: processor.max_cstates=1 idle=poll pcie_aspm=av - Begrens antall køer til å være lik antall kjerner på den lokale kontakten (12 i denne eks.ample). ethtool -L ethX kombinert 12
- Pin avbrudd kun til lokal kontakt. set_irq_affinity -X local ethX OR set_irq_affinity -X local ethX
NOTE
-X eller -x kan brukes avhengig av arbeidsmengden. - Endre Tx- og Rx-ringstørrelsene etter behov. En større verdi krever flere ressurser, men kan gi bedre videresendingspriser. ethtool -G ethX rx 4096 tx 4096
- Deaktiver GRO ved ruting.
På grunn av et kjent kjerneproblem må GRO slås av ved ruting/videresending. ethtool -K ethX gro off hvor ethX er Ethernet-grensesnittet som skal modifiseres. - Deaktiver adaptiv avbruddsmoderering og angi en statisk verdi. ethtool -C ethX adaptive-rx av adaptiv-tx av ethtool -C ethX rx-usecs 64 tx-usecs 64
NOTE
Avhengig av type prosessor og arbeidsbelastning, kan koalesceringsparametrene for RX og TX justeres for forbedret ytelse (eller mindre rammetap).
- Deaktiver brannmuren. sudo systemctl deaktiver brannmur sudo systemctl stoppe brannmur
- Aktiver IP-videresending. sysctl -w net.ipv4.ip_forward=1
- Konfigurer maksimale verdier for bufferstørrelser for mottak og send socket. sysctl -w net.core.rmem_max=16777216 sysctl -w net.core.wmem_max=16777216
NOTE
Avhengig av arbeidsmengden eller kravet, kan disse verdiene endres fra standard.
8.2 Lav ventetid
- Slå av hypertråding (logiske kjerner).
- Sørg for at nettverksenheten er lokal for numa core 0.
- Fest referansen til kjerne 0 ved hjelp av oppgavesett -c 0.
- Slå av irqbalance ved å bruke systemctl stop irqbalance eller systemctl deaktiver irqbalance
- Kjør affinitetsskriptet for å spre det på tvers av kjerner. Prøv enten lokalt eller alle.
- Slå av avbruddsmoderering. ethtool -C ethX rx-usecs 0 tx-usecs 0 adaptive-rx av adaptive-tx av rxusecs- høy 0
- Begrens antall køer til å være lik antall kjerner på den lokale kontakten (32 i denne eks.ample). ethtool -L ethX kombinert 32
- Pin-avbrudd kun til lokal kontakt (skript pakket med i40e-driverkilde). set_irq_affinity -X lokal ethX
- Bruk en etablert benchmark som netperf -t TCP_RR, netperf -t UDP_RR eller NetPipe. netperf -t TCP_RR eller netperf -t UDP_RR
- Fest benchmark til en enkelt kjerne i den lokale NUMA-noden. oppgavesett -c
Intel ® Ethernet 700-serien
Veiledning for justering av Linux ytelse
desember 2024
Dok. nr.: 334019, Rev.: 1.2
Dokumenter / Ressurser
![]() |
Intel Ethernet 700 Series Linux Ytelsesjustering [pdfBrukerhåndbok 334019, Ethernet 700-serien Linux ytelsesjustering, Ethernet 700-serien, Linux ytelsesjustering, ytelsesjustering, tuning |