Intel® Ethernet 700-serien
Vejledning til justering af Linux-ydelse
NEX Cloud Networking Group (NCNG)
Rev. 1.2
december 2024
Revisionshistorie
Revision | Dato | Kommentarer |
1.2 | december 2024 | · Tilføjet yderligere strømstyringsvejledning. · Tilføjet Intel* Turbo Boost. · Tilføjet netværksenhedsefterslæb. · Tilføjet platform-specifikke konfigurationer og tuning. · Tilføjet 4. generation af Intel* %eon* skalerbare processorer. · Tilføjet AMD EPYC. · Opdateret Check System Hardware Capabilities. · Opdateret iPerf2. · Opdateret iPerf3. · Opdaterede Tx/Rx-køer. · Opdateret afbrydelsesmoderering. · Opdateret ringstørrelse. · Opdateret platformtuning (i40e ikke-specifik). · Opdaterede BIOS-indstillinger. · Opdateret C-State Control. · Opdateret CPU-frekvensskalering. · Opdaterede programindstillinger. · Opdaterede operativsystem/kerneindstillinger. · Opdateret IP-videresendelse. · Opdateret lav latens. |
august 2023 | Ændringer til dette dokument omfatter: · Tilføjet relaterede referencer. · Tilføjet Sørg for, at DDP-pakken indlæses korrekt. · Tilføjet iPerf2. · Tilføjet iPerf3. · Tilføjet netperf. · Opdateret IRQ Affinity. · Tilføjet Tx/Rx-køer. · Opdateret ringstørrelse. · Tilføjet jumborammer. · Tilføjet Adapter Bonding. · Tilføjet Intel svr-info-værktøj. |
|
1.0 | marts 2016 | Første udgivelse (Intel Public). |
Indledning
Denne vejledning er beregnet til at give vejledning til tuning af miljøer til optimal netværksydelse ved brug af en Intel ® Ethernet 700 Series NIC'er i Linux-miljøer. Den fokuserer på hardware, driver og operativsystemforhold og indstillinger, der kan forbedre netværkets ydeevne. Det skal bemærkes, at netværkets ydeevne kan blive påvirket af en række udefrakommende påvirkninger, kun de mest almindelige og dramatiske af disse er dækket i denne guide.
1.1 Relaterede referencer
- Brugervejledning til alle Intel ® Ethernet-adaptere og -enheder, der understøtter Windows og Linux:
Brugervejledning til Intel ® Ethernet-adaptere og -enheder - Teknisk datablad:
Intel ® Ethernet Controller X710/XXV710/XL710 Datablad - Komplet SW-pakke til alle Intel ® Ethernet-produkter (download alle drivere, NVM'er, værktøjer osv.):
Intel ® Ethernet Adapter Komplet driverpakke - NVM-opdateringspakke (Non-Volatil Memory):
Ikke-flygtig hukommelse (NVM) Update Utility til Intel ® Ethernet Network Adapter 700 Series - svr-info værktøj til Linux, der fanger relevante hardware- og softwaredetaljer fra en server: https://github.com/intel/svr-info
- DDP-teknologivejledning:
Intel ® Ethernet 700 Series Dynamic Device Personalization (DDP) Technology Guide
Indledende tjekliste
2.1 Opdater driver/firmwareversioner
Tjek driver/firmwareversionerne ved hjælp af ethtool -i ethx.
Opdater følgende efter behov:
- Opdater 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 - Opdater firmware
https: //downloadcenter.intel.com/download/24769/NVM-Update-Utility-for-Intel- Ethernet-ConvergedNetwork-Adapter-XL710-X710-Series
2.2 Læs README
Tjek for kendte problemer og få de seneste konfigurationsinstruktioner fra README file inkluderet i i40e-kildepakken.
2.3 Kontroller, at din PCI Express (PCIe)-slot er x8
Nogle PCIe x8-slots er faktisk konfigureret som x4-slots. Disse slots har utilstrækkelig båndbredde til fuld linjehastighed med dual port og quad port enheder. Derudover, hvis du sætter en PCIe v3.0-kompatibel adapter i en PCIe v2.x-slot, kan du ikke få fuld båndbredde. Softwareenhedsdriveren registrerer denne situation og skriver følgende meddelelse i systemloggen:
PCI-Express båndbredde tilgængelig for dette kort er ikke tilstrækkelig til optimal ydeevne. For optimal ydeevne kræves et x8 PCI-Express slot.
Hvis denne fejl opstår, skal du flytte din adapter til en ægte PCIe v3.0 x8-slot for at løse problemet.
2.4 Kontroller systemhardwarefunktioner
Ved 10 Gbps, 25 Gbps og 40 Gbps Ethernet er der nogle minimumskrav til CPU og system. Generelt burde en moderne serverklasseprocessor og optimal hukommelseskonfiguration til din platform være tilstrækkelig, men behovene varierer afhængigt af din arbejdsbyrde. Alle hukommelseskanaler skal være udfyldt, og hukommelsesydelsestilstand skal være aktiveret i BIOS. Bekræft, at din CPU og hukommelseskonfiguration er i stand til at understøtte det niveau af netværksydelse, du har brug for til din arbejdsbyrde.
NOTE
XL710 er en 40 GbE controller. 2 x 40 GbE-adapteren, der bruger denne controller, er ikke beregnet til at være en 2 x 40 GbE, men en 1 x 40 GbE med en aktiv backup-port. Når du forsøger at bruge linjehastighedstrafik, der involverer begge porte, er den interne switch mættet, og den kombinerede båndbredde mellem de to porte er begrænset til i alt SO Gbps.
2.4.1 Kernel Boot Parameters
Hvis Intel® Virtualization Technology for Directed I/O (Intel® VT-d) er aktiveret i BIOS, anbefaler Intel, at IOMMU er i pass-through-tilstand for optimal værtsnetværksydelse. Dette eliminerer DMA-overhead på værtstrafik, samtidig med at virtuelle maskiner (VM'er) stadig har fordelene ved Intel® VT-d. Dette opnås ved at tilføje følgende linje til kernestartparametrene: fommu-pt.
2.5 Sørg for, at DDP-pakken indlæses korrekt
140ea og 140eb basisdrivere har ikke direkte understøttelse af Dynamic Device Personalization (DDP). For at bruge DDP med enheder i 700-serien, en DDP-profile kan anvendes med testpmd-applikationen.
For detaljer om DDP profiles, og hvordan man anvender en DDP profile med testpmd på enheder i 700-serien, se Intel® Ethernet 700-seriens Dynamic Device Personalization (DDP) Technology Guide.
For at kontrollere, om en DDP profile blev indlæst med succes:
testpmd> ddp få liste 0 Profile nummeret er: 1
NOTE
Hvis profile nummer er 0, ingen DDP-pakke er indlæst. I tilfælde af en DDP-pakkeindlæsningsfejl går enheden som standard til sikker tilstand, og mange ydeevnefunktioner er ikke tilgængelige. Hvis der er fejl relateret til indlæsning af DDP-pakken, vil det forårsage problemer med ydeevnen. For fejlfindingstrin henvises til Inte/* Ethernet 700 Series Dynamic Device Personalization (DDP) Technology Guide.
Baseline præstationsmålinger og tuningmetode
3.1 Benchmarks for netværkets ydeevne
Før du begynder en tuning-øvelse, er det vigtigt at have en god baseline-måling af dit netværks ydeevne. Normalt udover at få en indledende måling af din specifikke applikations/arbejdsbelastnings ydeevne, er det en god idé også at bruge et standardnetværks ydeevne benchmark for at verificere, at din netværksenhed er i en god tilstand.
Til enkelt systemoptimering er netperf eller iperf og NetPIPE alle solide opensource gratis værktøjer, der sætter dig i stand til at understrege en forbindelse og diagnosticere ydeevneproblemer.
Netperf er stærk til både gennemløbs- og latenstest. NetPIPE er et latensspecifikt værktøj, men kan kompileres til enhver form for miljø.
NOTE
TCP_RR-testen i netperf returnerer latency i en værdi af transaktioner/sek. Dette er et returnummer. Envejsforsinkelsen kan beregnes ved hjælp af følgende ligning:
Latency(usec) = (1⁄2) / [Transaktioner/sek.] * 1,000,000
3.1.1 iPerf2
Intel anbefaler iperf2 frem for iperf3 til de fleste benchmarking-situationer på grund af den nemme brug og understøttelse af flere tråde i en enkelt applikationsinstans. Intel anbefaler at køre med -P-indstillingen med 2-4 tråde til 25G-forbindelser og omkring 4-6 tråde til 40G-forbindelser.
- For at køre ensrettet trafik fra klient til server: Serverkommando f.eksample: iperf2 -s
Klientkommando f.eksample: iperf2 -c -P - For at køre tovejstrafik fra klient til server (og omvendt): Serverkommando f.eksample: iperf2 –s –s
Klientkommando f.eksampdet:
iperf2 -c -s -P --fuld duplex ELLER
iperf2 -c -s -P –d
NOTE
Både -full-duplex og -d mulighederne i iperf2 giver brugeren mulighed for at udføre tovejstest. Men – fuld dupleks-indstillingen fokuserer specifikt på fuld dupleks-test.
NOTE
Når du tester iperf2 på tværs af flere serverporte, kan flaget -d tilføjes til serverkommandoen for at køre alle serversessioner i baggrunden fra det samme terminalvindue. Flaget -d kan også bruges, når serverkommandoen er indlejret i en for-loop i et script.
NOTE
Når du kører netværksgennemstrømningstesten med en enkelt stream/tråd (f.eksample: P1), giver AMD-processorer muligvis ikke forventet gennemløb, især NIC'er med højere båndbredde (hvis hastigheden er >= 25G båndbredde). Som følge heraf kræves applikationsfastgørelse til specifikke kerner for at opnå højere gennemløb. Se Applikationsindstillinger på side 22.
3.1.2 iPerf3
Hvis iperf3 bruges, kræves der flere forekomster af applikationen for at tage fordeltage af multitråds-, RSS- og hardwarekøerne. Intel anbefaler at køre med 2-4 applikationssessioner for 25G-forbindelser og omkring 4-6 sessioner for 40G-forbindelser. Hver session skal angive en unik TCP-portværdi ved hjælp af -p-indstillingen.
- Sådan kører du envejstrafik fra klient til server:
Serverkommando f.eksampdet:
iperf3 -s -s
Klientkommando f.eksampdet:
iperf3 -c -s - Sådan kører du tovejstrafik fra klient til server (og omvendt):
Serverkommando f.eksampdet:
iperf3 –s –s
Klientkommando f.eksample: iperf3 -c -s -P –-bidir - For at starte flere forekomster (tråde) af iperf3, er anbefalingen at bruge en for-loop til at kortlægge tråde til TCP-porte og køre iperf3 i baggrunden ved hjælp af & for at oprette flere processer parallelt.
Serverkommando f.eksample, start 4 tråde: port=""; for i i {0..3}; do port=520$i; bash -c "iperf3 -s -p $port &"; gjort; Klientkommando f.eksample, start 4 tråde – Send testport=””; for i i {0..3}; do port=520$i; bash -c "iperf3 -c $serverIP -p $port &"; gjort; Klientkommando f.eksample, start 4 tråde – Modtag testport=””; for i i {0..3}; do port=520$i; bash -c "iperf3 -R -c $serverIP -p $port &"; gjort; For 40G-forbindelser skal du øge for-løkken for at oprette op til 6 forekomster/tråde.
NOTE
Når du kører netværksgennemstrømningstesten med en enkelt stream/tråd (f.eksample: P1), giver AMD-processorer muligvis ikke forventet gennemløb, især højere båndbredde
NIC'er (hvis hastigheden er >= 25G båndbredde). Som følge heraf kræves applikationsfastgørelse til specifikke kerner for at opnå højere gennemløb. Se Applikationsindstillinger på side 22 og AMD EPYC på side 26.
3.1.3 netperf
Netperf-værktøjet er et stærkt valg til både gennemløbs- og latenstest.
- TCP_STREAM-testen i netperf måler enhedens gennemløbskapacitet. Serverkommando f.eksample: netserver Klientkommando example: netperf -t TCP_STREAM -l 30 -H
- TCP_RR-testen i netperf returnerer latens i en værdi på transaktioner/sekund. Dette er et returnummer. Det anbefales at bruge indstillingen -T x,x, hvis x er CPU lokal for enheden. Envejsforsinkelsen kan beregnes ved hjælp af: Latency(usec)=(1⁄2)/ [Transaktioner/sek]*1,000,\ Serverkommando example: netserver
Klientkommando f.eksample: netperf -t TCP_RR -l 30 -H -T x,x - For at starte flere forekomster (tråde) af netperf, er anbefalingen at bruge en for-loop til at kortlægge tråde til TCP-porte og køre netperf i baggrunden ved hjælp af & for at oprette flere processer parallelt.
Serverkommando f.eksample, start 8 tråde:
port=""; for i i {0..7}; do port=520$i; bash -c "netserver -L $serverIP -p $port &"; gjort;
Klientkommando f.eksample, start 8 tråde: port=""; for i i {0..7}; do port=520$i; bash -c "netperf -H $serverIP -p $port -t TCP_STREAM -l 30 &"; gjort;
3.2 Tuning-metode
Fokuser på én justering ad gangen, så du ved, hvilken indflydelse hver ændring har på din test. Jo mere metodisk du er i tuning-processen, jo lettere bliver det at identificere og adressere årsagerne til flaskehalse i ydeevnen.
Tuning i40e driverindstillinger
4.1 IRQ affinitet
Konfiguration af IRQ-affinitet, så afbrydelser for forskellige netværkskøer er knyttet til forskellige CPU-kerner, kan have en enorm indflydelse på ydeevnen, især multithread-gennemløbstest.
For at konfigurere IRQ-affinitet skal du stoppe irqbalance og derefter enten bruge set_irq_affinity-scriptet fra i40e-kildepakken eller fastgøre køer manuelt. Deaktiver brugerplads IRQ balancer for at aktivere køfastgørelse:
- systemctl deaktiver irqbalance
- systemctl stop irqbalance
Brug af set_irq_affinity-scriptet fra i40e-kildepakken (anbefales): - Sådan bruger du alle kerner:
[path-to-i40epackage]/scripts/set_irq_affinity -X alle ethX - For kun at bruge kerner på den lokale NUMA-socket: [path-to-i40epackage]/scripts/set_irq_affinity -X local ethX
- Du kan også vælge en række kerner. Undgå at bruge cpu0, fordi den kører timeropgaver. [path-to-i40epackage]/scripts/set_irq_affinity 1-2 ethX
NOTE
Affinitetsscriptet aktiverer Transmit Packet Steering (XPS) som en del af fastgørelsesprocessen, når -x-indstillingen er angivet. Når XPS er aktiveret, anbefaler Intel, at du deaktiverer irqbalance, da kernebalanceren med XPS kan forårsage uforudsigelig ydeevne. Affinitetsscriptet deaktiverer XPS, når -X-indstillingen er angivet. Deaktivering af XPS og aktivering af symmetriske køer er fordelagtigt for arbejdsbelastninger, hvor den bedste ydeevne opnås, når Tx- og Rx-trafik betjenes på det eller de samme køpar.
Konfiguration af symmetriske køer i Linux involverer justering af netværksgrænsefladedriverens parametre for at aktivere symmetriske modtagekøer (Rx) og symmetriske sendekøer (Tx) for understøttede netværksadaptere.
NOTE
- Symmetriske køer er en avanceret netværksfunktion, og ikke alle 700-seriens netværksadaptere eller drivere understøtter dem.
- Sørg for, at du har den nødvendige driver- og hardwaresupport, før du forsøger at konfigurere symmetriske køer.
Følg disse generelle trin for at konfigurere symmetriske køer:
- Rediger netværksgrænsefladekonfiguration File: Brug en teksteditor (f.eksample, vi, nano eller gedit) for at redigere netværksgrænsefladekonfigurationen file. De file er typisk placeret under mappen /etc/sysconfig/network-scripts/ og har et navn som ifcfg-ethX, hvor ethX er navnet på din netværksgrænseflade.
- Tilføj symmetriske køparametre. Tilføj følgende linjer til netværksgrænsefladekonfigurationen file: ETHTOOL_OPTS=”rx-køer 8 tx-køer 8″
- Genstart netværkstjeneste.
Når du har foretaget ændringerne, skal du genstarte netværkstjenesten for at anvende den nye konfiguration. sudo systemctl genstart netværket
Manuelt:
-
Find de processorer, der er knyttet til hver node ved hjælp af: numactl –hardware lscpu
-
Find bitmaskerne for hver af processorerne:
- Forudsat kerner 0-11 for node 0: [1,2,4,8,10,20,40,80,100,200,400,800]
- Find de IRQ'er, der er tildelt til den port, der tildeles: grep ethX /proc/interrupts og noter IRQ-værdierne f.eks.ample, 181-192 for de 12 indlæste vektorer.
- Ekko SMP-affinitetsværdien i den tilsvarende IRQ-indgang. Bemærk, at dette skal gøres for hver IRQ-indtastning: echo 1 > /proc/irq/181/smp_affinity echo 2 > /proc/irq/182/smp_affinity echo 4 > /proc/irq/183/smp_affinity Vis IRQ-affinitet:
- Sådan viser du IRQ-affiniteten for alle kerner: /scripts/set_irq_affinity -s ethX
- For kun at vise kerner på den lokale NUMA-socket: /scripts/set_irq_affinity -s lokale ethX
- Du kan også vælge en række kerner: /scripts/set_irq_affinity -s 40-0-8,16 ethX
NOTE
Set_irq_affinity-scriptet understøtter flaget -s i i40e-driverversion 2.16.11 og nyere.
4.2 Tx/Rx-køer
Standardantallet af køer aktiveret for hver Ethernet-port af driveren ved initialisering er lig med det samlede antal tilgængelige CPU'er på platformen. Dette fungerer godt for mange platforme og arbejdsbelastningskonfigurationer. På platforme med høje kerneantal og/eller høj Ethernet-porttæthed kan denne konfiguration dog forårsage ressourcestrid. Derfor kan det i nogle tilfælde være nødvendigt at ændre standarden for hver port i systemet.
Standardantallet af Tx/Rx-køer kan variere afhængigt af den specifikke model og driverversion. Antallet af køer kan justeres ved hjælp af ethtool -L kommandoen, der er angivet nedenfor.
NOTE
I disse tilfælde anbefaler Intel, at du reducerer standardkøantallet for hver port til ikke mere end antallet af tilgængelige CPU'er i NUMA-noden lokalt til adapterporten. I nogle tilfælde, når man forsøger at balancere ressourcer på implementeringer med højt portantal, kan det være nødvendigt at reducere dette antal yderligere.
Sådan ændrer du køkonfiguration:
Følgende example indstiller porten til 32 Tx/Rx-køer: ethtool -L ethX kombineret 32
Example output:
ethool -l ethX
Kanalparametre for ethX: Forudindstillede maksimumsværdier:
RX: 96
TX: 96
Andet: 1
Sammenlagt: 96
Aktuelle hardwareindstillinger:
RX: 0
TX: 0
Andet: 1
Sammenlagt: 32
4.3 Afbrydelsesmoderering
Adaptiv afbrydelsesmoderering er slået til som standard og er designet til at give en afbalanceret tilgang mellem lav CPU-udnyttelse og høj ydeevne. Du kan dog prøve at justere afbrydelsesindstillingerne manuelt, så de passer til din brug.
Området på 0-235 mikrosekunder giver et effektivt område på 4,310 til 250,000 afbrydelser pr. sekund. Værdien af rx-μsecs-high kan indstilles uafhængigt af rx-μsecs og tx-μsecs i samme ethtool-kommando og er også uafhængig af den adaptive interrupt-modereringsalgoritme. Den underliggende hardware understøtter granularitet i 2 mikrosekunders intervaller, så tilstødende værdier kan resultere i den samme afbrydelseshastighed.
- Sådan deaktiveres adaptiv interrupt-moderering: ethtool -C ethX adaptive-rx off adaptive-tx off
- Sådan aktiveres adaptiv interrupt-moderering: ethtool -C ethX adaptive-rx on adaptive-tx on
Et godt sted at starte for generel tuning er 84 μs, eller ~12000 interrupts/s. Hvis du ser rx_dropped tællere kører under trafik (ved hjælp af ethtool -S ethX), så har du sandsynligvis en for langsom CPU, ikke nok buffere fra adapterens ringstørrelse (ethtool -G) til at holde pakker i 84 μs eller for lav af afbrydelseshastighed.
- For at indstille interrupt-moderering til en fast interrupt-hastighed på 84 μs mellem interrupts (12000 interrupts/s): ethtool -C ethX adaptive-rx off adaptive-tx off rx-usecs 84 tx-usecs 84 Den næste værdi, der skal prøves, hvis du ikke er maks. på CPU-udnyttelse, er 62 μs. Dette bruger mere CPU, men det servicerer buffere hurtigere og kræver færre deskriptorer (ringstørrelse, ethtool -G).
- For at indstille afbrydelsesmoderering til fast afbrydelseshastighed på 62 usecs mellem afbrydelser (16000 afbrydelser/s). ethtool -C ethX adaptive-rx off adaptive-tx off rx-usecs 62 tx-usecs 62
Hvis rx_dropped tællere stiger under trafik (ved hjælp af ethtool -S ethX), har du sandsynligvis en for langsom CPU, ikke nok buffere fra adapterens ringstørrelse (ethtool -G) eller for lav afbrydelseshastighed. Hvis du ikke er maksimeret på CPU-udnyttelse, kan du øge afbrydelsesfrekvensen ved at sænke ITR-værdien. Dette bruger mere CPU, men tjenester buffere hurtigere og kræver færre deskriptorer (ringstørrelse, ethtool -G).
Hvis din CPU er på 100 %, anbefales det ikke at øge afbrydelsesfrekvensen. Under visse omstændigheder, såsom en CPU-bundet arbejdsbelastning, vil du måske øge μs-værdien for at muliggøre mere CPU-tid for andre applikationer.
Hvis du har brug for ydeevne med lav latens og/eller har masser af CPU at bruge til netværksbehandling, kan du deaktivere interrupt-moderering helt, hvilket gør det muligt for interrupts at udløse så hurtigt som muligt. - For at deaktivere interrupt moderering ethtool -C ethX adaptive-rx off adaptive-tx off rx-usecs 0 tx-usecs 0
NOTE
Når du kører med afbrydelsesmoderering deaktiveret, kan afbrydelsesfrekvensen på hver kø være meget høj. Overvej at inkludere parameteren rx-usec-high for at indstille en øvre grænse for afbrydelsesfrekvensen. Følgende kommando deaktiverer adaptiv interrupt-moderering og tillader maksimalt 5 mikrosekunder, før det angiver, at en modtagelse eller en transmission var fuldført. I stedet for at resultere i så mange som 200,000 afbrydelser pr. sekund, begrænser det det samlede antal afbrydelser pr. sekund til 50,000 via parameteren rx-usec-high. # ethtool -C ethX adaptive-rx off adaptive-tx off rx-usecs-high 20 rx-usecs 5 txusecs 5 Prøv at justere transmit/receive/high-prioritet coalescing-timeren højere (80/100/150/200) eller lavere (25/20/10) for at finde den optimale værdi for arbejde.
4.4 Ringstørrelse
Hvis du ser rx_dropped-tællere i ethtool -S ethX (rx_dropped, rx_dropped.nic), eller har mistanke om cachetryk med flere aktive køer, kan du prøve at justere ringestørrelsen fra standardværdien. Standardværdien er 512, max er 4096.
- For at kontrollere de aktuelle værdier: ethtool -g ethX
Hvis der er mistanke om, at manglende buffering forårsager fald ved den aktuelle afbrydelseshastighed, kan du prøve maksimum først, derefter minimum og derefter fortsætte i en binær søgning, indtil du ser optimal ydeevne.
Hvis der er mistanke om cachetryk (mange køer aktive), kan reduktion af buffere fra standard hjælpe Intel ® Data Direct I/O (Intel ® DDIO) med at fungere mere effektivt. Intel anbefaler at prøve 128 eller 256 pr. kø, idet man er opmærksom på, at en stigning i interrupt rate via ethtool -C kan være nødvendig for at undgå en stigning i rx_dropped. - For at indstille ringstørrelse til fast værdi: ethtool -G eth12 rx 256 tx 256
NOTE
For at rette Rx-pakkedråber fundet med ethtool -S ethX|grep drop, skal du overveje at øge ringestørrelsen til 4096. Eksperimenter for at finde den bedste indstilling for arbejdsbelastningen, men pas på overdreven hukommelsesbrug med højere værdier.
4.5 Flowkontrol
Layer 2 flow control kan påvirke TCP-ydelsen betydeligt og anbefales at deaktiveres for de fleste arbejdsbelastninger. En potentiel undtagelse er sprængtrafik, hvor udbruddene ikke er lange.
Flowkontrol er deaktiveret som standard.
- For at aktivere flowkontrol: ethtool -A ethX rx on tx on
- Sådan deaktiveres flowkontrol: ethtool -A ethX rx off tx off
NOTE
Du skal have en linkpartner, der kan flowkontrol, for at kunne aktivere flowkontrol.
4.6 Jumborammer
Når det forventede trafikmiljø består af store datablokke, der overføres, kan det være en fordel at aktivere jumboframe-funktionen. Understøttelse af Jumbo Frames aktiveres ved at ændre den maksimale transmissionsenhed (MTU) til en værdi, der er større end standardværdien på 1500. Dette gør det muligt for enheden at overføre data i større pakker inden for netværksmiljøet. Denne indstilling kan forbedre gennemløbet og reducere CPU-udnyttelsen til store I/O-arbejdsbelastninger. Det kan dog påvirke små pakke- eller latensfølsomme arbejdsbelastninger.
NOTE
Jumbo-rammer eller større MTU-indstilling skal konfigureres korrekt på tværs af dit netværksmiljø.
Brug ifconfig-kommandoen til at øge MTU-størrelsen. F.eksample, indtast følgende, hvor er grænsefladenummeret: ifconfig mtu 9000 op
Alternativt kan du bruge ip-kommandoen som følger: ip link set mtu 9000 dev opsætning af ip-link dev
Platformtuning (i40e ikke-specifik)
5.1 BIOS-indstillinger
- Aktiver Intel® VT-d til virtualiseringsarbejdsbelastninger.
- Hyper-threading (logiske processorer) kan påvirke ydeevnen. Eksperimenter med det til eller fra for din arbejdsbyrde.
- Intel® Turbo Boost tillader CPU-kerner at arbejde ved en højere frekvens end CPU'ens basisfrekvens. Aktivering af Intel® Turbo Boost kan forbedre ydeevnen for mange arbejdsbelastninger, men bruger mere strøm for at holde kernerne ved højere frekvens. Eksperimenter med Turbo Boost til/fra for din arbejdsbyrde.
NOTE
Turbofrekvenser er ikke garanteret, hvis platformen oplever høj samlet CPU-udnyttelse. Højere kerne-turbofrekvenser reduceres, efterhånden som den samlede CPU-udnyttelse stiger.
5.2 Strømstyring
Strømstyring kan påvirke ydeevnen, især ved arbejdsbelastninger med lav latenstid. Hvis ydeevne er en højere prioritet end at sænke strømforbruget, anbefaler Intel, at du eksperimenterer med at begrænse effekterne af strømstyring. Der er mange forskellige måder at begrænse strømstyring på, gennem operativsystemværktøjer, BIOS-indstillinger og kernestartparametre. Vælg den bedste metode og det bedste niveau, der passer til dit miljø.
5.2.1 C-State Kontrol
Begrænsning af C-tilstand adgang til CO eller C1 forbedrer ydeevnen og øger strømudnyttelsen.
Deaktivering af CPU-pakke C6-tilstand kan forbedre netværkets ydeevne. Dette øger dog strømforbruget.
Følgende muligheder er tilgængelige:
- Styr C-state-indgangen dynamisk:
Åben
/dev/cpu_dma_latency og skriv den maksimalt tilladte latency til den.
NOTE
Der er et lille program kaldet cpudmalatency.c, som kan downloades fra open source-fællesskabet, kompileres og køres fra kommandolinjen for at gøre præcis dette.
Følgende example tillader fem μs vågnetid og tillader dermed C1-indgang: cpudmalatency 5 &
- Begræns den maksimale C-tilstand i kernestartindstillingerne:
For Intel CPU'er: intel_idle.max_cstates=1
For ikke-Intel CPU'er: processor.max_cstates=1 - Brug cpupower-kommandoen til at kontrollere og deaktivere CPU C6-tilstand: Tjek: cpupower-monitor eller cpupower idle-info
Deaktiver C6: cpupower idle-set -d3 eller
Deaktiver C-tilstande: cpupower idle-set -D0
Bemærkninger:
- Deaktiver C-tilstande på CPU'en, hvis serveren har Intel® 4. generation af Intel® Xeon® skalerbar(e) processor(er). Når Hyper Threading er aktiveret eller deaktiveret, forhindrer deaktivering af inaktive tilstande (-D0) kerner i at gå ind i laveffekttilstande i inaktive perioder og reducerer forsinkelsen for CPU'en til at skifte mellem inaktiv og aktiv tilstand.
- Strømstyringen af Intel® 4th Gen Intel® Xeon® Scalable Processor er ekstremt aggressiv. For at undgå, at kerner går ind i laveffekttilstande, prøv at reducere antallet af kerner i brug for at holde dem vågne i længere tid (ethtool -L kombineret ). Bind også afbrydelser til specifikke kerner ved hjælp af sæt irq-affinitet (oftest med -x local eller liste over CPU-kerner), og sørg for, at arbejdsbelastningen kører på de samme kerner med taskset eller numactl. Dette forbedrer ydeevnen ved at holde kernerne aktive og optimere afbrydelseshåndteringen.
Aktiver C6:
cpupower tomgangssæt -d3
Aktiver C-tilstande:
cpupower tomgangssæt -E
- En anden metode er at bruge det indstillede værktøj (inkluderet i mange Linux-distributioner) til at indstille en præstationsprofffile. Disse profiles ændre flere OS-indstillinger, der kan påvirke ydeevnen på tværs af mange applikationer. Det har vist sig, at netværks-throughput profile giver forbedring til de fleste arbejdsbelastninger.
Check:
tuned-adm aktiv
Sæt:
tuned-adm profile netværksgennemstrømning
NOTE
Tunet service skal køre for ovenstående kommandoer. For at kontrollere/genstarte, tuned: systemctl status tuned systemctl genstart tunet
Du kan også afvise enhver C-tilstandsindtastning ved at tilføje følgende til kernestartlinjen:
ledig=afstemning - Begræns C-tilstanden gennem systemets BIOS-strømstyringsindstillinger, som muligvis har en præstationsprofffile tilgængelig.
Værktøjer såsom turbostat eller x86_energy_perf_policy kan bruges til at kontrollere eller indstille strømstyringsindstillinger.
5.2.2 PCIe Power Management
Active-State Power Management (ASPM) muliggør en lavere strømtilstand for PCIe-links, når de ikke er i aktiv brug. Dette kan forårsage højere latenstid på PCIe-netværksenheder, så Intel anbefaler, at du deaktiverer ASPM for latensfølsomme arbejdsbelastninger. Deaktiver ASPM ved at tilføje følgende til kernestartlinjen: pcie_aspm=off
5.2.3 CPU-frekvensskalering
CPU-frekvensskalering (eller CPU-hastighedsskalering) er en Linux-strømstyringsteknik, hvor systemets clock-hastighed justeres på farten for at spare strøm og varme. Ligesom C-tilstande kan dette forårsage uønsket latenstid på netværksforbindelser.
cpupower-værktøjet kan også bruges til at kontrollere og ændre CPU-ydelsesstandarder og grænser:
- Tjek: cpupower monitor eller
- Indstil CPU'er til ydeevnetilstand: cpupower frequency-set -g ydeevne
NOTE
Ændringer af CPU-frekvensgrænser kan have en indvirkning på mange arbejdsbelastninger og kan deaktivere andre funktioner, såsom CPU-turbotilstand.
For at deaktivere CPU-frekvensskalering skal du deaktivere CPU-strømtjenesten ved hjælp af følgende kommandoer:
systemctl stop cpupower.service
systemctl deaktiver cpupower.service
5.2.4 Yderligere strømstyringsvejledning
Yderligere detaljer findes i denne oversættelse på højt niveauview af mange af strømstyringsfunktionerne i 3. generation af Intel® Xeon® skalerbare processorer, samt vejledning i, hvordan disse funktioner kan integreres på platformsniveau: https://networkbuilders.intel.com/solutionslibrary/power-management-technologyoverview-technology-guide
5.3 Intel® Turbo Boost
Intel® Turbo Boost gør processoren hurtigere, når det er nødvendigt, men kan forbruge yderligere strøm. Deaktivering af Turbo Boost holder processoren på en konstant hastighed, hvilket giver dig et ensartet ydeevneniveau for specifikke arbejdsbelastninger.
5.4 Firewalls
Firewalls kan påvirke ydeevnen, især latency-ydelsen.
Deaktiver iptables/firewalld, hvis det ikke er nødvendigt.
5.5 Applikationsindstillinger
Ofte er en enkelt tråd (som svarer til en enkelt netværkskø) ikke tilstrækkelig til at opnå maksimal båndbredde. Nogle platformsarkitekturer, såsom AMD, har en tendens til at droppe flere Rx-pakker med en enkelt tråd sammenlignet med platforme med Intel-baserede processorer.
Overvej at bruge værktøjer som taskset eller numactl til at fastgøre applikationer til NUMA-knuden eller CPU-kerner lokalt på netværksenheden. For nogle arbejdsbelastninger, såsom lager-I/O, giver det fordele at flytte applikationen til en ikke-lokal node.
Eksperimenter med at øge antallet af tråde, der bruges af din applikation, hvis det er muligt.
5.6 Kernelversion
De fleste moderne in-box kerner er rimeligt godt optimeret til ydeevne, men afhængigt af din brugssituation kan opdatering af kernen give forbedret ydeevne. At downloade kilden giver dig også mulighed for at aktivere/deaktivere visse funktioner, før du bygger kernen.
5.7 Operativsystem/kerneindstillinger
Se vejledninger til justering af operativsystemet, såsom Red Hat Enterprise Linux Network Performance Tuning Guide, for at få mere indsigt i generel justering af operativsystemet.
Nogle almindelige parametre til tuning er anført i følgende tabel. Bemærk, at disse kun er foreslåede udgangspunkter, og at ændre dem fra standardindstillingerne kan øge de ressourcer, der bruges på systemet. Selvom en forøgelse af værdierne kan hjælpe med at forbedre ydeevnen, er det nødvendigt at eksperimentere med forskellige værdier for at bestemme, hvad der fungerer bedst for et givet system, arbejdsbelastning og trafiktype.
Kerneparametrene kan konfigureres ved hjælp af sysctl-værktøjet i Linux som angivet nedenfor.
Til view standardværdierne for rmem og wmem på systemet:
sysctl net.core.rmem_default
sysctl net.core.wmem_default
Indstil værdierne til max (16 MB):
sysctl -w net.core.rmem_max=16777216
sysctl -w net.core.wmem_max=16777216
Socketbufferstørrelser, også kendt som modtagebuffer (rmem) og sendebuffer (wmem), er systemparametre, der angiver mængden af hukommelse, der er reserveret til indgående og udgående netværkstrafik.
At køre sysctl uden argumentet -w viser parameteren med dens aktuelle indstilling.
Stakindstilling | Beskrivelse |
net.core.rmem_default | Standard modtagevinduestørrelse |
net.core.wmem_default | Standard transmissionsvinduestørrelse |
net.core.rmem_max | Maksimal størrelse på modtagevinduet |
net.core.wmem_max | Maksimal transmissionsvinduestørrelse |
net.core.optmem_max | Maksimal mulighed for hukommelsesbuffere |
net.core.netdev_max_backlog | Efterslæb af ubehandlede pakker før kernen begynder at falde |
net.ipv4.tcp_rmem | Hukommelsesreserver til TCP læsebuffere |
net.ipv4.tcp_wmem | Hukommelsesreserver til TCP sende buffere |
Kernel, netværksstak, hukommelseshåndtering, CPU-hastighed og strømstyringsparametre kan have stor indflydelse på netværkets ydeevne. En almindelig anbefaling er at anvende til netværksgennemstrømningsprofile ved hjælp af den indstillede kommando. Dette ændrer nogle få OS-indstillinger for at give fortrinsret til netværksapplikationer.
Check:
tuned-adm aktiv
Sæt:
tuned-adm profile netværksgennemstrømning
5.8 Netværksenhedsefterslæb
Denne funktion hjælper med at forbedre netværkets ydeevne ved at administrere indgående trafik effektivt, reducere pakketab, sænke latens og øge gennemløbet. Dette fører til en bedre brugeroplevelse og hurtigere systemrespons.
Som standard er det aktiveret i de fleste Linux-operativsystemer. Sådan kontrolleres standardværdien:
sysctl net.core.netdev_max_backlog
Den maksimale værdi for netdev_max_backlog kan variere afhængigt af faktorer som kerneversion, hardware, hukommelse og arbejdsbelastning. I mange tilfælde ses 8192 som en god værdi. sysctl -w net.core.netdev_max_backlog=8192
5.9 Platform-specifikke konfigurationer og tuning
5.9.1 4. generation af Intel® Xeon® skalerbare processorer
Strømstyringen af Intel® 4th Generation Intel® Xeon® Scalable-processor er ekstremt aggressiv sammenlignet med 3. Generation Intel® Xeon® Scalable-processorer. For at undgå, at kerner går ind i laveffekttilstande, kan du prøve at reducere antallet af kerner, der er i brug, for at holde dem vågne i længere tid.
Anbefalede Bios-indstillinger for den højeste ydeevne
- Hyper-threading aktivere/deaktivere (baseret på arbejdsbelastningskravet og ydeevnemål) på CPU'en.
- Indstil system profile til ydeevne for den maksimale ydeevne.
NOTE
Dette resulterer i højere strømforbrug - Indstil CPU-strømstyringen til Maksimal ydeevne for at prioritere maksimal CPU-ydelse frem for strømeffektivitet.
- Aktiver Turbo Boost. Deaktivering af Turbo Boost i systemets BIOS-indstillinger forhindrer typisk CPU'en i dynamisk at øge sin clockhastighed ud over dens basisfrekvens.
- NOTE
Deaktivering af Turbo Boost kan være egnet til visse brugstilfælde, hvor ensartet ydeevne, strømeffektivitet eller termisk styring prioriteres frem for maksimal ydeevne. - Slå funktionen Single Root I/O Virtualization (SR-IOV) fra, hvis systemet ikke bruger virtualiseringsteknologier.
- Deaktiver C-tilstande for at instruere CPU'en om at forblive aktiv og forhindre indtastning af dybere inaktive tilstande.
- Deaktiver C1E for at sikre, at CPU'en forbliver aktiv og ikke går i C1E inaktiv tilstand.
- Indstil uncore-frekvensen til maksimum for at instruere systemet til at arbejde ved den højest tilgængelige frekvens.
- På Dell-platforme skal du indstille Multiple APIC Description Table (MADT) kerneemulering til Linear (eller Round-Robin afhængigt af BIOS) for at give en klar og forudsigelig kortlægning af CPU-kerner.
Anbefalede OS-niveaujusteringer for optimeret ydeevne
- Indstil CPU-frekvensskaleringsregulator til ydeevne. cpupower frequency-set -g ydeevne cpupower frequency-info
- Deaktiver C-Stater. cpupower tomgangssæt -D0
- Indstil kerne Rx (rmem) og Tx (wmem) buffere til maksimal værdi. sysctl -w net.core.rmem_max=16777216 sysctl -w net.core.wmem_max=16777216
- Indstil netværksenhedsefterslæb. sysctl -w net.core.netdev_max_backlog=8192
- Sæt tunet profile (arbejdsbelastningsafhængig for gennemløb/latency).
tuned-adm profile netværksgennemstrømning
Anbefalet justering af adapterniveau for optimeret ydeevne
- Begræns antallet af køer, der skal bruges til programtrafik. Brug det mindste antal køer, der kræves for at holde de tilknyttede CPU-kerner aktive for at forhindre dem i at gå ind i dybere inaktive tilstande (juster for arbejdsbelastningen): ethtool -L sammenlagt 32
- Indstil afbrydelsesmodereringshastigheder. ethool -C adaptive-rx fra adaptive-tx fra rx-usecs-high 50 rx-usecs 50 tx-usecs 50
Prøv at justere sende/modtage/højprioritet koalesceringstimeren højere (80/100/150/200) eller lavere (25/20/10/5) for at finde optimal værdi for arbejdsbyrden. - Indstil Rx/Tx-ringstørrelserne. ethool -G rx 4096 tx 4096
NOTE
Hvis du ser Rx-pakken falder med ethtool -S| grep drop, prøv at reducere ringstørrelsen til <4096. Prøv at finde den optimale værdi for arbejdsbyrden, hvor pakker ikke slippes. - Indstil IRQ-affinitet. Brug kerner lokalt til NIC eller specifik core mapping (hvor # kerner er lig med antallet af køer sat i 1 på side 26. systemctl stop irqbalance set_irq_affinity -X local ELLER sæt_irq_affinitet -X
5.9.2 AMD EPYC
AMD EPYC-processorer er kraftfulde CPU'er lavet til servere og datacentre, bygget på AMDs Zen-arkitektur. Nedenstående indstillinger er fra AMD's 4. generation EPYC-serie.
Anbefalede BIOS-indstillinger for den højeste ydeevne
- Aktiver brugerdefineret tilstand for at give brugerne mulighed for at justere CPU-ydeevne, strømforbrug og andre indstillinger. Dette hjælper med at finjustere systemet til den bedste balance mellem ydeevne og energieffektivitet.
- Aktiver kerneydelsesforøgelse for at tillade CPU'en automatisk at øge sin hastighed for at håndtere mere intensive opgaver, hvilket forbedrer den samlede ydeevne.
- Deaktiver global C-tilstandskontrol for at forhindre CPU'en i at gå ind i dybere strømbesparende tilstande kendt som C-tilstande, som kan opretholde reaktionsevnen.
NOTE
Deaktivering af C-tilstande kan forårsage yderligere strømforbrug og øge de termiske temperaturer. Overvåg begge for arbejdsbyrden. - Aktiver/deaktiver Simultaneous Multithreading (SMT) på CPU'en baseret på arbejdsbelastningskravet og ydeevnemål. SMT svarer til Hyper Threading på Intel CPU'er.
NOTE
For optimeret ydeevne henvises til Tuning i40e Driver Settings på side 13 og Platform Tuning (i40e Non-Specific) på side 19 for den anbefalede justering af OS og adapterniveau.
Adapterlimning
Linux-binding er en kraftfuld funktion, der markant kan forbedre netværkets ydeevne, redundans og fejltolerance i servermiljøer. Det er dog vigtigt at bemærke, at det kræver kompatibel netværkshardware og korrekt konfiguration på både serveren og switchen for at fungere korrekt.
Bonding-driveren i Linux giver dig mulighed for at samle flere fysiske netværksgrænseflader til en bundet grænseflade. Denne bundne grænseflade fremstår som en enkelt virtuel netværksgrænseflade til operativsystemet og applikationerne.
NOTE
Bonden er en logisk grænseflade, så det er ikke muligt at indstille CPU-affinitet direkte på bond-grænsefladen (f.eks.ample, bond0). Det vil sige, at den ikke har direkte kontrol over afbrydelseshåndtering eller CPU-affinitet. CPU-affinitet skal konfigureres for de underliggende grænseflader, der er en del af bindingen.
Bonding giver flere driftsformer, hver med sine egne karakteristika.
Mode | Type |
0 | Round Robin |
1 | Aktiv backup |
2 | XOR |
3 | Udsende |
4 | LACP |
5 | Send belastningsbalance |
6 | Adaptiv belastningsbalance |
Der er forskellige metoder til at skabe en binding i Linux. En af de mest almindelige metoder er at bruge netværkskonfiguration files (f.eksample, /etc/network/ interfaces eller /etc/sysconfig/network-scripts/ifcfg-bondX).
Konfiguration ved hjælp af netværkskonfiguration Files
De følgende trin skaber binding gennem netværkskonfigurationen files.
- Vælg to eller flere NIC-porte til binding (f.eksample, ethX og ethY)
- Åbn NIC-konfiguration Files under /etc/sysconfig/network-scripts/ for den nødvendige NIC-grænseflade (f.eks.ample, vi ifcfg-ethX og vi ifcfg-ethY) og tilføj følgende tekst:
MASTER=bondN [Bemærk: N er et heltal for at nævne obligationsnummeret.] SLAVE=ja - Opret et obligationsnetværksscript file ved at bruge vi /etc/sysconfig/networkscripts/ifcfg-bondN og indtast følgende tekst:
DEVICE=bondN [Bemærk: N er et heltal for at nævne obligationsnummeret] ONBOOT=ja USERCTL=nej BOOTPROTO=dhcp (eller) ingen
IPADDR=200.20.2.4 [påkrævet hvis BOOTPROTO=ingen] NETMASK=255.255.255.0 [påkrævet hvis BOOTPROTO=ingen] NETVÆRK=200.20.2.0 [påkrævet hvis BOOTPROTO=ingen] BROADCAST [200.20.2.255.påkrævet] BOOTPROTO=ingen] BONDING_OPTS=”tilstand=1 miimon=100″
NOTE
Mode kan være et hvilket som helst heltal fra 0 til 6 baseret på kravet. - Genstart netværkstjenesterne ved hjælp af genstart af tjenestenetværk eller systemctl genstart NetworkManager.service
Fejlfinding af ydeevne
7.1 CPU-udnyttelse
Tjek CPU-udnyttelse pr. kerne, mens arbejdsbelastningen kører.
Bemærk, at udnyttelse pr. kerne er mere relevant for ydeevnen end den samlede CPU-udnyttelse, da det giver en idé om CPU-udnyttelsen pr. netværkskø. Hvis du kun har nogle få tråde, der kører netværkstrafik, har du måske kun nogle få kerner, der bruges. Men hvis disse kerner er på 100 %, er din netværksgennemstrømning sandsynligvis begrænset af CPU-udnyttelse, og det er tid til at udføre følgende:
- Indstil IRQ-moderering/ringstørrelse som beskrevet i Interrupt Moderation.
- Øg antallet af applikationstråde for at sprede CPU-belastningen ud over flere kerner. Hvis alle kerner kører på 100 %, kan din applikation være CPU-bundet i stedet for netværksbundet.
Almindeligt tilgængelige værktøjer:
- top
— Tryk på 1 for at udvide listen over CPU'er og kontrollere, hvilke der bruges.
— Læg mærke til udnyttelsesgraden.
— Læg mærke til, hvilke processer der er opført som mest aktive (øverst på listen). - mpstat
Følgende exampkommandolinjen blev testet på Red Hat Enterprise Linux 7.x.
Den viser CPU-udnyttelse pr. kerne (ved at finde den samlede procentdel i tomgang og trække fra 100) og fremhæver værdierne over 80 % med rødt. mpstat -P ALL 1 1 | grep -v Gennemsnit | hale -n +5 | hoved -n -1 | awk '{ print (100-$13)}' | egrep -color=altid '[^\.][8-9][0-9][\.]?.*|^[8-9][0-9][\.]?.*| 100|' | kolonne - perf top Se efter, hvor cyklusser bliver brugt.
7.2 i40e tællere
i40e-driveren giver en lang liste af tællere til grænsefladefejlfinding og overvågning gennem ethtool -S ethX-kommandoen. Det kan være nyttigt at se outputtet, mens en arbejdsbelastning kører, og/eller sammenligne tællerværdierne før og efter en arbejdsbelastningskørsel.
- For at få et fuldt dump af i40e-tællere: ethtool -S ethX
- For at se kun tællere, der ikke er nul: watch -d (ethtool -S ethX) | egrep -v :\ 0 | kolonne
Nogle ting at kigge efter: - rx_dropped betyder, at CPU'en ikke servicerer buffere hurtigt nok.
- port.rx_dropped betyder, at noget ikke er hurtigt nok i slot/hukommelsen/systemet.
7.3 Netværkstællere
Tjek netstat -s før/efter en arbejdsbelastningskørsel.
Netstat indsamler netværksoplysninger fra alle netværksenheder i systemet. Derfor kan resultaterne blive påvirket fra andre netværk end det netværk, der testes. Outputtet fra netstat -s kan være en god indikator for ydeevneproblemer i Linux-operativsystemet eller kernen. Se vejledninger til justering af operativsystemet, såsom Red Hat Enterprise Linux Network Performance Tuning Guide, for at få mere indsigt i generel justering af operativsystemet.
7.4 Systemlogfiler
Tjek systemlogfiler for fejl og advarsler (/var/log/messages, dmesg).
7.5 Intel svr-info værktøj
Intel leverer et svr-info-værktøj (se https://github.com/intel/svr-info) til Linux, der fanger relevante hardware- og softwaredetaljer fra en server. svr-info output kan være yderst nyttigt til at identificere systemflaskehalse eller indstillinger/justeringer, der ikke er optimeret til arbejdsbyrden. Når du åbner en supportsag med Intel for Ethernet-relaterede ydeevneproblemer, skal du sørge for at inkludere svr-info-output (tekst file) for hver Linux-server i testkonfigurationen.
- Download og installer svr-info:
wget -qO- https://github.com/intel/svr-info/releases/latest/download/svrinfo.tgz| tar xvz cd svr-info
./svr-info
> værtsnavn.txt - Saml output:
./svr-info > værtsnavn.txt - Vedhæft én tekst (.txt) file for hver server til din Intel-supportsag til analyse.
Anbefalinger til almindelige præstationsscenarier
8.1 IP-videresendelse
- Opdater kernen.
Nogle nylige in-distro-kerner har forringet routing-ydeevne på grund af kerneændringer i routingkoden, startende med fjernelse af routing-cachen på grund af sikkerhed. Nylige ud-af-distro-kerner bør have patches, der afhjælper ydeevnepåvirkningen af disse ændringer og kan give forbedret ydeevne. - Deaktiver hyper-threading (logiske kerner).
- Rediger kernestartparametrene.
— Tving iommu fra (intel_iommu=off eller iommu=off) fra kernestartlinjen, medmindre det er nødvendigt for virtualisering
— Sluk for strømstyring: processor.max_cstates=1 idle=poll pcie_aspm=off - Begræns antallet af køer til at være lig med antallet af kerner på den lokale socket (12 i dette f.eks.ample). ethtool -L ethX kombineret 12
- Pin afbrydelser kun til lokal stikkontakt. set_irq_affinity -X local ethX ELLER set_irq_affinity -X local ethX
NOTE
-X eller -x kan bruges afhængigt af arbejdsbelastningen. - Skift Tx- og Rx-ringstørrelserne efter behov. En større værdi kræver flere ressourcer, men kan give bedre forsendelseshastigheder. ethtool -G ethX rx 4096 tx 4096
- Deaktiver GRO ved routing.
På grund af et kendt kerneproblem skal GRO være slået fra ved routing/videresendelse. ethtool -K ethX gro off hvor ethX er Ethernet-grænsefladen, der skal ændres. - Deaktiver adaptiv interrupt-moderering og indstil en statisk værdi. ethtool -C ethX adaptive-rx off adaptive-tx off ethtool -C ethX rx-usecs 64 tx-usecs 64
NOTE
Afhængigt af typen af processor og arbejdsbelastning kan koalesceringsparametrene for RX og TX justeres for forbedret ydeevne (eller mindre rammetab).
- Deaktiver firewallen. sudo systemctl deaktiver firewalld sudo systemctl stop firewalld
- Aktiver IP-videresendelse. sysctl -w net.ipv4.ip_forward=1
- Konfigurer maksimale værdier for modtage- og sendesockets bufferstørrelser. sysctl -w net.core.rmem_max=16777216 sysctl -w net.core.wmem_max=16777216
NOTE
Afhængigt af arbejdsbelastningen eller kravet kan disse værdier ændres fra standardværdien.
8.2 Lav latens
- Slå hyper-threading (logiske kerner) FRA.
- Sørg for, at netværksenheden er lokal for numa core 0.
- Fastgør benchmark til kerne 0 ved hjælp af opgavesæt -c 0.
- Slå irqbalance fra ved at bruge systemctl stop irqbalance eller systemctl deaktiver irqbalance
- Kør affinitetsscriptet for at sprede sig på tværs af kerner. Prøv enten lokalt eller alle.
- Slå afbrydelsesmoderering fra. ethtool -C ethX rx-usecs 0 tx-usecs 0 adaptive-rx off adaptive-tx off rxusecs- high 0
- Begræns antallet af køer til at være lig med antallet af kerner på den lokale socket (32 i dette f.eks.ample). ethtool -L ethX kombineret 32
- Pin-afbrydelser kun til lokal socket (script pakket med i40e-driverkilde). set_irq_affinity -X lokal ethX
- Brug et etableret benchmark som netperf -t TCP_RR, netperf -t UDP_RR eller NetPipe. netperf -t TCP_RR eller netperf -t UDP_RR
- Fastgør benchmark til en enkelt kerne i den lokale NUMA-knude. opgavesæt -c
Intel® Ethernet 700-serien
Vejledning til justering af Linux-ydelse
december 2024
Dok. nr.: 334019, Rev.: 1.2
Dokumenter/ressourcer
![]() |
Intel Ethernet 700 Series Linux Performance Tuning [pdfBrugervejledning 334019, Ethernet 700 Series Linux Performance Tuning, Ethernet 700 Series, Linux Performance Tuning, Performance Tuning, Tuning |