Intel-logoIntel ® Ethernet 700-reeks
Linux-prestasie-instellingsgids
NEX Cloud Networking Group (NCNG)
Rev. 1.2
Desember 2024

Hersieningsgeskiedenis

Hersiening Datum Kommentaar
1.2 Desember 2024 · Bykomende kragbestuursriglyne bygevoeg.
· Bygevoeg Intel* Turbo Boost.
· Bygevoeg netwerk toestel agterstand.
· Bygevoeg platform-spesifieke konfigurasies en instemming.
· Bygevoeg 4de generasie Intel* %eon* skaalbare verwerkers.
· Bygevoeg AMD EPYC.
· Bygewerkte Kontroleer Stelselhardeware-vermoëns.
· Opgedateer iPerf2.
· Opgedateer iPerf3.
· Opgedateerde Tx/Rx-toue.
· Opgedateerde Onderbreking Moderering.
· Opgedateerde ringgrootte.
· Opgedateerde platforminstelling (i40e nie-spesifiek).
· Bygewerkte BIOS-instellings.
· Opgedateerde C-State Control.
· Opgedateerde SVE-frekwensieskaal.
· Opgedateerde toepassingsinstellings.
· Opgedateerde bedryfstelsel/kerninstellings.
· Opgedateerde IP-aanstuur.
· Lae vertraging opgedateer.
Augustus 2023 Veranderinge aan hierdie dokument sluit in:
· Verwante verwysings bygevoeg.
· Bygevoeg Maak seker dat DDP-pakket behoorlik laai.
· Bygevoeg iPerf2.
· Bygevoeg iPerf3.
· Bygevoeg netperf.
· Opgedateerde IRQ-affiniteit.
· Tx/Rx-toue bygevoeg.
· Opgedateerde ringgrootte.
· Jumbo-rame bygevoeg.
· Bygevoeg Adapter Bonding.
· Bygevoeg Intel svr-info Tool.
1.0 Maart 2016 Aanvanklike vrystelling (Intel Public).

Inleiding

Hierdie gids is bedoel om leiding te verskaf vir die instel van omgewings vir optimale netwerkwerkverrigting deur gebruik te maak van 'n Intel ® Ethernet 700-reeks NIC's in Linux-omgewings. Dit fokus op hardeware, drywer en bedryfstelsel toestande en instellings wat netwerkwerkverrigting kan verbeter. Daar moet kennis geneem word dat netwerkprestasie deur enige aantal invloede van buite beïnvloed kan word, slegs die algemeenste en mees dramatiese hiervan word in hierdie gids gedek.
1.1 Verwante verwysings

Aanvanklike kontrolelys

2.1 Dateer drywer-/firmwareweergawes op
Gaan die drywer-/firmwareweergawes na deur gebruik te maak van ethtool -i ethx.
Dateer die volgende op soos nodig:

