Intel® Ethernet 700-searje
Gids foar it oanpassen fan Linux-prestaasjes
NEX Cloud Networking Group (NCNG)
Rev. 1.2
desimber 2024
Revision Skiednis
Revyzje | Datum | Comments |
1.2 | desimber 2024 | · Ekstra begelieding foar enerzjybehear tafoege. · Intel* Turbo Boost tafoege. · Efterstân fan netwurkapparaten tafoege. · Platfoarmspesifike konfiguraasjes en ôfstimming tafoege. · Skalbere prosessors fan 'e 4e generaasje Intel* %eon* tafoege. · AMD EPYC tafoege. · Bywurke kontrôle fan systeemhardwaremooglikheden. · Bywurke iPerf2. · Bywurke iPerf3. · Bywurke Tx/Rx-wachtrijen. · Bywurke ûnderbrekkingsmoderaasje. · Bywurke ringgrutte. · Bywurke platfoarmtuning (i40e net-spesifyk). · Bywurke BIOS-ynstellingen. · Bywurke C-State Control. · Bywurke CPU-frekwinsjeskaling. · Bywurke applikaasje-ynstellingen. · Bywurke bestjoeringssysteem-/kernelynstellingen. · Bywurke IP-trochstjoering. · Bywurke lege latency. |
augustus 2023 | Wizigingen oan dit dokumint omfetsje: · Relatearre referinsjes tafoege. · Tafoege Soargje derfoar dat DDP-pakket goed laden wurdt. · Tafoege iPerf2. · Tafoege iPerf3. · Netperf tafoege. · IRQ-affiniteit bywurke. · Tx/Rx-wachtrijen tafoege. · Bywurke ringgrutte. · Jumbo-frames tafoege. · Adapterbonding tafoege. · Intel svr-info Tool tafoege. |
|
1.0 | maart 2016 | Earste release (Intel Public). |
Ynlieding
Dizze hantlieding is bedoeld om begelieding te jaan foar it ôfstimmen fan omjouwings foar optimale netwurkprestaasjes mei help fan in Intel® Ethernet 700 Series NIC yn Linux-omjouwings. It rjochtet him op hardware-, stjoerprogramma- en bestjoeringssysteemomstannichheden en -ynstellingen dy't de netwurkprestaasjes kinne ferbetterje. It moat opmurken wurde dat netwurkprestaasjes beynfloede wurde kinne troch in oantal eksterne ynfloeden, allinich de meast foarkommende en dramatyske dêrfan wurde yn dizze hantlieding behannele.
1.1 Relatearre referinsjes
- Brûkershânlieding foar alle Intel® Ethernet-adapters en apparaten, dy't Windows en Linux stypje:
Intel® Ethernet-adapters en -apparaten brûkershantlieding - Technyske gegevensblêd:
Intel® Ethernet Controller X710/XXV710/XL710 Gegevensblêd - Komplete SW-bondel foar alle Intel® Ethernet-produkten (download alle stjoerprogramma's, NVM's, ark, ensfh.):
Intel ® Ethernet Adapter Kompleet Stjoerprogrammapakket - NVM (Non-Volatile Memory) Updatepakket:
Hulpprogramma foar it bywurkjen fan net-flechtige ûnthâld (NVM) foar de Intel® Ethernet Network Adapter 700-searje - svr-info-ark foar Linux dat relevante hardware- en softwaredetails fan in server fêstleit: https://github.com/intel/svr-info
- DDP-technologygids:
Intel® Ethernet 700-searje Dynamyske apparaatpersonalisaasje (DDP) technologygids
Inisjele Checklist
2.1 Ferzjes fan stjoerprogramma's/firmware bywurkje
Kontrolearje de ferzjes fan it stjoerprogramma/firmware mei ethtool -i ethx.
Aktualisearje it folgjende as nedich:
- i40e-stjoerprogramma bywurkje
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 - Update firmware
https://downloadcenter.intel.com/download/24769/NVM-Update-Utility-for-Intel-Ethernet-ConvergedNetwork-Adapter-XL710-X710-Series
2.2 Lês it README-bestân
Kontrolearje op bekende problemen en krije de lêste konfiguraasje-ynstruksjes fan it README-bestân file opnommen yn it i40e boarnepakket.
2.3 Kontrolearje oft jo PCI Express (PCIe) slot x8 is
Guon PCIe x8-slots binne eins konfigurearre as x4-slots. Dizze slots hawwe net genôch bânbreedte foar folsleine linesnelheid mei apparaten mei dûbele poarten en fjouwer poarten. Derneist, as jo in PCIe v3.0-kompatible adapter yn in PCIe v2.x-slot sette, kinne jo gjin folsleine bânbreedte krije. De software-apparaatstjoerprogramma detektearret dizze situaasje en skriuwt it folgjende berjocht yn it systeemlogboek:
De PCI-Express-bânbreedte dy't beskikber is foar dizze kaart is net genôch foar optimale prestaasjes. Foar optimale prestaasjes is in x8 PCI-Express-slot fereaske.
As dizze flater foarkomt, ferpleats jo adapter dan nei in echte PCIe v3.0 x8-slot om it probleem op te lossen.
2.4 Kontrolearje de mooglikheden fan systeemhardware
By 10 Gbps, 25 Gbps en 40 Gbps Ethernet binne der wat minimale CPU- en systeemeasken. Yn 't algemien moat in moderne serverklasseprosessor en optimale ûnthâldkonfiguraasje foar jo platfoarm genôch wêze, mar de behoeften fariearje ôfhinklik fan jo wurkdruk. Alle ûnthâldkanalen moatte fol wêze en de ûnthâldprestaasjemodus moat ynskeakele wêze yn 'e BIOS. Ferifiearje dat jo CPU- en ûnthâldkonfiguraasje it nivo fan netwurkprestaasjes kinne stypje dat jo nedich binne foar jo wurkdruk.
NOAT
De XL710 is in 40 GbE-controller. De 2 x 40 GbE-adapter dy't dizze controller brûkt, is net bedoeld as in 2 x 40 GbE, mar as in 1 x 40 GbE mei in aktive reservekopypoarte. As jo besykje line-rate-ferkear te brûken dat beide poarten belûkt, is de ynterne switch verzadigd en is de kombineare bânbreedte tusken de twa poarten beheind ta in totaal fan XNUMX Gbps.
2.4.1 Kernel-opstartparameters
As Intel® Virtualization Technology for Directed I/O (Intel® VT-d) ynskeakele is yn 'e BIOS, advisearret Intel dat IOMMU yn pass-through-modus is foar optimale hostnetwurkprestaasjes. Dit elimineert DMA-overhead op hostferkear, wylst firtuele masines (VM's) noch altyd de foardielen fan Intel® VT-d kinne hawwe. Dit wurdt berikt troch de folgjende rigel ta te foegjen oan 'e kernel-opstartparameters: fommu-pt.
2.5 Soargje derfoar dat it DDP-pakket goed laden wurdt
Basisstjoerprogramma's foar 140ea en 140eb hawwe gjin direkte stipe foar Dynamic Device Personalization (DDP). Om DDP te brûken mei apparaten út 'e 700-searje, is in DDP-pro nedich.file kin tapast wurde mei de testpmd-applikaasje.
Foar details oer DDP profiles, en hoe't jo in DDP-pro kinne tapassefile mei testpmd op apparaten fan 'e 700-searje, sjoch de Intel® Ethernet 700 Series Dynamic Device Personalization (DDP) Technology Guide.
Om te ferifiearjen oft in DDP-profile waard mei súkses laden:
testpmd> ddp krije list 0 Profile nûmer is: 1
NOAT
As de profile As it getal 0 is, is der gjin DDP-pakket laden. Yn gefal fan in flater by it laden fan it DDP-pakket giet it apparaat standert nei de feilige modus en binne in protte prestaasjefunksjes net beskikber. As der flaters binne yn ferbân mei it laden fan it DDP-pakket, sil dit prestaasjeproblemen feroarsaakje. Sjoch de Inte/* Ethernet 700 Series Dynamic Device Personalization (DDP) Technology Guide foar stappen foar probleemoplossing.
Basisprestaasjemjittingen en tuningmetodyk
3.1 Netwurkprestaasjebenchmarks
Foardat jo begjinne mei in ôfstimmingsoefening, is it wichtich om in goede basismjitting fan jo netwurkprestaasjes te hawwen. Meastentiids is it, neist it krijen fan in earste mjitting fan 'e prestaasjes fan jo spesifike applikaasje/wurkdruk, in goed idee om ek in standert netwurkprestaasjebenchmark te brûken om te ferifiearjen dat jo netwurkapparaat yn in goede steat is.
Foar optimalisaasje fan ien systeem binne netperf of iperf en NetPIPE allegear solide iepenboarne fergese ark wêrmei jo in ferbining kinne beklamje en prestaasjeproblemen kinne diagnostisearje.
Netperf is sterk foar sawol trochput- as latencytests. NetPIPE is in latency-spesifyk ark, mar kin kompilearre wurde foar elke soart omjouwing.
NOAT
De TCP_RR-test yn netperf jout latency werom yn in wearde fan transaksjes/sek. Dit is in rûnreisgetal. De ienrjochtingslatency kin berekkene wurde mei de folgjende fergeliking:
Latency(usec) = (1⁄2) / [Transaksjes/sek] * 1,000,000
3.1.1 iPerf2
Intel advisearret iperf2 boppe iperf3 foar de measte benchmarksituaasjes fanwegen it gemak fan gebrûk en de stipe foar meardere threads yn ien applikaasje-eksimplaar. Intel advisearret om te brûken mei de -P-opsje mei 2-4 threads foar 25G-ferbiningen en sawat 4-6 threads foar 40G-ferbiningen.
- Om unidireksjoneel ferkear fan kliïnt nei server út te fieren: Serverkommando bygelyksample: iperf2 -s
Kliïntkommando example: iperf2 -c -P - Om bidireksjoneel ferkear fan kliïnt nei server út te fieren (en oarsom): Server-kommando bygelyksample: iperf2 –s –p
Kliïntkommando example:
iperf2 -c -p -P -–folsleine-duplex OF
iperf2 -c -p -P –d
NOAT
Sawol de opsjes -full-duplex as -d yn iperf2 litte de brûker bidireksjonele testen útfiere. De opsje -full-duplex rjochtet him lykwols spesifyk op full-duplex testen.
NOAT
By it testen fan iperf2 oer meardere serverpoarten, kin de -d-flagge tafoege wurde oan it serverkommando om alle serversesjes op 'e eftergrûn út te fieren fanút itselde terminalfinster. De -d-flagge kin ek brûkt wurde as it serverkommando ynbêde is yn in for-loop yn in skript.
NOAT
By it útfieren fan de netwurktrochputtest mei ien stream/thread (bygelyksample: P1), AMD-prosessors leverje miskien net de ferwachte trochfier, benammen NIC's mei hegere bânbreedte (as de snelheid >= 25G bânbreedte is). As gefolch is it fêstpinnen fan applikaasjes oan spesifike kearnen fereaske om in hegere trochfier te berikken. Sjoch Applikaasje-ynstellingen op side 22.
3.1.2 iPerf3
As iperf3 brûkt wurdt, binne meardere eksimplaren fan 'e applikaasje fereaske om foardiel te heljentage fan 'e multi-threads, RSS, en hardware-wachtrijen. Intel advisearret om te rinnen mei de 2-4 applikaasjesesjes foar 25G-ferbiningen en sawat 4-6 sesjes foar 40G-ferbiningen. Elke sesje moat in unike TCP-poartewearde oantsjutte mei de -p-opsje.
- Om unidireksjoneel ferkear fan kliïnt nei server út te fieren:
Serverkommando bygelyksample:
iperf3 -s -p
Kliïntkommando example:
iperf3 -c -p - Om bidireksjoneel ferkear fan kliïnt nei server út te fieren (en oarsom):
Serverkommando bygelyksample:
iperf3 –s –p
Kliïntkommando example: iperf3 -c -p -P –-bidir - Om meardere ynstânsjes (threads) fan iperf3 te starten, is de oanbefelling om in for-loop te brûken om threads oan TCP-poarten te mappen en iperf3 op 'e eftergrûn út te fieren mei & om meardere prosessen parallel oan te meitsjen.
Serverkommando bygelyksample, begjin 4 threads: port=””; for i in {0..3}; do port=520$i; bash -c “iperf3 -s -p $port &”; klear; Kliïntkommando bygelyksample, begjin 4 threads – Test ferstjoere port=””; foar i yn {0..3}; do port=520$i; bash -c “iperf3 -c $serverIP -p $port &”; klear; Kliïntkommando bygelyksample, begjin 4 threads – Untfang test port=””; for i in {0..3}; do port=520$i; bash -c “iperf3 -R -c $serverIP -p $port &”; klear; Foar 40G-ferbiningen, ferheegje de for-loop om maksimaal 6 ynstânsjes/threads te meitsjen.
NOAT
By it útfieren fan de netwurktrochputtest mei ien stream/thread (bygelyksample: P1), AMD-prosessors leverje miskien net de ferwachte trochfier, benammen hegere bânbreedte
NIC's (as de snelheid >= 25G bânbreedte is). Dêrtroch is it fêstpinnen fan applikaasjes oan spesifike kearnen fereaske om in hegere trochfier te berikken. Sjoch Applikaasje-ynstellings op side 22 en AMD EPYC op side 26.
3.1.3 netperf
De netperf-tool is in sterke kar foar sawol trochput- as latency-testen.
- De TCP_STREAM-test yn netperf mjit de trochfiermooglikheden fan it apparaat. Serverkommando bygelyksample: netserver Client kommando example: netperf -t TCP_STREAM -l 30 -H
- De TCP_RR-test yn netperf jout latency werom yn in wearde fan transaksjes/sekonde. Dit is in rûnreisgetal. It wurdt oanrikkemandearre om de -T x,x-opsje te brûken, wêrby't x CPU-lokaal is foar it apparaat. De ienrjochtingslatency kin berekkene wurde mei: Latency(usec)=(1⁄2)/ [Transaksjes/sek]*1,000,\ Serverkommando bygelyksample: netserver
Kliïntkommando example: netperf -t TCP_RR -l 30 -H -T x,x - Om meardere ynstânsjes (threads) fan netperf te starten, is de oanbefelling om in for-loop te brûken om threads oan TCP-poarten te mappen en netperf op 'e eftergrûn út te fieren mei & om meardere prosessen parallel oan te meitsjen.
Serverkommando bygelyksample, begjin 8 threads:
poarte=””; foar i yn {0..7}; do poarte=520$i; bash -c “netserver -L $serverIP -p $poarte &”; klear;
Kliïntkommando example, begjin 8 threads: port=””; foar i yn {0..7}; do port=520$i; bash -c “netperf -H $serverIP -p $port -t TCP_STREAM -l 30 &”; klear;
3.2 Tuningmetodyk
Fokusje jo op ien ôfstimmingsferoaring tagelyk, sadat jo witte hokker ynfloed elke feroaring hat op jo test. Hoe metoadysker jo binne yn it ôfstimmingsproses, hoe makliker it sil wêze om de oarsaken fan prestaasjeknelpunten te identifisearjen en oan te pakken.
Ynstellings foar it ôfstimmen fan de i40e-bestjoerder
4.1 IRQ-affiniteit
It konfigurearjen fan IRQ-affiniteit sadat ûnderbrekkings foar ferskate netwurkwachtrijen affinitisearre binne oan ferskate CPU-kearnen kin in enoarme ynfloed hawwe op prestaasjes, benammen multithread-trochputtests.
Om IRQ-affiniteit te konfigurearjen, stopje irqbalance en brûk dan it set_irq_affinity-skript út it i40e-boarnepakket of pin wachtrijen manuell. Skeakelje de brûkersromte-IRQ-balancer út om wachtrijpinnen yn te skeakeljen:
- systemctl útskeakelje irqbalance
- systemctl stopje irqbalance
Mei it skript set_irq_affinity út it i40e-boarnepakket (oanrikkemandearre): - Om alle kearnen te brûken:
[paad-nei-i40epackage]/skripts/set_irq_affinity -X alle ethX - Om allinich kearnen te brûken op 'e lokale NUMA-socket: [path-to-i40epackage]/scripts/set_irq_affinity -X local ethX
- Jo kinne ek in berik fan kearnen selektearje. Brûk cpu0 net, om't it timertaken útfiert. [path-to-i40epackage]/scripts/set_irq_affinity 1-2 ethX
NOAT
It affiniteitsskript aktivearret Transmit Packet Steering (XPS) as ûnderdiel fan it pinningproses as de -x-opsje is oantsjutte. As XPS ynskeakele is, advisearret Intel dat jo irqbalance útskeakelje, om't de kernelbalancer mei XPS ûnfoarspelbere prestaasjes feroarsaakje kin. It affiniteitsskript aktivearret XPS as de -X-opsje is oantsjutte. It útskeakeljen fan XPS en it ynskeakeljen fan symmetryske wachtrijen is foardielich foar workloads wêrby't de bêste prestaasjes wurde berikt as Tx- en Rx-ferkear op itselde wachtrijpear (of -pearen) betsjinne wurde.
It konfigurearjen fan symmetryske wachtrijen yn Linux omfettet it ôfstimmen fan 'e parameters fan' e netwurkinterface-stjoerprogramma om symmetryske ûntfangstwachtrijen (Rx) en symmetryske ferstjoerwachtrijen (Tx) yn te skeakeljen foar stipe netwurkadapters.
NOAT
- Symmetryske wachtrijen binne in avansearre netwurkfunksje, en net alle netwurkadapters of stjoerprogramma's fan 'e 700-searje stypje se.
- Soargje derfoar dat jo de nedige stjoerprogramma- en hardware-stipe hawwe foardat jo besykje symmetryske wachtrijen te konfigurearjen.
Om symmetryske wachtrijen te konfigurearjen, folgje dizze algemiene stappen:
- Netwurkynterfacekonfiguraasje bewurkje FileBrûk in tekstbewurker (bygelyksample, vi, nano, of gedit) om de konfiguraasje fan 'e netwurkynterface te bewurkjen file. De file leit typysk ûnder de map /etc/sysconfig/network-scripts/ en hat in namme lykas ifcfg-ethX, wêrby't ethX de namme is fan jo netwurkynterface.
- Foegje symmetryske wachtrijparameters ta. Foegje de folgjende rigels ta oan de netwurkynterfacekonfiguraasje. fileETHTOOL_OPTS = "rx-wachtrigen 8 tx-wachtrigen 8"
- Netwurktsjinst opnij starte.
Nei it meitsjen fan de feroarings, start de netwurktsjinst opnij op om de nije konfiguraasje ta te passen. sudo systemctl start netwurk opnij op
Hânmjittich:
-
Fyn de prosessors dy't oan elke node ferbûn binne mei: numactl –hardware lscpu
-
Fyn de bitmaskers foar elk fan 'e prosessors:
- Utgeande fan kearnen 0-11 foar knooppunt 0: [1,2,4,8,10,20,40,80,100,200,400,800]
- Fyn de IRQ's dy't tawiisd binne oan de poarte dy't tawiisd wurdt: grep ethX /proc/interrupts en notearje de IRQ-wearden. Bygelyksample, 181-192 foar de 12 laden fektoren.
- Echo de SMP-affiniteitswearde yn 'e oerienkommende IRQ-yngong. Tink derom dat dit foar elke IRQ-yngong dien wurde moat: echo 1 > /proc/irq/181/smp_affinity echo 2 > /proc/irq/182/smp_affinity echo 4 > /proc/irq/183/smp_affinity Lit IRQ-affiniteit sjen:
- Om de IRQ-affiniteit foar alle kearnen te sjen litten: /skripts/set_irq_affinity -s ethX
- Om allinich kearnen op 'e lokale NUMA-socket te sjen litten: /scripts/set_irq_affinity -s lokale ethX
- Jo kinne ek in berik fan kearnen selektearje: /skripts/set_irq_affinity -s 40-0-8,16 ethX
NOAT
It skript set_irq_affinity stipet de -s flagge yn i40e-stjoerprogrammaferzje 2.16.11 en letter.
4.2 Tx/Rx-wachtrijen
It standert oantal wachtrigen dat by inisjalisaasje troch de stjoerprogramma foar elke Ethernet-poarte ynskeakele is, is gelyk oan it totale oantal CPU's dat beskikber is yn it platfoarm. Dit wurket goed foar in protte platfoarms en workloadkonfiguraasjes. Yn platfoarms mei in hege oantal kearnen en/of hege Ethernet-poartetichtens kin dizze konfiguraasje lykwols boarnekonflikt feroarsaakje. Dêrom kin it yn guon gefallen nedich wêze om de standert foar elke poarte yn it systeem te wizigjen.
It standert oantal Tx/Rx-wachtrigen kin ferskille ôfhinklik fan it spesifike model en de stjoerprogrammaferzje. It oantal wachtrigen kin oanpast wurde mei it hjirûnder neamde kommando ethtool -L.
NOAT
Yn dizze gefallen advisearret Intel dat jo it standert oantal wachtrigen foar elke poarte ferminderje nei net mear as it oantal CPU's dat beskikber is yn it NUMA-knooppunt lokaal foar de adapterpoarte. Yn guon gefallen, by it besykjen om boarnen te balansearjen op ymplemintaasjes mei in heech oantal poarten, kin it nedich wêze om dit oantal noch fierder te ferminderjen.
Om de konfiguraasje fan 'e wachtrige te wizigjen:
De folgjende eksample stelt de poarte yn op 32 Tx/Rx-wachtrijen: ethtool -L ethX kombineare 32
Example útfier:
ethtool -l ethX
Kanaalparameters foar ethX: Foarôf ynstelde maksimumwearden:
RX: 96
TX: 96
Oare: 1
Kombinearre: 96
Hjoeddeiske hardware-ynstellings:
RX: 0
TX: 0
Oare: 1
Kombinearre: 32
4.3 Underbrekingsmoderaasje
Adaptive ûnderbrekkingsmoderaasje is standert oan en is ûntworpen om in lykwichtige oanpak te bieden tusken leech CPU-gebrûk en hege prestaasjes. Jo kinne lykwols besykje ûnderbrekkingsynstellingen manuell ôf te stellen om te passen by jo gebrûksgefal.
It berik fan 0-235 mikrosekonden jout in effektyf berik fan 4,310 oant 250,000 ûnderbrekkingen per sekonde. De wearde fan rx-μsecs-high kin ûnôfhinklik fan rx-μsecs en tx-μsecs yn itselde ethtool-kommando ynsteld wurde, en is ek ûnôfhinklik fan it adaptive ûnderbrekkingsmoderaasjealgoritme. De ûnderlizzende hardware stipet granulariteit yn yntervallen fan 2 mikrosekonden, sadat oanbuorjende wearden kinne resultearje yn deselde ûnderbrekkingsfrekwinsje.
- Om adaptive ûnderbrekkingsmoderaasje út te skeakeljen: ethtool -C ethX adaptive-rx off adaptive-tx off
- Om adaptive ûnderbrekkingsmoderaasje yn te skeakeljen: ethtool -C ethX adaptive-rx on adaptive-tx on
In goed plak om te begjinnen foar algemiene ôfstimming is 84 μs, of ~12000 ûnderbrekkingen/s. As jo sjogge dat rx_dropped-tellers rinne tidens ferkear (mei ethtool -S ethX), dan hawwe jo wierskynlik in te trage CPU, net genôch buffers fan 'e ringgrutte fan' e adapter (ethtool -G) om pakketten 84 μs te hâlden of in te lege ûnderbrekkingsfrekwinsje.
- Om ûnderbrekkingsmoderaasje yn te stellen op in fêste ûnderbrekkingsfrekwinsje fan 84 μs tusken ûnderbrekkingen (12000 ûnderbrekkingen/s): ethtool -C ethX adaptive-rx off adaptive-tx off rx-usecs 84 tx-usecs 84 De folgjende wearde om te besykjen, as jo CPU-gebrûk net maksimaal is, is 62 μs. Dit brûkt mear CPU, mar it ûnderhâldt buffers rapper en fereasket minder deskriptoren (ringgrutte, ethtool -G).
- Om ûnderbrekkingsmoderaasje yn te stellen op in fêste ûnderbrekkingsfrekwinsje fan 62 usecs tusken ûnderbrekkingen (16000 ûnderbrekkingen/s). ethtool -C ethX adaptive-rx off adaptive-tx off rx-usecs 62 tx-usecs 62
As rx_dropped-tellers tanimme tidens ferkear (mei ethtool -S ethX), hawwe jo wierskynlik in te trage CPU, net genôch buffers fan 'e ringgrutte fan' e adapter (ethtool -G), of in te lege ûnderbrekkingssnelheid. As jo CPU-gebrûk net maksimaal is, kinne jo de ûnderbrekkingssnelheid ferheegje troch de ITR-wearde te ferleegjen. Dit brûkt mear CPU, mar ûnderhâldt buffers rapper, en fereasket minder deskriptoaren (ringgrutte, ethtool -G).
As jo CPU op 100% stiet, is it net oan te rieden om de ûnderbrekkingsfrekwinsje te ferheegjen. Yn bepaalde omstannichheden, lykas in CPU-bûne wurkdruk, kinne jo de μs-wearde ferheegje om mear CPU-tiid mooglik te meitsjen foar oare applikaasjes.
As jo prestaasjes mei lege latency nedich binne en/of in soad CPU hawwe om te wijen oan netwurkferwurking, kinne jo ûnderbrekkingsmoderaasje folslein útskeakelje, wêrtroch't de ûnderbrekkingen sa fluch mooglik aktivearre wurde kinne. - Om ûnderbrekkingsmoderaasje út te skeakeljen ethtool -C ethX adaptive-rx off adaptive-tx off rx-usecs 0 tx-usecs 0
NOAT
As jo rinne mei ûnderbrekkingsmoderaasje útskeakele, kin de ûnderbrekkingsfrekwinsje op elke wachtrige tige heech wêze. Beskôgje it opnimmen fan de parameter rx-usec-high om in boppeste limyt yn te stellen foar de ûnderbrekkingsfrekwinsje. It folgjende kommando útskeakelt adaptive ûnderbrekkingsmoderaasje en lit in maksimum fan 5 mikrosekonden ta foardat it oanjout dat in ûntfangst of ferstjoering foltôge is. Ynstee fan te resultearjen yn maksimaal 200,000 ûnderbrekkingen per sekonde, beheint it it totale oantal ûnderbrekkingen per sekonde ta 50,000 fia de parameter rx-usec-high. # ethtool -C ethX adaptive-rx off adaptive-tx off rx-usecs-high 20 rx-usecs 5 txusecs 5 Besykje de timer foar ferstjoeren/ûntfange/hege prioriteitskoaleszjy heger (80/100/150/200) of leger (25/20/10/5) oan te passen om de optimale wearde foar de wurkdruk te finen.
4.4 Ringgrutte
As jo rx_dropped tellers sjogge yn ethtool -S ethX (rx_dropped, rx_dropped.nic), of as jo cachedruk fermoedzje mei meardere aktive wachtrijen, kinne jo besykje de ringgrutte oan te passen fan 'e standertwearde. De standertwearde is 512, it maksimum is 4096.
- Om de aktuele wearden te kontrolearjen: ethtool -g ethX
As der fermoed wurdt dat gebrek oan buffering dalingen feroarsaket by de hjoeddeiske ûnderbrekkingsfrekwinsje, kinne jo earst it maksimum besykje, dan it minimum, en dan trochgean yn in binêre sykaksje oant jo optimale prestaasjes sjogge.
As der fermoeden wurdt dat der cachedruk is (in protte wachtrijen aktyf), kin it ferminderjen fan buffers fan standert Intel® Data Direct I/O (Intel® DDIO) helpe om effisjinter te operearjen. Intel advisearret om 128 of 256 per wachtrij te besykjen, wêrby't bewust wêze moat dat in ferheging fan 'e ûnderbrekkingsfrekwinsje fia ethtool -C nedich wêze kin om in ferheging fan rx_dropped te foarkommen. - Om de ringgrutte op in fêste wearde yn te stellen: ethtool -G eth12 rx 256 tx 256
NOAT
Om Rx-pakketfallen te reparearjen dy't fûn binne mei ethtool -S ethX|grep drop, beskôgje it fergrutsjen fan de ringgrutte nei 4096. Eksperimintearje om de bêste ynstelling foar de wurkdruk te finen, mar pas op foar oermjittich ûnthâldgebrûk mei hegere wearden.
4.5 Flow Control
Laach 2-streamkontrôle kin de TCP-prestaasjes flink beynfloedzje en it wurdt oanrikkemandearre om út te skeakeljen foar de measte workloads. In mooglike útsûndering is bursty-ferkear wêrby't de bursts net lang duorje.
Flowkontrôle is standert útskeakele.
- Om streamkontrôle yn te skeakeljen: ethtool -A ethX rx on tx on
- Om streamkontrôle út te skeakeljen: ethtool -A ethX rx off tx off
NOAT
Jo moatte in keppelingspartner hawwe dy't streamkontrôle kin om streamkontrôle mei súkses yn te skeakeljen.
4.6 Jumbo Frames
As de ferwachte ferkearsomjouwing bestiet út grutte blokken gegevens dy't oerdroegen wurde, kin it foardielich wêze om de jumbo-framefunksje yn te skeakeljen. Stipe foar Jumbo Frames wurdt ynskeakele troch de Maximum Transmission Unit (MTU) te feroarjen nei in wearde dy't grutter is as de standertwearde fan 1500. Dit lit it apparaat gegevens oerdrage yn gruttere pakketten binnen de netwurkomjouwing. Dizze ynstelling kin de trochfier ferbetterje en it CPU-gebrûk ferminderje foar grutte I/O-workloads. It kin lykwols ynfloed hawwe op lytse pakketten of latency-gefoelige workloads.
NOAT
Jumbo-frames of gruttere MTU-ynstellingen moatte goed konfigurearre wurde yn jo netwurkomjouwing.
Brûk it kommando ifconfig om de MTU-grutte te fergrutsjen. Bygelyksample, fier it folgjende yn, wêr is it ynterfacenûmer: ifconfig mtu 9000 omheech
As alternatyf kinne jo it ip-kommando as folget brûke: ip link set mtu 9000 dev ip link ynstelle ûntwikkelder
Platfoarmôfstimming (i40e net-spesifyk)
5.1 BIOS ynstellings
- Skeakelje Intel® VT-d yn foar firtualisaasje-workloads.
- Hyper-threading (logyske prosessors) kin ynfloed hawwe op de prestaasjes. Eksperimintearje mei it oan of út foar jo wurkdruk.
- Intel® Turbo Boost lit CPU-kearnen op in hegere frekwinsje wurkje as de basisfrekwinsje fan 'e CPU. It ynskeakeljen fan Intel® Turbo Boost kin de prestaasjes foar in protte workloads ferbetterje, mar brûkt mear stroom om de kearnen op in hegere frekwinsje te hâlden. Eksperimintearje mei Turbo Boost út/oan foar jo workload.
NOAT
Turbofrekwinsjes wurde net garandearre as it platfoarm in hege totale CPU-gebrûksrate hat. Hegere kearnturbofrekwinsjes wurde fermindere as it totale CPU-gebrûk tanimt.
5.2 Power Management
Enerzjybehear kin ynfloed hawwe op prestaasjes, benammen by workloads mei lege latency. As prestaasjes in hegere prioriteit hawwe as it ferminderjen fan enerzjyferbrûk, advisearret Intel dat jo eksperimintearje mei it beheinen fan de effekten fan enerzjybehear. D'r binne in protte ferskillende manieren om enerzjybehear te beheinen, fia bestjoeringssysteem-ark, BIOS-ynstellingen en kernel-opstartparameters. Kies de bêste metoade en it bêste nivo dat by jo omjouwing past.
5.2.1 C-steatkontrôle
It beheinen fan de yngong fan C-steat ta CO of C1 ferbetteret de prestaasjes en fergruttet it enerzjyferbrûk.
It útskeakeljen fan de steatynfier fan CPU Package C6 kin de netwurkprestaasjes ferbetterje. Dit fergruttet lykwols it enerzjyferbrûk.
De folgjende opsjes binne beskikber:
- Dynamysk de C-steat yngong kontrolearje:
Iepen
/dev/cpu_dma_latency en skriuw de maksimaal tastiene latency deryn.
NOAT
Der is in lyts programma mei de namme cpudmalatency.c dat ynladen wurde kin fan 'e iepen boarne-mienskip, kompilearre wurde kin en fan 'e kommandorigel útfierd wurde kin om krekt dit te dwaan.
De folgjende eksample lit fiif μs wektiid ta, en lit sadwaande C1-yngong ta: cpudmalatency 5 &
- Beheine de maksimale C-steat yn 'e kernel-opstartynstellingen:
Foar Intel CPU's: intel_idle.max_cstates=1
Foar net-Intel CPU's: processor.max_cstates=1 - Brûk it cpupower-kommando om de steat fan CPU C6 te kontrolearjen en út te skeakeljen: Kontrolearje: cpupower monitor of cpupower idle-info
C6 útskeakelje: cpupower idle-set -d3 of
C-steaten útskeakelje: cpupower idle-set -D0
Notysjes:
- Skeakelje C-steaten út op 'e CPU as de server Intel® 4e generaasje Intel® Xeon® skalbere prosessor(s) hat. As Hyper Threading yn- of útskeakele is, foarkomt it útskeakeljen fan idle-steaten (-D0) dat kearnen yn leech-enerzjy-steaten komme tidens idle-perioaden en ferminderet de latency foar de CPU om te wikseljen tusken idle en aktive steaten.
- It enerzjybehear fan 'e Intel® 4e generaasje Intel® Xeon® skalbere prosessor is ekstreem agressyf. Om te foarkommen dat kearnen yn in steat fan leech enerzjyferbrûk komme, kinne jo besykje it oantal kearnen dat yn gebrûk is te ferminderjen om se langer wekker te hâlden (ethtool -L kombinearre ). Bind ek ûnderbrekkings oan spesifike kearnen mei help fan set irq affinity (meastal mei -x local of list mei CPU-kearnen), en soargje derfoar dat de workload op deselde kearnen rint mei taskset of numactl. Dit ferbetteret de prestaasjes troch kearnen aktyf te hâlden en ûnderbrekkingsôfhanneling te optimalisearjen.
C6 ynskeakelje:
cpupower idle-set -d3
C-steaten ynskeakelje:
cpupower idle-set -E
- In oare metoade is om it ôfstimde ark (ynbegrepen by in protte Linux-distribúsjes) te brûken om in prestaasjepro yn te stellen.file. Dizze profiles feroarje ferskate OS-ynstellingen dy't de prestaasjes fan in protte applikaasjes beynfloedzje kinne. It is fûn dat de netwurk-trochput profile biedt ferbettering foar de measte wurkdruk.
Kontrôle:
ôfstimde adm aktyf
Set:
ôfstimde adm profile netwurk-trochput
NOAT
De ôfstimde tsjinst moat rinne foar boppesteande kommando's. Om te kontrolearjen/op 'e nij te starten, ôfstimd: systemctl status ôfstimd systemctl opnij starte ôfstimd
Jo kinne ek elke C-state-yngong ferbiede troch it folgjende ta te foegjen oan 'e kernel-bootline:
idle=enkête - Beheine de C-steat fia de BIOS-enerzjybehearynstellingen fan it systeem, dy't in prestaasjeprofit hawwe kinne.file beskikber.
Tools lykas turbostat of x86_energy_perf_policy kinne brûkt wurde om ynstellings foar enerzjybehear te kontrolearjen of yn te stellen.
5.2.2 PCIe Enerzjybehear
Active-State Power Management (ASPM) makket in legere enerzjystatus mooglik foar PCIe-keppelings as se net aktyf brûkt wurde. Dit kin liede ta in hegere latency op PCIe-netwurkapparaten, dus Intel advisearret dat jo ASPM útskeakelje foar latency-gefoelige workloads. Skeakelje ASPM út troch it folgjende ta te foegjen oan de kernel-bootline: pcie_aspm=off
5.2.3 CPU-frekwinsjeskaling
CPU-frekwinsjeskalering (of CPU-snelheidsskalering) is in Linux-enerzjybeheartechnyk wêrby't de systeemkloksnelheid ûnderweis oanpast wurdt om enerzjy en waarmte te besparjen. Krekt as C-steaten kin dit ûnwinske latency feroarsaakje op netwurkferbiningen.
De cpupower-tool kin ek brûkt wurde om standertynstellingen en limiten foar CPU-prestaasjes te kontrolearjen en te wizigjen:
- Kontrolearje: cpupower-monitor of
- Stel CPU's yn op prestaasjemodus: cpupower frekwinsje-set -g prestaasjes
NOAT
Wizigingen oan CPU-frekwinsjegrinzen kinne ynfloed hawwe op in protte workloads en kinne oare funksjes útskeakelje, lykas CPU-turbomodus.
Om CPU-frekwinsjeskaling út te skeakeljen, skeakelje de CPU-stroomtsjinst út mei de folgjende kommando's:
systemctl stopje cpupower.service
systemctl útskeakelje cpupower.service
5.2.4 Oanfoljende begelieding foar enerzjybehear
Oanfoljende details wurde levere yn dizze hege nivo oerview fan in protte fan 'e enerzjybehearfunksjes yn' e 3e generaasje Intel® Xeon® Scalable-prosessoren, lykas begelieding oer hoe't dizze funksjes op platfoarmnivo yntegrearre wurde kinne: https://networkbuilders.intel.com/solutionslibrary/power-management-technologyoverview-technology-guide
5.3 Intel® Turbo Boost
Intel® Turbo Boost makket de prosessor rapper as it nedich is, mar kin ekstra enerzjy ferbrûke. It útskeakeljen fan Turbo Boost hâldt de prosessor op in konstante snelheid, wêrtroch jo in konsekwint prestaasjenivo krije foar spesifike workloads.
5.4 Firewalls
Firewalls kinne ynfloed hawwe op prestaasjes, benammen latency-prestaasjes.
Skeakelje iptables/firewalld út as it net nedich is.
5.5 Applikaasje ynstellings
Faak is ien thread (dy't oerienkomt mei ien netwurkwachtrige) net genôch om maksimale bânbreedte te berikken. Guon platfoarmarsjitektueren, lykas AMD, hawwe de neiging om mear Rx-pakketten mei ien thread te ferstjoeren yn ferliking mei platfoarms mei Intel-basearre prosessors.
Beskôgje it brûken fan ark lykas taskset of numactl om applikaasjes te pinnen oan it NUMA-knooppunt of CPU-kearnen lokaal foar it netwurkapparaat. Foar guon workloads lykas opslach I/O biedt it ferpleatsen fan de applikaasje nei in net-lokaal knooppunt foardielen.
Eksperimintearje mei it fergrutsjen fan it oantal threads dat brûkt wurdt troch jo applikaasje as it mooglik is.
5.6 Kernelferzje
De measte moderne ynboude kernels binne ridlik goed optimalisearre foar prestaasjes, mar, ôfhinklik fan jo gebrûksgefal, kin it bywurkjen fan 'e kernel ferbettere prestaasjes leverje. It downloaden fan 'e boarnekoade stelt jo ek yn steat om bepaalde funksjes yn/út te skeakeljen foardat jo de kernel bouwe.
5.7 Bestjoeringssysteem/Kernelynstellingen
Rieplachtsje hantliedingen foar it ôfstimmen fan bestjoeringssysteem, lykas de Red Hat Enterprise Linux Network Performance Tuning Guide, foar mear ynsjoch yn algemiene ôfstimmen fan bestjoeringssysteem.
Guon gewoane parameters om ôf te stimmen binne neamd yn 'e folgjende tabel. Tink derom dat dit allinich suggestjes binne foar begjinpunten, en it feroarjen fan har standertynstellingen kin de brûkte boarnen op it systeem ferheegje. Hoewol it ferheegjen fan 'e wearden de prestaasjes kin ferbetterje, is it needsaaklik om te eksperimintearjen mei ferskate wearden om te bepalen wat it bêste wurket foar in bepaald systeem, wurkdruk en ferkearstype.
De kernelparameters binne konfigurearber mei it sysctl-hulpprogramma yn Linux lykas hjirûnder oanjûn.
Nei view de standertwearden foar rmem en wmem op it systeem:
sysctl net.core.rmem_default
sysctl net.core.wmem_default
Stel de wearden yn op maksimaal (16 MB):
sysctl -w net.core.rmem_max=16777216
sysctl -w net.core.wmem_max=16777216
Socketbuffergruttes, ek wol bekend as ûntfangbuffer (rmem) en transmitbuffer (wmem), binne systeemparameters dy't de hoemannichte ûnthâld oantsjutte dy't reservearre is foar ynkommende en útgeande netwurkferkear.
It útfieren fan sysctl sûnder it -w-argumint listet de parameter mei syn hjoeddeistige ynstelling.
Stapelynstelling | Beskriuwing |
net.core.rmem_default | Standert ûntfangstfinstergrutte |
net.core.wmem_default | Standert oerdrachtfinstergrutte |
net.core.rmem_max | Maksimale ûntfangstfinstergrutte |
net.core.wmem_max | Maksimale oerdrachtfinstergrutte |
net.core.optmem_max | Maksimale opsje ûnthâldbuffers |
net.core.netdev_max_backlog | Efterstân fan net-ferwurke pakketten foardat de kernel begjint te sakjen |
net.ipv4.tcp_rmem | Geheugenreservearder foar TCP-lêsbuffers |
net.ipv4.tcp_wmem | Geheugenreservearder foar TCP-ferstjoerbuffers |
Kernel, netwurkstack, ûnthâldhandler, CPU-snelheid en enerzjybehearparameters kinne in grutte ynfloed hawwe op netwurkprestaasjes. In gewoane oanbefelling is om ta te passen op de netwurktrochputpro.file mei it kommando tuned. Dit feroaret in pear OS-ynstellingen om foarkar te jaan oan netwurkapplikaasjes.
Kontrôle:
ôfstimde adm aktyf
Set:
ôfstimde adm profile netwurk-trochput
5.8 Efterstân yn netwurkapparaten
Dizze funksje helpt de netwurkprestaasjes te ferbetterjen troch ynkommende ferkear effektyf te behearjen, pakketferlies te ferminderjen, latency te ferleegjen en de trochfier te ferheegjen. Dit liedt ta in bettere brûkersûnderfining en in rapper systeemreaksje.
Standert is it ynskeakele yn de measte Linux-bestjoeringssystemen. Om de standertwearde te kontrolearjen:
sysctl net.core.netdev_max_backlog
De maksimale wearde foar netdev_max_backlog kin ferskille ôfhinklik fan faktoaren lykas kernelferzje, hardware, ûnthâld en wurkdruk. Yn in protte gefallen wurdt 8192 sjoen as in goede wearde. sysctl -w net.core.netdev_max_backlog=8192
5.9 Platfoarmspesifike konfiguraasjes en ôfstimming
5.9.1 Skalbere Intel® Xeon®-prosessoren fan 'e 4e generaasje
It enerzjybehear fan 'e Intel® 4e generaasje Intel® Xeon® Scalable-prosessor is ekstreem agressyf yn ferliking mei de 3e generaasje Intel® Xeon® Scalable-prosessors. Om te foarkommen dat kearnen yn in steat fan leech enerzjyferbrûk komme, kinne jo besykje it oantal kearnen dat yn gebrûk is te ferminderjen om se langer wekker te hâlden.
Oanrikkemandearre Bios-ynstellingen foar de heechste prestaasjes
- Hyper-threading ynskeakelje/útskeakelje (basearre op 'e wurkdrukeasken en prestaasjedoelen) op 'e CPU.
- Stel it systeem pro ynfile nei Prestaasjes foar de maksimale prestaasjes.
NOAT
Dit resulteart yn heger enerzjyferbrûk - Stel it CPU-enerzjybehear yn op Maksimale prestaasjes om prioriteit te jaan oan maksimale CPU-prestaasjes boppe enerzjy-effisjinsje.
- Turbo Boost ynskeakelje. It útskeakeljen fan Turbo Boost yn 'e BIOS-ynstellingen fan it systeem foarkomt normaal dat de CPU syn kloksnelheid dynamysk ferheget boppe syn basisfrekwinsje.
- NOAT
It útskeakeljen fan Turbo Boost kin geskikt wêze foar bepaalde gebrûksgefallen wêrby't konsekwinte prestaasjes, enerzjy-effisjinsje of termysk behear prioriteit hawwe boppe maksimale prestaasjes. - Skeakelje de funksje Single Root I/O Virtualization (SR-IOV) út as it systeem gjin firtualisaasjetechnologyen brûkt.
- Skeakelje C-steaten út om de CPU te ynstruearjen om aktyf te bliuwen en te foarkommen dat se yn djippere idle-steaten komme.
- Skeakelje C1E út, om te soargjen dat de CPU aktyf bliuwt en net yn 'e C1E-ide-tastân komt.
- Stel de uncore-frekwinsje yn op it maksimum om it systeem te ynstruearjen om op 'e heechst beskikbere frekwinsje te operearjen.
- Stel op Dell-platfoarms de kearnemulaasje fan Multiple APIC Description Table (MADT) yn op Linear (of Round-Robin ôfhinklik fan BIOS) om in dúdlike en foarsisbere mapping fan CPU-kearnen te jaan.
Oanrikkemandearre OS-nivo-ôfstimmingen foar optimalisearre prestaasjes
- Stel de CPU-frekwinsjeskalingsgûverneur yn op prestaasjes. cpupower frekwinsje-set -g prestaasjes cpupower frekwinsje-info
- C-Staten útskeakelje. cpupower idle-set -D0
- Stel de kearn Rx (rmem) en Tx (wmem) buffers yn op de maksimale wearde. sysctl -w net.core.rmem_max=16777216 sysctl -w net.core.wmem_max=16777216
- Stel efterstân fan netwurkapparaat yn. sysctl -w net.core.netdev_max_backlog=8192
- Stel ôfstimde pro ynfile (wurkdruk ôfhinklik fan trochput/latency).
ôfstimde adm profile netwurk-trochput
Oanrikkemandearre adapternivo-ôfstimmingen foar optimalisearre prestaasjes
- Beheine it oantal wachtrijen dat brûkt wurde moat foar applikaasjeferkear. Brûk it minimale oantal wachtrijen dat nedich is om de byhearrende CPU-kearnen aktyf te hâlden om te foarkommen dat se yn djippere idle-tastannen komme (oanpasse foar de wurkdruk): ethtool -L kombinearre 32
- Stel ûnderbrekkingsmoderaasjetariven yn. ethtool -C adaptive-rx út adaptive-tx út rx-usecs-heech 50 rx-usecs 50 tx-usecs 50
Besykje de timer foar ferstjoeren/ûntfangen/koaleszinsje mei hege prioriteit heger (80/100/150/200) of leger (25/20/10/5) oan te passen om de optimale wearde foar de wurkdruk te finen. - Stel de Rx/Tx ringgrutte yn. ethtool -G rx 4096 tx 4096
NOAT
As jo Rx-pakketfallen sjogge mei ethtool -S| grep drop, besykje dan de ringgrutte te ferminderjen nei <4096. Besykje de optimale wearde te finen foar de wurkdruk wêrby't pakketten net falle. - Stel IRQ-affiniteit yn. Brûk kearnen lokaal foar NIC, of spesifike kearnmapping (wêrby't # kearnen gelyk is oan it oantal wachtrijen ynsteld yn 1 op side 26. systemctl stop irqbalance set_irq_affinity -X local OF set_irq_affinity -X
5.9.2 AMD EPYC
AMD EPYC-prosessors binne krêftige CPU's makke foar servers en datasintra, boud op 'e Zen-arsjitektuer fan AMD. De ûndersteande ynstellings binne fan 'e 4e generaasje EPYC-searje fan AMD.
Oanrikkemandearre BIOS-ynstellingen foar de heechste prestaasjes
- Skeakelje de oanpaste modus yn om brûkers de CPU-prestaasjes, it enerzjyferbrûk en oare ynstellings oan te passen. Dit helpt by it fynôfstimmen fan it systeem foar de bêste lykwicht tusken prestaasjes en enerzjy-effisjinsje.
- Skeakelje kearnprestaasjeboost yn om de CPU automatysk syn snelheid te ferheegjen om yntinsiver taken te behanneljen, wêrtroch de algemiene prestaasjes ferbettere wurde.
- Skeakelje wrâldwide C-steatkontrôle út, om te foarkommen dat de CPU djippere enerzjybesparjende steaten yngiet, bekend as C-steaten, dy't de reaksjefermogen kinne behâlde.
NOAT
It útskeakeljen fan C-steaten kin ekstra enerzjyferbrûk feroarsaakje en de termyske temperatueren ferheegje. Kontrolearje beide foar de wurkdruk. - Simultaneous Multithreading (SMT) op 'e CPU yn-/útskeakelje, basearre op 'e wurkdrukeasken en prestaasjedoelen. SMT is lykweardich oan Hyper Threading op Intel CPU's.
NOAT
Foar optimalisearre prestaasjes, sjoch Tuning i40e Driver Settings op side 13 en Platfoarm Tuning (i40e Net-Spesifyk) op side 19 foar de oanrikkemandearre OS- en adapternivo-tuning.
Adapterferbining
Linux-bonding is in krêftige funksje dy't de netwurkprestaasjes, redundânsje en fouttolerânsje yn serveromjouwings signifikant ferbetterje kin. It is lykwols wichtich om te notearjen dat it kompatibel netwurkhardware en juste konfiguraasje op sawol de server as de switch fereasket om goed te funksjonearjen.
Mei de bonding-driver yn Linux kinne jo meardere fysike netwurkynterfaces gearfoegje ta ien bonded interface. Dizze bonded interface ferskynt as ien firtuele netwurkynterface foar it bestjoeringssysteem en applikaasjes.
NOAT
De bonding is in logyske ynterface, dus it is net mooglik om CPU-affiniteit direkt op 'e bonding-ynterface yn te stellen (bygelyksample, bond0). Dat wol sizze, it hat gjin direkte kontrôle oer ûnderbrekkingsôfhanneling of CPU-affiniteit. CPU-affiniteit moat konfigurearre wurde foar de ûnderlizzende ynterfaces dy't diel útmeitsje fan 'e bond.
Bonding biedt ferskate modi fan operaasje, elk mei syn eigen skaaimerken.
Wize | Type |
0 | Round Robin |
1 | Aktive reservekopy |
2 | XOR |
3 | Útstjoering |
4 | LACP |
5 | Oerdrage ladingbalâns |
6 | Adaptive ladingbalâns |
Der binne ferskate metoaden om in bonding yn Linux te meitsjen. Ien fan 'e meast foarkommende metoaden is troch gebrûk te meitsjen fan netwurkkonfiguraasje. files (bglample, /etc/network/ interfaces of /etc/sysconfig/network-scripts/ifcfg-bondX).
Konfiguraasje mei help fan netwurkkonfiguraasje Files
De folgjende stappen meitsje bonding fia de netwurkkonfiguraasje files.
- Selektearje twa of mear NIC-poarten foar bonding (bygelyksample, ethX en ethY)
- Iepenje NIC-konfiguraasje Files ûnder /etc/sysconfig/network-scripts/ foar de fereaske NIC-ynterface (bygelyksample, vi ifcfg-ethX en vi ifcfg-ethY) en foegje de folgjende tekst ta:
MASTER=bondN [Opmerking: N is in hiel getal om it bondnûmer oan te jaan.] SLAVE=ja - Meitsje in skript foar bondnetwurk file mei help fan vi /etc/sysconfig/networkscripts/ifcfg-bondN en fier de folgjende tekst yn:
DEVICE=bondN [Opmerking: N is in hiel getal om it bondnûmer te neamen] ONBOOT=ja USERCTL=nee BOOTPROTO=dhcp (of) gjin
IPADDR=200.20.2.4 [ferplicht as BOOTPROTO=gjin] NETMASK=255.255.255.0 [ferplicht as BOOTPROTO=gjin] NETWORK=200.20.2.0 [ferplicht as BOOTPROTO=gjin] BROADCAST=200.20.2.255 [ferplicht as BOOTPROTO=gjin] BONDING_OPTS=”mode=1 miimon=100″
NOAT
De modus kin elk hiel getal wêze fan 0 oant 6, ôfhinklik fan 'e eask. - Start de netwurktsjinsten opnij op mei de tsjinst netwurk opnij starte of systemctl opnij starte NetworkManager.service
Performance Troubleshooting
7.1 CPU-gebrûk
Kontrolearje it CPU-gebrûk per kearn wylst de workload rint.
Tink derom dat gebrûk per kearn relevanter is foar prestaasjes as it totale CPU-gebrûk, om't it in idee jout fan it CPU-gebrûk per netwurkwachtrige. As jo mar in pear threads hawwe dy't netwurkferkear útfiere, dan hawwe jo miskien mar in pear kearnen dy't brûkt wurde. As dy kearnen lykwols op 100% binne, dan wurdt jo netwurktrochfier wierskynlik beheind troch CPU-gebrûk en is it tiid om it folgjende út te fieren:
- Stel IRQ-moderaasje/ringgrutte yn lykas detaillearre yn Underbrekmoderaasje.
- Fergrutsje it oantal applikaasjethreads om de CPU-belesting oer mear kearnen te fersprieden. As alle kearnen op 100% draaie, dan kin jo applikaasje CPU-bûn wêze ynstee fan netwurkbûn.
Algemien beskikbere ark:
- top
— Druk op 1 om de list mei CPU's út te wreidzjen en te kontrolearjen hokker brûkt wurde.
- Let op it nivo fan gebrûk.
— Let op hokker prosessen as it meast aktyf neamd wurde (boppe-oan de list). - mpstat
De folgjende eksampDe kommandorigel waard test op Red Hat Enterprise Linux 7.x.
It toant CPU-gebrûk per kearn (troch it totale persintaazje idle te finen en ôf te lûken fan 100) en markearret de wearden boppe 80% yn read. mpstat -P ALL 1 1 | grep -v Average | tail -n +5 | head -n -1 | awk '{ print (100-$13)}' | egrep -color=always '[^\.][8-9][0-9][\.]?.*|^[8-9][0-9][\.]?.*| 100|' | kolom - perf top Sykje nei wêr't syklusen bestege wurde.
7.2 i40e Tellers
De i40e-stjoerprogramma leveret in lange list mei tellers foar ynterface-debug en monitoring fia it ethtool -S ethX-kommando. It kin handich wêze om de útfier te besjen wylst in workload rint en/of de tellerwearden foar en nei in workload-útfier te fergelykjen.
- Om in folsleine dump fan i40e-tellers te krijen: ethtool -S ethX
- Om allinich net-nul tellers te besjen: watch -d (ethtool -S ethX) | egrep -v :\ 0 | kolom
Guon dingen om nei te sykjen: - rx_dropped betsjut dat de CPU buffers net fluch genôch ûnderhâldt.
- port.rx_dropped betsjut dat der wat net rap genôch is yn it slot/ûnthâld/systeem.
7.3 Netwurktellers
Kontrolearje netstat -s foar/nei in workload-útfier.
Netstat sammelet netwurkynformaasje fan alle netwurkapparaten yn it systeem. Dêrom kinne resultaten beynfloede wurde troch oare netwurken as it netwurk dat test wurdt. De útfier fan netstat -s kin in goede yndikator wêze fan prestaasjeproblemen yn it Linux-bestjoeringssysteem of de kernel. Rieplachtsje hantliedingen foar it ôfstimmen fan bestjoeringssysteem, lykas de Red Hat Enterprise Linux Network Performance Tuning Guide, foar mear ynsjoch yn algemiene ôfstimmen fan bestjoeringssysteem.
7.4 Systeemlogboeken
Kontrolearje systeemlogboeken op flaters en warskôgings (/var/log/messages, dmesg).
7.5 Intel svr-info Tool
Intel leveret in svr-info-ark (sjoch https://github.com/intel/svr-info) foar Linux dat relevante hardware- en softwaredetails fan in server fêstleit. svr-info-útfier kin tige nuttich wêze om systeemknelpunten of ynstellingen/ôfstimmingen te identifisearjen dy't net optimalisearre binne foar de wurkdruk. As jo in stipegefal iepenje mei Intel foar Ethernet-relatearre prestaasjesproblemen, soargje derfoar dat jo svr-info-útfier opnimme (tekst file) foar elke Linux-tsjinner yn 'e testkonfiguraasje.
- Download en ynstallearje svr-info:
wget -qO- https://github.com/intel/svr-info/releases/latest/download/svrinfo.tgz| tar xvz cd svr-ynfo
./svr-ynfo
> hostnamme.txt - Sammelje de útfier:
./svr-info > hostnamme.txt - Ien tekst (.txt) taheakje file foar elke tsjinner nei jo Intel-stipegefal foar analyze.
Oanbefellings foar mienskiplike prestaasjescenario's
8.1 IP-trochstjoering
- De kernel bywurkje.
Guon resinte yn-distro kernels hawwe de routingprestaasjes fermindere fanwegen kernelwizigingen yn 'e routingkoade, begjinnend mei it fuortheljen fan 'e routingcache fanwegen feiligens. Resinte out-of-distro kernels moatte patches hawwe dy't de ynfloed op prestaasjes fan dizze feroarings ferminderje en miskien ferbettere prestaasjes leverje. - Hyper-threading (logyske kearnen) útskeakelje.
- Bewurkje de kernel-opstartparameters.
— Twing iommu út (intel_iommu=off of iommu=off) fan 'e kernel-opstartline, útsein as dit nedich is foar firtualisaasje
— Enerzjybehear útskeakelje: processor.max_cstates=1 idle=poll pcie_aspm=off - Beheine it oantal wachtrijen sadat it gelyk is oan it oantal kearnen op 'e lokale socket (12 yn dit foarbyldample). ethtool -L ethX kombinearre 12
- Pin-ûnderbrekkingen allinich nei lokale socket. set_irq_affinity -X local ethX OF set_irq_affinity -X local ethX
NOAT
-X of -x kin brûkt wurde ôfhinklik fan 'e wurkdruk. - Feroarje de ringgrutte fan Tx en Rx as nedich. In gruttere wearde kostet mear boarnen, mar kin bettere trochstjoersnelheden leverje. ethtool -G ethX rx 4096 tx 4096
- Skeakel GRO út by it routearjen.
Fanwegen in bekend kernelprobleem moat GRO útskeakele wurde by it routearjen/trochstjoeren. ethtool -K ethX gro út wêrby't ethX de Ethernet-ynterface is dy't oanpast wurde moat. - Skeakelje adaptive ûnderbrekkingsmoderaasje út en stel in statyske wearde yn. ethtool -C ethX adaptive-rx off adaptive-tx off ethtool -C ethX rx-usecs 64 tx-usecs 64
NOAT
Ofhinklik fan it type prosessor en wurkdruk kinne de koaleszinsparameters foar RX en TX oanpast wurde foar ferbettere prestaasjes (of minder frameferlies).
- Skeakelje de firewall út. sudo systemctl útskeakelje firewalld sudo systemctl stopje firewalld
- IP-trochstjoering ynskeakelje. sysctl -w net.ipv4.ip_forward=1
- Konfigurearje maksimale wearden foar de buffergruttes foar ûntfange en ferstjoere fan sockets. sysctl -w net.core.rmem_max=16777216 sysctl -w net.core.wmem_max=16777216
NOAT
Ofhinklik fan 'e wurkdruk of eask kinne dizze wearden feroare wurde fan 'e standertwearde.
8.2 Lege Latinsje
- Skeakel hyper-threading (logyske kearnen) ÚT.
- Soargje derfoar dat it netwurkapparaat lokaal is foar numa core 0.
- Pin de benchmark oan kearn 0 mei taskset -c 0.
- Skeakelje irqbalance út mei systemctl, stop irqbalance of systemctl, deaktivearje irqbalance.
- Fier it affiniteitsskript út om it oer kearnen te fersprieden. Besykje it lokaal of alles.
- Skeakelje ûnderbrekkingsmoderaasje út. ethtool -C ethX rx-usecs 0 tx-usecs 0 adaptive-rx off adaptive-tx off rxusecs- high 0
- Beheine it oantal wachtrijen sadat it gelyk is oan it oantal kearnen op 'e lokale socket (32 yn dit foarbyld)ample). ethtool -L ethX kombinearre 32
- Pin-ûnderbrekkingen allinich nei lokale socket (skript ynpakt mei i40e-stjoerprogrammaboarne). set_irq_affinity -X local ethX
- Brûk in fêststelde benchmark lykas netperf -t TCP_RR, netperf -t UDP_RR, of NetPipe. netperf -t TCP_RR of netperf -t UDP_RR
- Pin benchmark oan ien kearn yn it lokale NUMA-knooppunt. taskset -c
Intel® Ethernet 700-searje
Gids foar it oanpassen fan Linux-prestaasjes
desimber 2024
Dok. nr.: 334019, Rev.: 1.2
Dokuminten / Resources
![]() |
Intel Ethernet 700-searje Linux-prestaasjetuning [pdf] Brûkersgids 334019, Ethernet 700-searje Linux-prestaasjeôfstimming, Ethernet 700-searje, Linux-prestaasjeôfstimming, prestaasjeôfstimming, ôfstimming |