2.2 Lees die LEESMY
Kyk vir bekende probleme en kry die nuutste konfigurasie-instruksies van die README file ingesluit in die i40e-bronpakket.
2.3 Kontroleer dat jou PCI Express (PCIe)-gleuf x8 is
Sommige PCIe x8-gleuwe is eintlik as x4-gleuwe gekonfigureer. Hierdie gleuwe het onvoldoende bandwydte vir volle lyntempo met dubbelpoort- en vierpoorttoestelle. Daarbenewens, as jy 'n PCIe v3.0-geskikte adapter in 'n PCIe v2.x-gleuf plaas, kan jy nie volle bandwydte kry nie. Die sagteware-toestelbestuurder bespeur hierdie situasie en skryf die volgende boodskap in die stelsellogboek:
PCI-Express-bandwydte wat vir hierdie kaart beskikbaar is, is nie voldoende vir optimale werkverrigting nie. Vir optimale werkverrigting word 'n x8 PCI-Express-gleuf benodig.
As hierdie fout voorkom, skuif jou adapter na 'n ware PCIe v3.0 x8-gleuf om die probleem op te los.
2.4 Gaan Stelselhardeware-vermoëns na
By 10 Gbps, 25 Gbps en 40 Gbps Ethernet is daar 'n paar minimum SVE- en stelselvereistes. Oor die algemeen behoort 'n moderne bedienerklasverwerker en optimale geheuekonfigurasie vir jou platform voldoende te wees, maar die behoeftes wissel na gelang van jou werklading. Alle geheuekanale moet gevul word en geheueprestasiemodus moet in die BIOS geaktiveer word. Verifieer dat jou SVE en geheue konfigurasie in staat is om die vlak van netwerkwerkverrigting te ondersteun wat jy vir jou werklading benodig.
LET WEL
Die XL710 is 'n 40 GbE kontroleerder. Die 2 x 40 GbE-adapter wat hierdie beheerder gebruik, is nie bedoel om 'n 2 x 40 GbE te wees nie, maar 'n 1 x 40 GbE met 'n aktiewe rugsteunpoort. Wanneer probeer word om lynsnelheidverkeer te gebruik wat beide poorte behels, is die interne skakelaar versadig en die gekombineerde bandwydte tussen die twee poorte is beperk tot 'n totaal van SO Gbps.
2.4.1 Kernelboot-parameters
As Intel® Virtualization Technology for Directed I/O (Intel® VT-d) in die BIOS geaktiveer is, beveel Intel aan dat IOMMU in deurlaatmodus is vir optimale gasheernetwerkwerkverrigting. Dit skakel DMA-bokoste op gasheerverkeer uit, terwyl virtuele masjiene (VM's) steeds die voordele van Intel® VT-d in staat stel. Dit word bewerkstellig deur die volgende reël by die kernopstartparameters by te voeg: fommu-pt.
2.5 Maak seker dat DDP-pakket behoorlik laai
140ea en 140eb basisbestuurders het nie direkte ondersteuning vir Dynamic Device Personalization (DDP) nie. Om DDP met 700-reeks toestelle te gebruik, 'n DDP profile kan toegepas word met die testpmd-toepassing.
Vir besonderhede oor DDP profiles, en hoe om 'n DDP pro toe te pasfile met testpmd op 700 Series toestelle, verwys na die Intel® Ethernet 700 Series Dynamic Device Personalization (DDP) Tegnologiegids.
Om te verifieer of 'n DDP profile is suksesvol gelaai:
testpmd> ddp kry lys 0 Profile nommer is: 1
LET WEL
As die profile nommer is 0, geen DDP-pakket is gelaai nie. In die geval van 'n DDP-pakketlaaifout, is die toestel verstek na veilige modus en baie werkverrigtingkenmerke is nie beskikbaar nie. As daar foute is wat verband hou met die laai van die DDP-pakket, sal dit prestasieprobleme veroorsaak. Vir foutsporingstappe, verwys na die Inte/* Ethernet 700 Series Dynamic Device Personalization (DDP) Tegnologiegids.

Basislyn prestasiemetings en instelmetodologie

3.1 Netwerkprestasiemaatstawwe
Voordat u met 'n insteloefening begin, is dit belangrik om 'n goeie basislynmeting van u netwerkprestasie te hê. Benewens die aanvanklike meting van jou spesifieke toepassing/werklading se werkverrigting, is dit gewoonlik 'n goeie idee om ook 'n standaard netwerkwerkverrigtingmaatstaf te gebruik om te verifieer dat jou netwerktoestel in 'n goeie toestand is.
Vir enkelstelseloptimering is netperf of iperf en NetPIPE almal soliede opensource-gratis nutsmiddels wat jou in staat stel om 'n verbinding te beklemtoon en prestasiekwessies te diagnoseer.
Netperf is sterk vir beide deurset- en latensietoetsing. NetPIPE is 'n latensie-spesifieke instrument, maar kan vir enige soort omgewing saamgestel word.
LET WEL
Die TCP_RR-toets in netperf gee latensie terug in 'n waarde van transaksies/sek. Dit is 'n heen-en-weer nommer. Die eenrigting latency kan bereken word deur die volgende vergelyking te gebruik:
Latency(usec) = (1⁄2) / [Transaksies/sek] * 1,000,000 XNUMX XNUMX
3.1.1 iPerf2
Intel beveel iperf2 bo iperf3 aan vir die meeste maatstafsituasies as gevolg van die gemak van gebruik en ondersteuning van veelvuldige drade in 'n enkele toepassingsinstansie. Intel beveel aan om met die -P-opsie te hardloop met 2-4 drade vir 25G-verbindings en ongeveer 4-6 drade vir 40G-verbindings.

  • Om eenrigtingverkeer van kliënt na bediener uit te voer: Bedieneropdrag bvample: iperf2 -s
    Kliënt opdrag bvample: iperf2 -c -P
  • Om tweerigtingverkeer van kliënt na bediener te laat loop (en omgekeerd): Bedieneropdrag bvample: iperf2 –s –p
    Kliënt opdrag bvample:
    iperf2 -c -p -P --vol-dupleks OF
    iperf2 -c -p -P -d

LET WEL
Beide die -full-dupleks en -d opsies in iperf2 laat gebruiker toe om tweerigtingtoetse uit te voer. Die –voldupleks-opsie fokus egter spesifiek op volduplekstoetsing.
LET WEL
Wanneer iperf2 oor verskeie bedienerpoorte getoets word, kan die -d-vlag by die bedieneropdrag gevoeg word om alle bedienersessies in die agtergrond vanaf dieselfde terminale venster uit te voer. Die -d-vlag kan ook gebruik word wanneer die bedieneropdrag in 'n for-lus in 'n skrip ingebed is.
LET WEL
Wanneer die netwerkdeurvoertoets met 'n enkele stroom/draad uitgevoer word (bvample: P1), sal AMD-verwerkers dalk nie verwagte deurset verskaf nie, veral hoër bandwydte NIC's (indien spoed >= 25G bandwydte is). As gevolg hiervan, is toepassing vaspen aan spesifieke kerns nodig om hoër deurset te bereik. Sien Toepassingsinstellings op bladsy 22.
3.1.2 iPerf3
As iperf3 gebruik word, word verskeie gevalle van die toepassing vereis om voordeel te trektage van die multi-threads, RSS, en hardeware toue. Intel beveel aan om met die 2-4 toepassingsessies vir 25G-verbindings te hardloop en ongeveer 4-6 sessies vir 40G-verbindings. Elke sessie moet 'n unieke TCP-poortwaarde spesifiseer deur die -p opsie te gebruik.

  • Om eenrigtingverkeer van kliënt na bediener te laat loop:
    Bedieneropdrag bvample:
    iperf3 -s -p
    Kliënt opdrag bvample:
    iperf3 -c -p
  • Om tweerigtingverkeer van kliënt na bediener te laat loop (en omgekeerd):
    Bedieneropdrag bvample:
    iperf3 –s –p
    Kliënt opdrag bvample: iperf3 -c -p -P – bidir
  • Om veelvuldige gevalle (drade) van iperf3 te begin, is die aanbeveling om 'n for-lus te gebruik om drade na TCP-poorte te karteer en iperf3 op die agtergrond te laat loop deur & te gebruik om veelvuldige prosesse in parallel te skep.
    Bedieneropdrag bvample, begin 4 drade: port=""; vir i in {0..3}; doen poort=520$i; bash -c "iperf3 -s -p $port &"; gedoen; Kliënt opdrag bvample, begin 4 drade – Stuur toetspoort =””; vir i in {0..3}; doen poort=520$i; bash -c "iperf3 -c $serverIP -p $poort &"; gedoen; Kliënt opdrag bvample, begin 4 drade – Ontvang toetspoort =””; vir i in {0..3}; doen poort=520$i; bash -c "iperf3 -R -c $bedienerIP -p $poort &"; gedoen; Vir 40G-verbindings, verhoog die for-lus om tot 6 gevalle/drade te skep.

LET WEL
Wanneer die netwerkdeurvoertoets met 'n enkele stroom/draad uitgevoer word (bvample: P1), sal AMD-verwerkers moontlik nie verwagte deurset verskaf nie, veral hoër bandwydte
NIC's (indien spoed >= 25G-bandwydte is). As gevolg hiervan, is toepassing vaspen aan spesifieke kerns nodig om hoër deurset te bereik. Sien Toepassingsinstellings op bladsy 22 en AMD EPYC op bladsy 26.
3.1.3 netperf
Die netperf-instrument is 'n sterk keuse vir beide deurset- en latensietoetsing.

  • Die TCP_STREAM-toets in netperf meet die deursetvermoë van die toestel. Bedieneropdrag bvample: netbediener Kliënt opdrag bvample: netperf -t TCP_STREAM -l 30 -H
  • Die TCP_RR-toets in netperf gee latensie terug in 'n waarde van transaksies/sekonde. Dit is 'n heen-en-weer nommer. Dit word aanbeveel om die -T x,x-opsie te gebruik, waar x SVE plaaslik op die toestel is. Die eenrigting latency kan bereken word deur gebruik te maak van: Latency(usec)=(1⁄2)/ [Transaksies/sek]*1,000,\ Bedieneropdrag bv.ample: netbediener
    Kliënt opdrag bvample: netperf -t TCP_RR -l 30 -H -T x,x
  • Om veelvuldige gevalle (drade) van netperf te begin, is die aanbeveling om 'n for-lus te gebruik om drade na TCP-poorte te karteer en netperf op die agtergrond te laat loop deur & te gebruik om verskeie prosesse parallel te skep.
    Bedieneropdrag bvample, begin 8 drade:
    poort=""; vir i in {0..7}; doen poort=520$i; bash -c "netbediener -L $bedienerIP -p $poort &"; gedoen;
    Kliënt opdrag bvample, begin 8 drade: port=""; vir i in {0..7}; doen poort=520$i; bash -c "netperf -H $serverIP -p $port -t TCP_STREAM -l 30 &"; gedoen;

3.2 Stemmetodologie
Fokus op een instelverandering op 'n slag sodat jy weet watter impak elke verandering op jou toets maak. Hoe meer metodies jy in die instelproses is, hoe makliker sal dit wees om die oorsake van prestasie-knelpunte te identifiseer en aan te spreek.

Stel i40e-bestuurderinstellings in

4.1 IRQ Affiniteit
Die konfigurasie van IRQ-affiniteit sodat onderbrekings vir verskillende netwerkrye aan verskillende SVE-kerns geaffiniseer word, kan 'n groot impak op werkverrigting hê, veral multithread-deursettoetse.
Om IRQ-affiniteit op te stel, stop irqbalance en gebruik dan óf die set_irq_affinity-skrip van die i40e-bronpakket óf pen toue met die hand vas. Deaktiveer gebruiker-spasie IRQ balanseerder om tou vas te maak:

  • systemctl deaktiveer irqbalance
  • systemctl stop irqbalance
    Gebruik die set_irq_affinity-skrip vanaf die i40e-bronpakket (aanbeveel):
  • Om alle kerns te gebruik:
    [pad-na-i40epackage]/scripts/set_irq_affinity -X alle ethX
  • Om slegs kerns op die plaaslike NUMA-sok te gebruik: [path-to-i40epackage]/scripts/set_irq_affinity -X local ethX
  • U kan ook 'n reeks kerns kies. Vermy die gebruik van cpu0 omdat dit timertake laat loop. [pad-na-i40epackage]/scripts/set_irq_affinity 1-2 ethX

LET WEL
Die affiniteitskrip aktiveer Transmit Packet Steering (XPS) as deel van die vaspenproses wanneer die -x-opsie gespesifiseer word. Wanneer XPS geaktiveer is, beveel Intel aan dat jy irqbalance deaktiveer, aangesien die kernbalanseerder met XPS onvoorspelbare werkverrigting kan veroorsaak. Die affiniteitskrip deaktiveer XPS wanneer die -X-opsie gespesifiseer word. Die deaktivering van XPS en die aktivering van simmetriese rye is voordelig vir werkladings waar die beste werkverrigting behaal word wanneer Tx- en Rx-verkeer op dieselfde tou-paar(s) gediens word.
Die opstel van simmetriese rye in Linux behels die instelling van die netwerkkoppelvlakbestuurderparameters om simmetriese ontvangsrye (Rx) en simmetriese versendingrye (Tx) vir ondersteunde netwerkadapters moontlik te maak.
LET WEL

  • Simmetriese toue is 'n gevorderde netwerkfunksie, en nie alle 700-reeks netwerkadapters of drywers ondersteun dit nie.
  • Maak seker dat jy die nodige bestuurder- en hardeware-ondersteuning het voordat jy probeer om simmetriese toue op te stel.

Volg hierdie algemene stappe om simmetriese toue op te stel:

  1. Wysig netwerkkoppelvlakkonfigurasie File: Gebruik 'n teksredigeerder (bvample, vi, nano of gedit) om die netwerkkoppelvlakkonfigurasie te wysig file. Die file is tipies onder die /etc/sysconfig/network-scripts/-gids geleë en het 'n naam soos ifcfg-ethX, waar ethX die naam van jou netwerkkoppelvlak is.
  2. Voeg simmetriese tou-parameters by. Voeg die volgende reëls by die netwerkkoppelvlakkonfigurasie file: ETHTOOL_OPTS=”rx-toue 8 tx-toue 8″
  3. Herbegin netwerkdiens.
    Nadat u die veranderinge aangebring het, herbegin die netwerkdiens om die nuwe konfigurasie toe te pas. sudo systemctl herbegin netwerk

Handmatig:

  • Vind die verwerkers wat aan elke nodus geheg is deur gebruik te maak van: numactl –hardware lscpu
  • Vind die bis-maskers vir elk van die verwerkers:
  • Aanvaar kerns 0-11 vir nodus 0: [1,2,4,8,10,20,40,80,100,200,400,800]
  • Vind die IRQ's wat aan die poort wat toegewys is: grep ethX /proc/interrupts en let op die IRQ-waardes.ample, 181-192 vir die 12 vektore wat gelaai is.
  • Eggo die SMP-affiniteitswaarde in die ooreenstemmende IRQ-inskrywing. Let daarop dat dit vir elke IRQ-inskrywing gedoen moet word: eggo 1 > /proc/irq/181/smp_affinity echo 2 > /proc/irq/182/smp_affinity eggo 4 > /proc/irq/183/smp_affinity Wys IRQ-affiniteit:
  • Om die IRQ-affiniteit vir alle kerns te wys: /scripts/set_irq_affinity -s ethX
  • Om slegs kerns op die plaaslike NUMA-sok te wys: /scripts/set_irq_affinity -s plaaslike ethX
  • U kan ook 'n reeks kerns kies: /scripts/set_irq_affinity -s 40-0-8,16 ethX

LET WEL
Die set_irq_affinity script ondersteun die -s vlag in i40e bestuurder weergawe 2.16.11 en later.
4.2 Tx/Rx-toue
Die verstek aantal toue wat vir elke Ethernet-poort geaktiveer is deur die bestuurder by initialisering is gelyk aan die totale aantal SVE's wat op die platform beskikbaar is. Dit werk goed vir baie platforms en werkladingkonfigurasies. In platforms met hoë kerntellings en/of hoë Ethernet-poortdigtheid kan hierdie konfigurasie egter hulpbronkonflik veroorsaak. Daarom kan dit in sommige gevalle nodig wees om die verstek vir elke poort in die stelsel te verander.
Die verstek aantal Tx/Rx-rye kan wissel na gelang van die spesifieke model en bestuurderweergawe. Die aantal toue kan aangepas word met die ethtool -L-opdrag wat hieronder gelys word.
LET WEL
In hierdie gevalle beveel Intel aan dat jy die verstekwagtelling vir elke poort verminder tot nie meer as die aantal SVE's wat beskikbaar is in die NUMA-nodus plaaslik tot die adapterpoort nie. In sommige gevalle, wanneer daar gepoog word om hulpbronne te balanseer op implementerings met 'n hoë poorttelling, kan dit nodig wees om hierdie getal selfs verder te verminder.
Om tou-opstelling te verander:
Die volgende example stel die poort op 32 Tx/Rx-rye: ethtool -L ethX gekombineer 32
Example uitset:
ethool -l ethX
Kanaalparameters vir ethX: Vooraf ingestelde maksimums:
RX: 96
TX: 96
Ander: 1
Gekombineer: 96
Huidige hardeware instellings:
RX: 0
TX: 0
Ander: 1
Gekombineer: 32
4.3 Onderbreking Moderering
Aanpasbare onderbreking moderering is by verstek aan en is ontwerp om 'n gebalanseerde benadering tussen lae SVE-benutting en hoë werkverrigting te bied. Jy kan egter probeer om onderbrekingsinstellings handmatig in te stel om by jou gebruiksgeval te pas.
Die reeks van 0-235 mikrosekondes bied 'n effektiewe reeks van 4,310 250,000 tot 2 XNUMX onderbrekings per sekonde. Die waarde van rx-μsecs-hoog kan onafhanklik van rx-μsecs en tx-μsecs in dieselfde ettool-opdrag gestel word, en is ook onafhanklik van die aanpasbare onderbreking modereringsalgoritme. Die onderliggende hardeware ondersteun korreligheid in intervalle van XNUMX mikrosekondes, dus kan aangrensende waardes tot dieselfde onderbrekingstempo lei.

  • Om aanpasbare onderbreking moderering af te skakel: ethtool -C ethX adaptive-rx off adaptive-tx off
  • Om aanpasbare onderbreking moderering aan te skakel: ethtool -C ethX adaptive-rx on adaptive-tx on

'n Goeie plek om te begin vir algemene afstemming is 84 μs, of ~12000 onderbrekings/s. As jy sien dat rx_dropped tellers loop tydens verkeer (met ethtool -S ethX), dan het jy waarskynlik 'n te stadige SVE, nie genoeg buffers van die adapter se ringgrootte (ethtool -G) om pakkies vir 84 μs of te laag van 'n onderbrekingstempo te hou nie.

  • Om onderbrekingsmoderering op 'n vaste onderbrekingstempo van 84 μs tussen onderbrekings (12000 onderbrekings/s) te stel: ethtool -C ethX adaptive-rx off adaptive-tx off rx-usecs 84 tx-usecs 84 Die volgende waarde om te probeer, as jy nie maksimeer is op CPU62-benutting nie. Dit gebruik meer SVE, maar dit bedien buffers vinniger en vereis minder beskrywers (ringgrootte, ettool -G).
  • Om onderbrekingsmoderering in te stel op vaste onderbrekingstempo van 62 usecs tussen onderbrekings (16000 onderbrekings/s). ethtool -C ethX adaptive-rx af adaptive-tx af rx-usecs 62 tx-usecs 62
    As rx_dropped tellers toeneem tydens verkeer (met ethtool -S ethX), het jy waarskynlik 'n te stadige SVE, nie genoeg buffers van die adapter se ringgrootte (ethtool -G), of 'n te laag onderbrekingstempo. As jy nie die maksimum gebruik van SVE is nie, kan jy die onderbrekingskoers verhoog deur die ITR-waarde te verlaag. Dit gebruik meer SVE, maar dienste buffer vinniger, en vereis minder beskrywers (ringgrootte, ettool -G).
    As jou SVE op 100% is, word dit nie aanbeveel om die onderbrekingstempo te verhoog nie. In sekere omstandighede, soos 'n SVE-gebonde werklading, wil jy dalk die μs-waarde verhoog om meer SVE-tyd vir ander toepassings moontlik te maak.
    As jy lae latensie-werkverrigting benodig en/of baie SVE het om aan netwerkverwerking te bestee, kan jy onderbrekingsmoderering heeltemal deaktiveer, wat die onderbrekings in staat stel om so vinnig as moontlik te vuur.
  • Om onderbreking moderering te deaktiveer ethtool -C ethX adaptive-rx af adaptive-tx af rx-usecs 0 tx-usecs 0

LET WEL
Wanneer hardloop met onderbreking moderering gedeaktiveer, kan die onderbreking koers op elke tou baie hoog wees. Oorweeg dit om die rx-usec-high parameter in te sluit om 'n boonste limiet op onderbrekingstempo te stel. Die volgende opdrag deaktiveer aanpasbare onderbreking moderering en laat 'n maksimum van 5 mikrosekondes toe voordat dit aandui dat 'n ontvangs of versending voltooi is. In plaas daarvan om soveel as 200,000 50,000 onderbrekings per sekonde tot gevolg te hê, beperk dit die totale onderbrekings per sekonde tot 20 5 via die rx-usec-high parameter. # ethtool -C ethX adaptive-rx af adaptive-tx af rx-usecs-high 5 rx-usecs 80 txusecs 100 Probeer die versending/ontvang/hoë-prioriteit-samesmelting-tydhouer hoër (150/200/25/20) of laer (10/5) of laer (XNUMX/XNUMX)/vind XNUMX-waarde aanpas.
4.4 Ringgrootte
As jy rx_dropped tellers in ethtool -S ethX (rx_dropped, rx_dropped.nic) sien of kasdruk vermoed met veelvuldige toue aktief, kan jy probeer om die ringgrootte vanaf die verstekwaarde aan te pas. Die verstekwaarde is 512, die maksimum is 4096.

  • Om die huidige waardes na te gaan: ethtool -g ethX
    As daar vermoed word dat 'n gebrek aan buffering dalings teen die huidige onderbrekingstempo veroorsaak, kan jy eers die maksimum probeer, dan die minimum, en dan voortgaan met 'n binêre soektog totdat jy optimale werkverrigting sien.
    As kasdruk vermoed word (baie rye aktief), kan die vermindering van buffers vanaf verstek help om Intel ® Data Direct I/O (Intel ® DDIO) doeltreffender te laat werk. Intel beveel aan om 128 of 256 per tou te probeer, bewus daarvan dat 'n toename in onderbrekingstempo via ethtool -C nodig mag wees om 'n toename in rx_dropped te vermy.
  • Om ringgrootte op vaste waarde te stel: ethtool -G eth12 rx 256 tx 256

LET WEL
Om Rx-pakkiedruppels wat met ethtool -S ethX|grep drop gevind is reg te stel, oorweeg dit om die ringgrootte na 4096 te vergroot. Eksperimenteer om die beste instelling vir die werklading te vind, maar pasop vir oormatige geheuegebruik met hoër waardes.
4.5 Vloeibeheer
Laag 2-vloeibeheer kan TCP-werkverrigting aansienlik beïnvloed en dit word aanbeveel om gedeaktiveer te word vir die meeste werkladings. 'n Potensiële uitsondering is barsige verkeer waar die sarsies nie lank duur nie.
Vloeibeheer is by verstek gedeaktiveer.

  • Om vloeibeheer te aktiveer: ethtool -A ethX rx on tx on
  • Om vloeibeheer te deaktiveer: ethtool -A ethX rx off tx off

LET WEL
Jy moet 'n vloeibeheer-bekwame skakelvennoot hê om vloeibeheer suksesvol te aktiveer.
4.6 Jumbo-rame
Wanneer die verwagte verkeersomgewing bestaan ​​uit groot blokke data wat oorgedra word, kan dit voordelig wees om die jumboraamfunksie te aktiveer. Jumbo Frames-ondersteuning word geaktiveer deur die maksimum transmissie-eenheid (MTU) te verander na 'n waarde groter as die verstekwaarde van 1500. Dit laat die toestel toe om data in groter pakkies binne die netwerkomgewing oor te dra. Hierdie instelling kan deurvloei verbeter en SVE-gebruik vir groot I/O-werkladings verminder. Dit kan egter klein pakkie- of latensiesensitiewe werkladings beïnvloed.
LET WEL
Jumbo-rame of groter MTU-instelling moet reg oor jou netwerkomgewing gekonfigureer word.
Gebruik die ifconfig-opdrag om die MTU-grootte te vergroot. Byvoorbeeldample, voer die volgende in, waar is die koppelvlaknommer: ifconfig mtu 9000 op
Alternatiewelik kan jy die ip-opdrag soos volg gebruik: ip-skakelstel mtu 9000 dev ip skakel opstel dev

Platforminstelling (i40e nie-spesifiek)

5.1 BIOS-instellings

  • Aktiveer Intel® VT-d vir virtualisasiewerkladings.
  • Hyper-threading (logiese verwerkers) kan werkverrigting beïnvloed. Eksperimenteer daarmee aan of af vir jou werklading.
  • Intel® Turbo Boost laat SVE-kerns toe om teen 'n hoër frekwensie as die basisfrekwensie van die SVE te werk. Aktivering van Intel® Turbo Boost kan werkverrigting vir baie werkladings verbeter, maar verbruik meer krag om die kerns op hoër frekwensie te hou. Eksperimenteer met Turbo Boost af/aan vir jou werklading.

LET WEL
Turbo-frekwensies word nie gewaarborg as die platform hoë algehele SVE-benutting ervaar nie. Hoër kern turbo frekwensies word verminder namate die algehele SVE-benutting toeneem.
5.2 Kragbestuur
Kragbestuur kan werkverrigting beïnvloed, veral in lae latency werkladings. As werkverrigting 'n hoër prioriteit is as die verlaging van kragverbruik, beveel Intel aan dat jy eksperimenteer om die effekte van kragbestuur te beperk. Daar is baie verskillende maniere om kragbestuur te beperk, deur bedryfstelselnutsgoed, BIOS-instellings en kernselflaaiparameters. Kies die beste metode en vlak om by jou omgewing te pas.
5.2.1 C-Staatbeheer
Die beperking van C-toestand toegang tot CO of C1 verbeter werkverrigting en verhoog kragbenutting.
Deaktiveer CPU-pakket C6-statusinskrywing kan netwerkwerkverrigting verbeter. Dit verhoog egter kragverbruik.
Die volgende opsies is beskikbaar:

  • Beheer die C-staat-inskrywing dinamies:
    Maak oop
    /dev/cpu_dma_latency en skryf die maksimum toelaatbare latency daaraan.

LET WEL
Daar is 'n klein program genaamd cpudmalatency.c wat van die oopbrongemeenskap afgelaai kan word, saamgestel en vanaf die opdragreël uitgevoer kan word om presies dit te doen.
Die volgende example laat vyf μs wakkertyd toe, en laat dus C1-inskrywing toe: cpudmalatency 5 &

  • Beperk die maksimum C-toestand in die kernopstartinstellings:
    Vir Intel SVE's: intel_idle.max_cstates=1
    Vir nie-Intel SVE's: processor.max_cstates=1
  • Gebruik die cpupower-opdrag om CPU C6-toestand na te gaan en te deaktiveer: Kontroleer: cpupower-monitor of cpupower ledige inligting
    Deaktiveer C6: cpupower idle-set -d3 of
    Deaktiveer C-State: cpupower idle-set -D0

Notas:

  1. Deaktiveer C-toestande op die SVE as die bediener Intel® 4de Gen Intel® Xeon® skaalbare verwerker(s) het. Wanneer Hyper Threading geaktiveer of gedeaktiveer is, verhoed die deaktivering van ledige toestande (-D0) kerne om lae-kragtoestande in te gaan tydens ledige periodes en verminder die latensie vir die SVE om tussen ledige en aktiewe toestande oor te skakel.
  2. Die kragbestuur van die Intel® 4th Gen Intel® Xeon® Scalable Processor is uiters aggressief. Om te verhoed dat kerne laekragtoestande binnegaan, probeer om die aantal kerne wat gebruik word te verminder om hulle langer wakker te hou (ethtool -L gekombineer ). Bind ook onderbrekings aan spesifieke kerns deur gebruik te maak van stel irq-affiniteit (meestal met -x local of lys van SVE-kerns), en verseker dat die werklading op dieselfde kerns met taakstel of numactl loop. Dit verbeter werkverrigting deur kerns aktief te hou en onderbrekingshantering te optimaliseer.

Aktiveer C6:
cpupower idle-set -d3
Aktiveer C-State:
cpupower idle-set -E

  • Nog 'n metode is om die gestemde instrument (ingesluit by baie Linux-verspreidings) te gebruik om 'n prestasie-pro te stelfile. Hierdie profiles verander verskeie OS-instellings wat prestasie oor baie toepassings kan beïnvloed. Daar is gevind dat die netwerk-deurvoer profile bied verbetering aan die meeste werkladings.
    Kontroleer:
    tuned-adm aktief
    Stel:
    tuned-adm profile netwerk-deurset
    LET WEL
    Gestemde diens moet loop vir bogenoemde opdragte. Om na te gaan/herbegin, ingestel: systemctl status ingestem systemctl herbegin ingestem
    U kan ook enige C-toestand-inskrywing verbied deur die volgende by die kernselflaailyn te voeg:
    ledig=peiling
  • Beperk die C-toestand deur die stelsel se BIOS-kragbestuurinstellings, wat moontlik 'n prestasiepro hetfile beskikbaar.
    Gereedskap soos turbostaat of x86_energy_perf_policy kan gebruik word om kragbestuurinstellings na te gaan of te stel.

5.2.2 PCIe-kragbestuur
Active-State Power Management (ASPM) maak 'n laer kragtoestand vir PCIe-skakels moontlik wanneer hulle nie aktief gebruik word nie. Dit kan hoër latency op PCIe-netwerktoestelle veroorsaak, so Intel beveel aan dat jy ASPM deaktiveer vir latensie-sensitiewe werkladings. Deaktiveer ASPM deur die volgende by die kernselflaailyn te voeg: pcie_aspm=off
5.2.3 SVE-frekwensieskaal
SVE-frekwensieskaal (of SVE-spoedskaal) is 'n Linux-kragbestuurstegniek waarin die stelselklokspoed dadelik aangepas word om krag en hitte te bespaar. Net soos C-state, kan dit ongewenste latency op netwerkverbindings veroorsaak.
Die cpupower-instrument kan ook gebruik word om SVE-werkverrigtingverstellings en limiete na te gaan en te verander:

  • Kontroleer: cpupower monitor of
  • Stel SVE's op werkverrigtingmodus: cpupower frekwensie-stel -g werkverrigting

LET WEL
Wysigings aan SVE-frekwensielimiete kan 'n impak hê op baie werkladings en kan ander kenmerke deaktiveer, soos SVE-turbomodus.
Om SVE-frekwensieskaal te deaktiveer, deaktiveer die SVE-kragdiens deur die volgende opdragte:
systemctl stop cpupower.service
systemctl deaktiveer cpupower.service
5.2.4 Bykomende kragbestuursriglyne
Bykomende besonderhede word in hierdie hoëvlak-oorboek verskafview van baie van die kragbestuurkenmerke in die 3de generasie Intel® Xeon®-skaalbare verwerkers, sowel as leiding oor hoe hierdie kenmerke op 'n platformvlak geïntegreer kan word: https://networkbuilders.intel.com/solutionslibrary/power-management-technologyoverview-technology-guide
5.3 Intel® Turbo Boost
Intel® Turbo Boost maak die verwerker vinniger wanneer nodig, maar kan bykomende krag verbruik. Deur Turbo Boost af te skakel, hou die verwerker op 'n bestendige spoed, wat jou 'n konsekwente prestasievlak vir spesifieke werkladings gee.
5.4 Firewalls
Firewalls kan prestasie beïnvloed, veral latensieprestasie.
Deaktiveer iptables/firewalld indien nie nodig nie.
5.5 Toepassingsinstellings
Dikwels is 'n enkele draad (wat ooreenstem met 'n enkele netwerk tou) nie voldoende om maksimum bandwydte te bereik nie. Sommige platformargitekture, soos AMD, is geneig om meer Rx-pakkies met 'n enkele draad te laat val in vergelyking met platforms met Intel-gebaseerde verwerkers.
Oorweeg dit om gereedskap soos taskset of numactl te gebruik om toepassings aan die NUMA-nodus of SVE-kerns plaaslik op die netwerktoestel vas te pen. Vir sommige werkladings, soos berging I/O, bied die skuif van die toepassing na 'n nie-plaaslike nodus voordeel.
Eksperimenteer met die verhoging van die aantal drade wat deur jou toepassing gebruik word, indien moontlik.
5.6 Kernel weergawe
Die meeste moderne in-boks pitte is redelik goed geoptimaliseer vir werkverrigting, maar, afhangende van jou gebruiksgeval, kan die opdatering van die kern verbeterde werkverrigting lewer. Die aflaai van die bron stel jou ook in staat om sekere kenmerke te aktiveer/deaktiveer voordat die kern gebou word.
5.7 Bedryfstelsel/Kerninstellings
Raadpleeg bedryfstelsel-instellingsgidse, soos die Red Hat Enterprise Linux Network Performance Tuning Guide, vir meer insig oor algemene bedryfstelsel-instelling.
Sommige algemene parameters om in te stel word in die volgende tabel gelys. Let daarop dat dit slegs voorgestelde beginpunte is, en om dit van die verstekke te verander, kan die hulpbronne wat op die stelsel gebruik word, verhoog. Alhoewel die verhoging van die waardes kan help om werkverrigting te verbeter, is dit nodig om met verskillende waardes te eksperimenteer om te bepaal wat die beste werk vir 'n gegewe stelsel, werklading en verkeerstipe.
Die kernparameters is konfigureerbaar met behulp van die sysctl-nutsding in Linux soos hieronder aangedui.
Om view die verstekwaardes vir rmem en wmem op die stelsel:
sysctl net.core.rmem_default
sysctl net.core.wmem_default
Stel die waardes op maksimum (16 MB):
sysctl -w net.core.rmem_max=16777216
sysctl -w net.core.wmem_max=16777216
Sokbuffergroottes, ook bekend as ontvangbuffer (rmem) en oordragbuffer (wmem), is stelselparameters wat die hoeveelheid geheue spesifiseer wat vir inkomende en uitgaande netwerkverkeer gereserveer is.
Deur sysctl sonder die -w-argument te laat loop, word die parameter met sy huidige instelling gelys.

Stapel-instelling Beskrywing
net.core.rmem_default Verstek ontvang venster grootte
net.core.wmem_default Verstuurvenstergrootte verstek
net.core.rmem_max Maksimum ontvangvenstergrootte
net.core.wmem_max Maksimum transmissievenstergrootte
net.core.optmem_max Maksimum opsie geheue buffers
net.core.netdev_max_backlog Agterstand van onverwerkte pakkies voordat kern begin daal
net.ipv4.tcp_rmem Geheuebewaarder vir TCP-leesbuffers
net.ipv4.tcp_wmem Geheuebewaarder vir TCP-stuurbuffers

Kern, netwerkstapel, geheuehanteerder, SVE-spoed en kragbestuurparameters kan 'n groot impak op netwerkwerkverrigting hê. 'n Algemene aanbeveling is om aansoek te doen vir die netwerk deurvoer profile met behulp van die ingestemde opdrag. Dit wysig 'n paar OS-instellings om voorkeur aan netwerktoepassings te gee.
Kontroleer:
tuned-adm aktief
Stel:
tuned-adm profile netwerk-deurset
5.8 Netwerktoestel-agterstand
Hierdie kenmerk help om netwerkwerkverrigting te verbeter deur inkomende verkeer effektief te bestuur, pakkieverlies te verminder, latensie te verlaag en deurset te verhoog. Dit lei tot 'n beter gebruikerservaring en vinniger stelselreaksie.
By verstek is dit geaktiveer in die meeste van die Linux-bedryfstelsels. Om die verstekwaarde na te gaan:
sysctl net.core.netdev_max_backlog
Die maksimum waarde vir netdev_max_backlog kan wissel na gelang van faktore soos kernweergawe, hardeware, geheue en werklading. In baie gevalle word 8192 as 'n goeie waarde beskou. sysctl -w net.core.netdev_max_backlog=8192
5.9 Platform-spesifieke konfigurasies en instemming
5.9.1 4de generasie Intel® Xeon® skaalbare verwerkers

Die kragbestuur van die Intel® 4de generasie Intel® Xeon® skaalbare verwerker is uiters aggressief in vergelyking met die 3de generasie Intel® Xeon® skaalbare verwerkers. Om te verhoed dat kerne laekragtoestande binnegaan, probeer om die aantal kerne wat gebruik word te verminder om hulle langer wakker te hou.
Aanbevole Bios-instellings vir die hoogste prestasie

  1. Hyper-threading aktiveer/deaktiveer (gebaseer op die werkladingsvereiste en prestasiedoelwitte) op die SVE.
  2. Stel die stelsel profile na Prestasie vir die maksimum prestasie.
    LET WEL
    Dit lei tot hoër kragverbruik
  3. Stel die SVE-kragbestuur op Maksimum Werkverrigting om maksimum SVE-werkverrigting bo kragdoeltreffendheid te prioritiseer.
  4. Aktiveer Turbo Boost. Die deaktivering van Turbo Boost in die stelsel-BIOS-instellings verhoed gewoonlik dat die SVE sy klokspoed verby sy basisfrekwensie verhoog.
  5. LET WEL
    Die deaktivering van Turbo Boost kan geskik wees vir sekere gebruiksgevalle waar konsekwente werkverrigting, kragdoeltreffendheid of termiese bestuur bo maksimum werkverrigting geprioritiseer word.
  6. Skakel enkelwortel-I/O-virtualisering (SR-IOV)-kenmerk af as die stelsel nie virtualisasietegnologieë gebruik nie.
  7. Deaktiveer C-toestande om die SVE opdrag te gee om aktief te bly en te verhoed dat dieper ledige toestande ingaan.
  8. Deaktiveer C1E om te verseker dat die SVE aktief bly en nie die C1E ledige toestand betree nie.
  9. Stel die ontkernfrekwensie op maksimum om die stelsel opdrag te gee om teen die hoogste beskikbare frekwensie te werk.
  10. Stel op Dell-platforms Multiple APIC Description Table (MADT) kernemulasie op Linear (of Round-Robin afhangende van BIOS) om 'n duidelike en voorspelbare kartering van SVE-kerne te verskaf.

Aanbevole OS-vlakinstellings vir geoptimaliseerde prestasie

  1. Stel SVE-frekwensie-skaalbestuurder op werkverrigting. cpupower frekwensie-stel -g prestasie cpupower frekwensie-inligting
  2. Deaktiveer C-State. cpupower ledige stel -D0
  3. Stel kern Rx (rmem) en Tx (wmem) buffers op maksimum waarde. sysctl -w net.core.rmem_max=16777216 sysctl -w net.core.wmem_max=16777216
  4. Stel netwerktoestel-agterstand in. sysctl -w net.core.netdev_max_backlog=8192
  5. Stel gestemde profile (werklading afhanklik vir deurset/latency).
    tuned-adm profile netwerk-deurset

Aanbevole adaptervlakinstellings vir geoptimaliseerde prestasie

  1. Beperk aantal toue om vir toepassingverkeer te gebruik. Gebruik die minimum aantal toue wat nodig is om die geassosieerde SVE-kerns aktief te hou om te verhoed dat hulle dieper ledige toestande binnegaan (pas vir die werklading): ethtool -L gekombineer 32
  2. Stel onderbreking moderering tariewe. etool -C adaptive-rx af adaptive-tx af rx-usecs-high 50 rx-usecs 50 tx-usecs 50
    Probeer om die versending/ontvang/hoë-prioriteit-samesmeltingstydteller hoër (80/100/150/200) of laer (25/20/10/5) aan te pas om optimale waarde vir die werklading te vind.
  3. Stel die Rx/Tx-ringgroottes in. ettool -G rx 4096 tx 4096
    LET WEL
    As jy sien dat Rx pakkie daal met ethtool -S| grep drop, probeer om die ringgrootte te verminder na <4096. Probeer om die optimale waarde vir die werklading te vind waar pakkies nie weggelaat word nie.
  4. Stel IRQ-affiniteit in. Gebruik kerns plaaslik tot NIC, of ​​spesifieke kernkartering (waar # kerns gelyk is aan die aantal toue wat in 1 op bladsy 26 gestel is. systemctl stop irqbalance set_irq_affinity -X local OF stel_irq_affiniteit -X

5.9.2 AMD EPYC
AMD EPYC-verwerkers is kragtige SVE's gemaak vir bedieners en datasentrums, gebou op AMD se Zen-argitektuur. Die onderstaande instellings is van AMD se 4de generasie EPYC-reeks.
Aanbevole BIOS-instellings vir die hoogste werkverrigting

  1. Aktiveer pasgemaakte modus om gebruikers toe te laat om SVE-werkverrigting, kragverbruik en ander instellings aan te pas. Dit help om die stelsel fyn in te stel vir die beste balans tussen werkverrigting en energiedoeltreffendheid.
  2. Aktiveer kernverrigtingversterking om SVE toe te laat om sy spoed outomaties te verhoog om meer intensiewe take te hanteer, wat algehele werkverrigting verbeter.
  3. Deaktiveer globale C-toestandbeheer, om te verhoed dat die SVE dieper kragbesparingstoestande, bekend as C-toestande, binnegaan, wat responsiwiteit kan handhaaf.
    LET WEL
    Deaktiveer C-toestande kan addisionele kragverbruik veroorsaak en termiese temperature verhoog. Monitor beide vir die werklading.
  4. Aktiveer/deaktiveer Simultaneous Multithreading (SBS) op die SVE, gebaseer op die werklasvereiste en prestasiedoelwitte. SBS is gelykstaande aan Hyper Threading op Intel SVE's.
    LET WEL
    Vir geoptimaliseerde werkverrigting, verwys na Tuning i40e Driver Settings op bladsy 13 en Platform Tuning (i40e Nie-spesifiek) op bladsy 19 vir die aanbevole OS- en adaptervlak-instelling.

Adapter binding

Linux-binding is 'n kragtige kenmerk wat die netwerkwerkverrigting, oortolligheid en fouttoleransie in bedieneromgewings aansienlik kan verbeter. Dit is egter belangrik om daarop te let dat dit versoenbare netwerkhardeware en behoorlike konfigurasie op beide die bediener en die skakelaar vereis om behoorlik te funksioneer.
Die bindingsbestuurder in Linux laat jou toe om veelvuldige fisiese netwerkkoppelvlakke saam te voeg in 'n gebonde koppelvlak. Hierdie gebonde koppelvlak verskyn as 'n enkele virtuele netwerkkoppelvlak vir die bedryfstelsel en toepassings.
LET WEL
Die binding is 'n logiese koppelvlak, dus is dit nie moontlik om SVE-affiniteit direk op die bindingskoppelvlak in te stel nie (bv.ample, verband0). Dit wil sê, dit het geen direkte beheer oor onderbrekingshantering of SVE-affiniteit nie. SVE-affiniteit moet opgestel word vir die onderliggende koppelvlakke wat deel is van die verband.
Binding bied verskeie werkswyses, elk met sy eie kenmerke.

Modus  Tik
0 Round Robin
1 Aktiewe rugsteun
2 XOR
3 Uitsaai
4 LACP
5 Versend lasbalans
6 Aanpasbare laaibalans

Daar is verskillende metodes om 'n binding in Linux te skep. Een van die mees algemene metodes is om netwerkkonfigurasie te gebruik files (bvample, /etc/network/ interfaces of /etc/sysconfig/network-scripts/ifcfg-bondX).
Konfigurasie met behulp van netwerkkonfigurasie Files
Die volgende stappe skep binding deur die netwerkkonfigurasie files.

  1. Kies twee of meer NIC-poorte vir binding (bvample, ethX en ethY)
  2. Maak NIC-konfigurasie oop Files onder /etc/sysconfig/network-scripts/ vir die vereiste NIC-koppelvlak (bv.ample, vi ifcfg-ethX en vi ifcfg-ethY) en voeg die volgende teks by:
    MASTER=bondN [Let wel: N is 'n heelgetal om die verbandnommer te noem.] SLAVE=ja
  3. Skep 'n verbandnetwerkskrif file gebruik vi /etc/sysconfig/networkscripts/ifcfg-bondN en voer die volgende teks in:
    DEVICE=bondN [Let wel: N is 'n heelgetal om die verbandnommer te noem] ONBOOT=ja USERCTL=nee BOOTPROTO=dhcp (of) geen
    IPADDR=200.20.2.4 [vereis as BOOTPROTO=geen] NETMASK=255.255.255.0 [vereis as BOOTPROTO=geen] NETWERK=200.20.2.0 [vereis as BOOTPROTO=geen] UITSENDING.200.20.2.255=1 BOOTPROTO=geen] BONDING_OPTS=”modus=100 miimon=XNUMX″
    LET WEL
    Modus kan enige heelgetal van 0 tot 6 wees, gebaseer op die vereiste.
  4. Herbegin die netwerkdienste met behulp van diensnetwerkherbegin of systemctl herbegin NetworkManager.service

Prestasie probleemoplossing

7.1 SVE-gebruik
Gaan SVE-gebruik per kern na terwyl die werklading aan die gang is.
Let daarop dat benutting per kern meer relevant is vir werkverrigting as algehele SVE-benutting, aangesien dit 'n idee van die SVE-benutting per netwerktou verskaf. As jy net 'n paar drade het wat netwerkverkeer het, sal jy dalk net 'n paar kerne hê wat gebruik word. As daardie kerne egter op 100% is, is jou netwerkdeurset waarskynlik beperk deur SVE-gebruik en is dit tyd om die volgende uit te voer:

  1. Stel IRQ-moderering/ringgrootte in soos uiteengesit in Onderbrekingsmoderering.
  2. Verhoog die aantal toepassingsdrade om die SVE-lading oor meer kerne te versprei. As alle kerns op 100% loop, is jou toepassing dalk SVE-gebonde eerder as netwerkgebonde.

Algemeen beskikbare gereedskap:

  • bo
    — Druk 1 om die lys van SVE's uit te brei en te kyk watter word gebruik.
    - Let op die vlak van benutting.
    - Let op watter prosesse as die aktiefste gelys word (boaan die lys).
  • mpstat
    Die volgende example opdragreël is op Red Hat Enterprise Linux 7.x getoets.
    Dit vertoon SVE-gebruik per kern (deur die totale persentasie ledig te vind en van 100 af te trek) en beklemtoon die waardes bo 80% in rooi. mpstat -P ALLE 1 1 | grep -v Gemiddeld | stert -n +5 | kop -n -1 | awk '{ druk (100-$13)}' | egrep -color=altyd '[^\.][8-9][0-9][\.]?.*|^[8-9][0-9][\.]?.*| 100|' | kolom
  • perf top Soek waar siklusse spandeer word.

7.2 i40e-tellers
Die i40e-bestuurder verskaf 'n lang lys tellers vir koppelvlakontfouting en monitering deur die ethtool -S ethX-opdrag. Dit kan nuttig wees om die uitset te kyk terwyl 'n werklading loop en/of die tellerwaardes voor en na 'n werklading te vergelyk.

  • Om 'n volle storting van i40e-tellers te kry: ethtool -S ethX
  • Om net nie-nul tellers te kyk: watch -d (ethtool -S ethX) | egrep -v :\ 0 | kolom
    Sommige dinge om na te kyk:
  • rx_dropped beteken dat die SVE nie buffers vinnig genoeg diens nie.
  • port.rx_dropped beteken iets is nie vinnig genoeg in die gleuf/geheue/stelsel nie.

7.3 Netwerktellers
Kontroleer netstat -s voor/na 'n werklading.
Netstat samel netwerkinligting van alle netwerktoestelle in die stelsel in. Daarom kan resultate beïnvloed word van ander netwerke as die netwerk wat getoets word. Die uitset van netstat -s kan 'n goeie aanduiding wees van prestasiekwessies in die Linux-bedryfstelsel of kern. Raadpleeg bedryfstelsel-instellingsgidse, soos die Red Hat Enterprise Linux Network Performance Tuning Guide, vir meer insig oor algemene bedryfstelsel-instelling.
7.4 Stelsellogboeke
Gaan stelsellogboeke na vir foute en waarskuwings (/var/log/messages, dmesg).
7.5 Intel svr-inligting-instrument
Intel bied 'n svr-inligting-instrument (sien https://github.com/intel/svr-info) vir Linux wat relevante hardeware- en sagtewarebesonderhede vanaf 'n bediener vaslê. svr-info-uitvoer kan uiters nuttig wees om stelselbottelnekke of instellings/instellings te identifiseer wat nie vir die werklading geoptimaliseer is nie. Wanneer u 'n ondersteuningsak met Intel oopmaak vir Ethernet-verwante werkverrigtingkwessies, maak seker dat u svr-info-uitvoer (teks file) vir elke Linux-bediener in die toetskonfigurasie.

  1. Laai svr-info af en installeer:
    wget -qO- https://github.com/intel/svr-info/releases/latest/download/svrinfo.tgz| tar xvz cd svr-inligting
    ./svr-inligting
    > gasheernaam.txt
  2. Versamel die uitset:
    ./svr-info > gasheernaam.txt
  3. Heg een teks (.txt) aan file vir elke bediener na jou Intel-ondersteuningsaak vir ontleding.

Aanbevelings vir algemene uitvoeringscenario's

8.1 IP-aanstuur

  • Dateer die kern op.
    Sommige onlangse in-distro-pitte het roeteerprestasie verswak as gevolg van kernveranderinge in die roeteringskode wat begin met die verwydering van die roeteringkas weens sekuriteit. Onlangse buite-distro-pitte behoort pleisters te hê wat die prestasie-impak van hierdie veranderinge verlig en verbeterde werkverrigting kan bied.
  • Deaktiveer hiper-threading (logiese kerns).
  • Wysig die kernselflaaiparameters.
    — Dwing iommu af (intel_iommu=af of iommu=af) vanaf die kernselflaailyn, tensy dit vir virtualisering vereis word
    — Skakel kragbestuur af: processor.max_cstates=1 idle=peiling pcie_aspm=af
  • Beperk die aantal toue om gelyk te wees aan die aantal kerns op die plaaslike sok (12 in hierdie example). ethtool -L ethX gekombineer 12
  • Speld slegs onderbrekings aan plaaslike sok vas. set_irq_affinity -X local ethX OF set_irq_affinity -X local ethX
    LET WEL
    -X of -x kan gebruik word afhangende van die werklading.
  • Verander die Tx- en Rx-ringgroottes soos nodig. 'n Groter waarde verg meer hulpbronne, maar kan beter aanstuurkoerse bied. ethtool -G ethX rx 4096 tx 4096
  • Deaktiveer GRO tydens roetering.
    As gevolg van 'n bekende kernprobleem, moet GRO afgeskakel word tydens roetering/aanstuur. ethtool -K ethX gro af waar ethX die Ethernet-koppelvlak is wat gewysig moet word.
  • Deaktiveer aanpasbare onderbreking moderering en stel 'n statiese waarde. ethtool -C ethX adaptive-rx af adaptive-tx af ethtool -C ethX rx-usecs 64 tx-usecs 64

LET WEL
Afhangende van die tipe verwerker en werklading, kan die samesmeltingsparameters vir RX en TX aangepas word vir verbeterde werkverrigting (of minder raamverlies).

  • Deaktiveer die firewall. sudo systemctl deaktiveer firewalld sudo systemctl stop firewalld
  • Aktiveer IP-aanstuur. sysctl -w net.ipv4.ip_forward=1
  • Stel maksimum waardes op vir die ontvang- en stuursokbuffergroottes. sysctl -w net.core.rmem_max=16777216 sysctl -w net.core.wmem_max=16777216

LET WEL
Afhangende van die werklading of vereiste, kan hierdie waardes van die verstek verander word.
8.2 Lae vertraging

  • Skakel hiper-threading (logiese kerns) AF.
  • Maak seker dat die netwerktoestel plaaslik is vir numa core 0.
  • Speld die maatstaf by kern 0 vas deur die taakstel -c 0 te gebruik.
  • Skakel irqbalance af met behulp van systemctl stop irqbalance of systemctl deaktiveer irqbalance
  • Begin die affiniteitskrip om oor kerns te versprei. Probeer óf plaaslik óf almal.
  • Skakel onderbreking moderering af. ethtool -C ethX rx-usecs 0 tx-usecs 0 adaptive-rx af adaptive-tx af rxusecs- hoog 0
  • Beperk die aantal toue om gelyk te wees aan die aantal kerne op die plaaslike sok (32 in hierdie example). ethtool -L ethX gekombineer 32
  • Speld slegs onderbrekings aan plaaslike sok (skrip verpak met i40e-bestuurderbron). set_irq_affinity -X plaaslike ethX
  • Gebruik 'n gevestigde maatstaf soos netperf -t TCP_RR, netperf -t UDP_RR of NetPipe. netperf -t TCP_RR of netperf -t UDP_RR
  • Speld maatstaf aan 'n enkele kern in die plaaslike NUMA-nodus vas. taakstel -c

Intel ® Ethernet 700-reeks
Linux-prestasie-instellingsgids
Desember 2024
Dok. No.: 334019, Rev.: 1.2

Dokumente / Hulpbronne

Intel Ethernet 700-reeks Linux-prestasie-instelling [pdf] Gebruikersgids
334019, Ethernet 700-reeks Linux-prestasie-instelling, Ethernet 700-reeks, Linux-prestasie-instelling, prestasie-instelling, stemming

Verwysings

Los 'n opmerking

Jou e-posadres sal nie gepubliseer word nie. Vereiste velde is gemerk *