Intel-logoIntel ® Ethernet 700-serie
Handleiding voor Linux-prestatie-afstemming
NEX Cloud Networking Groep (NCNG)
Rev. 1.2
December 2024

Revisiegeschiedenis

Herziening Datum Reacties
1.2 December 2024 · Aanvullende richtlijnen voor energiebeheer toegevoegd.
· Intel* Turbo Boost toegevoegd.
· Backlog van netwerkapparaten toegevoegd.
· Platformspecifieke configuraties en afstemming toegevoegd.
· 4e generatie Intel* %eon* schaalbare processoren toegevoegd.
· AMD EPYC toegevoegd.
· Controleer de hardwaremogelijkheden van het systeem.
· iPerf2 bijgewerkt.
· iPerf3 bijgewerkt.
· Bijgewerkte Tx/Rx-wachtrijen.
· Interrupt-moderatie bijgewerkt.
· Ringmaat bijgewerkt.
· Bijgewerkte platform-tuning (i40e niet-specifiek).
· BIOS-instellingen bijgewerkt.
· Bijgewerkte C-State Control.
· Bijgewerkte CPU-frequentieschaal.
· Bijgewerkte applicatie-instellingen.
· Bijgewerkte besturingssysteem-/kernelinstellingen.
· Bijgewerkte IP-doorsturing.
· Bijgewerkte lage latentie.
Augustus 2023 Wijzigingen in dit document omvatten:
· Gerelateerde referenties toegevoegd.
· Er is een optie toegevoegd om ervoor te zorgen dat het DDP-pakket correct wordt geladen.
· iPerf2 toegevoegd.
· iPerf3 toegevoegd.
· Netperf toegevoegd.
· IRQ-affiniteit bijgewerkt.
· Tx/Rx-wachtrijen toegevoegd.
· Ringmaat bijgewerkt.
· Jumbo Frames toegevoegd.
· Adapterbinding toegevoegd.
· Intel svr-info Tool toegevoegd.
1.0 Maart 2016 Eerste release (Intel Public).

Invoering

Deze handleiding is bedoeld om begeleiding te bieden bij het afstemmen van omgevingen voor optimale netwerkprestaties met behulp van een Intel ® Ethernet 700 Series NIC in Linux-omgevingen. Het richt zich op hardware-, driver- en besturingssysteemcondities en -instellingen die de netwerkprestaties kunnen verbeteren. Er dient te worden opgemerkt dat netwerkprestaties kunnen worden beïnvloed door een groot aantal externe invloeden, alleen de meest voorkomende en dramatische hiervan worden in deze handleiding behandeld.
1.1 Verwante referenties

Eerste checklist

2.1 Stuurprogramma-/firmwareversies bijwerken
Controleer de driver-/firmwareversies met ethtool -i ethx.
Werk het volgende indien nodig bij:

2.2 Lees de README
Controleer op bekende problemen en haal de nieuwste configuratie-instructies uit de README file inbegrepen in het i40e-bronpakket.
2.3 Controleer of uw PCI Express (PCIe)-slot x8 is
Sommige PCIe x8-slots zijn feitelijk geconfigureerd als x4-slots. Deze slots hebben onvoldoende bandbreedte voor volledige lijnsnelheid met dual-port- en quad-port-apparaten. Als u bovendien een PCIe v3.0-compatibele adapter in een PCIe v2.x-slot plaatst, krijgt u geen volledige bandbreedte. De software-apparaatdriver detecteert deze situatie en schrijft het volgende bericht in het systeemlogboek:
PCI-Express bandbreedte beschikbaar voor deze kaart is niet voldoende voor optimale prestaties. Voor optimale prestaties is een x8 PCI-Express slot vereist.
Als deze fout optreedt, verplaatst u uw adapter naar een echte PCIe v3.0 x8-sleuf om het probleem op te lossen.
2.4 Controleer de hardwaremogelijkheden van het systeem
Bij 10 Gbps, 25 Gbps en 40 Gbps Ethernet zijn er enkele minimale CPU- en systeemvereisten. Over het algemeen zou een moderne serverklasse processor en optimale geheugenconfiguratie voor uw platform voldoende moeten zijn, maar de behoeften variëren afhankelijk van uw werklast. Alle geheugenkanalen moeten worden gevuld en de geheugenprestatiemodus moet worden ingeschakeld in het BIOS. Controleer of uw CPU en geheugenconfiguratie het niveau van netwerkprestaties kunnen ondersteunen dat u nodig hebt voor uw werklast.
OPMERKING
De XL710 is een 40 GbE-controller. De 2 x 40 GbE-adapter die deze controller gebruikt, is niet bedoeld als 2 x 40 GbE, maar als 1 x 40 GbE met een actieve back-uppoort. Wanneer u probeert line-rate-verkeer te gebruiken met beide poorten, raakt de interne switch verzadigd en wordt de gecombineerde bandbreedte tussen de twee poorten beperkt tot een totaal van SO Gbps.
2.4.1 Kernel-opstartparameters
Als Intel® Virtualization Technology for Directed I/O (Intel® VT-d) is ingeschakeld in het BIOS, raadt Intel aan dat IOMMU in de pass-through-modus staat voor optimale hostnetwerkprestaties. Dit elimineert DMA-overhead op hostverkeer terwijl virtuele machines (VM's) nog steeds de voordelen van Intel® VT-d hebben. Dit wordt bereikt door de volgende regel toe te voegen aan de kernel-opstartparameters: fommu-pt.
2.5 Zorg ervoor dat het DDP-pakket correct wordt geladen
De basisdrivers 140ea en 140eb bieden geen directe ondersteuning voor Dynamic Device Personalization (DDP). Om DDP te gebruiken met apparaten uit de 700-serie, is een DDP-pro nodigfile kan worden toegepast met de testpmd-applicatie.
Voor meer informatie over DDP profiles, en hoe je een DDP-pro toepastfile met testpmd op apparaten uit de 700-serie, raadpleeg de Intel® Ethernet 700 Series Dynamic Device Personalization (DDP) Technology Guide.
Om te verifiëren of een DDP-professionalfile is succesvol geladen:
testpmd> ddp lijst ophalen 0 Profile nummer is: 1
OPMERKING
Als de profile nummer is 0, er is geen DDP-pakket geladen. In het geval van een DDP-pakketlaadfout, schakelt het apparaat standaard over naar de veilige modus en zijn veel prestatiefuncties niet beschikbaar. Als er fouten zijn met betrekking tot het laden van het DDP-pakket, zal dit prestatieproblemen veroorzaken. Raadpleeg de Inte/* Ethernet 700 Series Dynamic Device Personalization (DDP) Technology Guide voor stappen voor probleemoplossing.

Basisprestatiemetingen en afstemmingsmethodologie

3.1 Benchmarks voor netwerkprestaties
Voordat u met een tuning-oefening begint, is het belangrijk om een ​​goede basismeting van uw netwerkprestaties te hebben. Meestal is het, naast het verkrijgen van een eerste meting van de prestaties van uw specifieke applicatie/werklast, een goed idee om ook een standaard netwerkprestatiebenchmark te gebruiken om te verifiëren of uw netwerkapparaat in een goede staat verkeert.
Voor de optimalisatie van één systeem zijn netperf of iperf en NetPIPE allebei solide opensource-gratis tools waarmee u een verbinding kunt testen en prestatieproblemen kunt diagnosticeren.
Netperf is sterk voor zowel throughput- als latency-testen. NetPIPE is een latency-specifieke tool, maar kan worden gecompileerd voor elk type omgeving.
OPMERKING
De TCP_RR-test in netperf retourneert latentie in een waarde van transacties/sec. Dit is een round-trip-getal. De one-way latentie kan worden berekend met behulp van de volgende vergelijking:
Latentie (usec) = (1⁄2) / [Transacties/sec] * 1,000,000
3.1.1 iPerf2
Intel beveelt iperf2 boven iperf3 aan voor de meeste benchmarkingsituaties vanwege het gebruiksgemak en de ondersteuning van meerdere threads in één toepassingsinstantie. Intel beveelt aan om de optie -P te gebruiken met 2-4 threads voor 25G-verbindingen en ongeveer 4-6 threads voor 40G-verbindingen.

  • Om unidirectioneel verkeer van client naar server te laten lopen: Serveropdracht example: iperf2 -s
    Clientopdracht example: iperf2 -c -P
  • Om bidirectioneel verkeer van client naar server (en vice versa) te laten verlopen: Serveropdracht example: iperf2 –s –p
    Clientopdracht exampon:
    iperf2-c -P -P -–full-duplex OF
    iperf2-c -P -P -D

OPMERKING
Zowel de opties –full-duplex als -d in iperf2 stellen de gebruiker in staat om bidirectionele tests uit te voeren. De optie –full-duplex richt zich echter specifiek op full-duplex-testen.
OPMERKING
Bij het testen van iperf2 op meerdere serverpoorten kan de vlag -d worden toegevoegd aan de serveropdracht om alle serversessies op de achtergrond uit te voeren vanuit hetzelfde terminalvenster. De vlag -d kan ook worden gebruikt wanneer de serveropdracht is ingebed in een for-loop in een script.
OPMERKING
Bij het uitvoeren van de netwerkdoorvoertest met één enkele stream/thread (bijv.ample: P1), AMD-processors leveren mogelijk niet de verwachte doorvoer, met name NIC's met hogere bandbreedte (als de snelheid >= 25G bandbreedte is). Als gevolg hiervan is het vastzetten van applicaties op specifieke cores vereist om een ​​hogere doorvoer te bereiken. Zie Toepassingsinstellingen op pagina 22.
3.1.2 iPerf3
Als iperf3 wordt gebruikt, zijn meerdere instanties van de applicatie nodig om voordeel te halen uittage van de multi-threads, RSS en hardware-wachtrijen. Intel raadt aan om te draaien met de 2-4 applicatiesessies voor 25G-verbindingen en ongeveer 4-6 sessies voor 40G-verbindingen. Elke sessie moet een unieke TCP-poortwaarde specificeren met de optie -p.

  • Om unidirectioneel verkeer van client naar server te laten verlopen:
    Serveropdracht exampon:
    iperf3 -s -p
    Clientopdracht exampon:
    iperf3-c -P
  • Om bidirectioneel verkeer van client naar server (en vice versa) te laten verlopen:
    Serveropdracht exampon:
    iperf3-s-p
    Clientopdracht example: iperf3 -c -P -P –bidir
  • Om meerdere instanties (threads) van iperf3 te starten, raden we aan om een ​​for-lus te gebruiken om threads toe te wijzen aan TCP-poorten en iperf3 op de achtergrond uit te voeren met & om meerdere processen parallel te maken.
    Serveropdracht example, start 4 threads: port=””; for i in {0..3}; do port=520$i; bash -c “iperf3 -s -p $port &”; done; Clientopdracht example, start 4 threads – Transmit test port=””; for i in {0..3}; do port=520$i; bash -c “iperf3 -c $serverIP -p $port &”; done; Clientopdracht example, start 4 threads – Ontvang testpoort=””; for i in {0..3}; do port=520$i; bash -c “iperf3 -R -c $serverIP -p $port &”; done; Voor 40G-verbindingen, vergroot de for-lus om maximaal 6 instanties/threads te maken.

OPMERKING
Bij het uitvoeren van de netwerkdoorvoertest met één enkele stream/thread (bijv.ample: P1), AMD-processors leveren mogelijk niet de verwachte doorvoer, met name de hogere bandbreedte
NIC's (als de snelheid >= 25G bandbreedte is). Als gevolg hiervan is applicatie-pinning op specifieke cores vereist om een ​​hogere doorvoer te bereiken. Zie Application Settings op pagina 22 en AMD EPYC op pagina 26.
3.1.3 nettoperf
De tool netperf is een goede keuze voor zowel doorvoer- als latentietesten.

  • De TCP_STREAM-test in netperf meet de doorvoercapaciteiten van het apparaat. Serveropdracht example: netserver Client-opdracht example: netperf -t TCP_STREAM -l 30 -H
  • De TCP_RR-test in netperf retourneert latentie in een waarde van transacties/seconde. Dit is een round-trip-nummer. Het wordt aanbevolen om de optie -T x,x te gebruiken, waarbij x lokaal op de CPU van het apparaat staat. De eenrichtingslatentie kan worden berekend met: Latency(usec)=(1⁄2)/ [Transacties/sec]*1,000,\ Serveropdracht example: netserver
    Clientopdracht example: netperf -t TCP_RR -l 30 -H -Tx,x
  • Om meerdere instanties (threads) van netperf te starten, raden we aan om een ​​for-lus te gebruiken om threads toe te wijzen aan TCP-poorten en netperf op de achtergrond uit te voeren met & om meerdere processen parallel te maken.
    Serveropdracht example, start 8 threads:
    poort=””; voor i in {0..7}; doe poort=520$i; bash -c “netserver -L $serverIP -p $port &”; gedaan;
    Clientopdracht example, start 8 threads: port=””; for i in {0..7}; do port=520$i; bash -c “netperf -H $serverIP -p $port -t TCP_STREAM -l 30 &”; done;

3.2 Afstemmingsmethodologie
Concentreer u op één afstemmingswijziging per keer, zodat u weet welke impact elke wijziging heeft op uw test. Hoe methodischer u bent in het afstemmingsproces, hoe gemakkelijker het zal zijn om de oorzaken van prestatieknelpunten te identificeren en aan te pakken.

Tuning i40e Driver-instellingen

4.1 IRQ-affiniteit
Het configureren van IRQ-affiniteit zodat interrupts voor verschillende netwerkwachtrijen worden geaffineerd aan verschillende CPU-cores, kan een enorme impact hebben op de prestaties, met name bij multithread-doorvoertests.
Om IRQ-affiniteit te configureren, stopt u irqbalance en gebruikt u vervolgens het script set_irq_affinity uit het i40e-bronpakket of pint u wachtrijen handmatig. Schakel de IRQ-balancer van de gebruikersruimte uit om wachtrijpinning in te schakelen:

  • systemctl schakelt irqbalance uit
  • systemctl stop irqbalance
    Gebruik het script set_irq_affinity uit het i40e-bronpakket (aanbevolen):
  • Om alle kernen te gebruiken:
    [pad-naar-i40epakket]/scripts/set_irq_affinity -X alle ethX
  • Om alleen cores op de lokale NUMA-socket te gebruiken: [pad-naar-i40epackage]/scripts/set_irq_affinity -X local ethX
  • U kunt ook een bereik van cores selecteren. Vermijd het gebruik van cpu0 omdat het timertaken uitvoert. [pad-naar-i40epackage]/scripts/set_irq_affinity 1-2 ethX

OPMERKING
Het affiniteitsscript schakelt Transmit Packet Steering (XPS) in als onderdeel van het pinningproces wanneer de optie -x is opgegeven. Wanneer XPS is ingeschakeld, raadt Intel aan om irqbalance uit te schakelen, omdat de kernelbalancer met XPS onvoorspelbare prestaties kan veroorzaken. Het affiniteitsscript schakelt XPS uit wanneer de optie -X is opgegeven. XPS uitschakelen en symmetrische wachtrijen inschakelen is gunstig voor workloads waarbij de beste prestaties worden bereikt wanneer Tx- en Rx-verkeer op hetzelfde wachtrijpaar/dezelfde wachtrijparen worden bediend.
Het configureren van symmetrische wachtrijen in Linux omvat het afstemmen van de parameters van het netwerkinterfacestuurprogramma om symmetrische ontvangstwachtrijen (Rx) en symmetrische verzendwachtrijen (Tx) in te schakelen voor ondersteunde netwerkadapters.
OPMERKING

  • Symmetrische wachtrijen zijn een geavanceerde netwerkfunctie en niet alle netwerkadapters of drivers van de 700-serie ondersteunen deze.
  • Zorg ervoor dat u over de benodigde driver- en hardwareondersteuning beschikt voordat u symmetrische wachtrijen gaat configureren.

Volg deze algemene stappen om symmetrische wachtrijen te configureren:

  1. Netwerkinterfaceconfiguratie bewerken File: Gebruik een teksteditor (bijv.ample, vi, nano of gedit) om de netwerkinterfaceconfiguratie te bewerken file. De file bevindt zich doorgaans in de map /etc/sysconfig/network-scripts/ en heeft een naam zoals ifcfg-ethX, waarbij ethX de naam is van uw netwerkinterface.
  2. Symmetrische wachtrijparameters toevoegen. Voeg de volgende regels toe aan de netwerkinterfaceconfiguratie file: ETHTOOL_OPTS=”rx-wachtrijen 8 tx-wachtrijen 8″
  3. Start de netwerkservice opnieuw.
    Nadat u de wijzigingen hebt aangebracht, start u de netwerkservice opnieuw op om de nieuwe configuratie toe te passen. sudo systemctl restart network

Handmatig:

  • Vind de processors die aan elk knooppunt zijn gekoppeld met behulp van: numactl –hardware lscpu
  • Zoek de bitmaskers voor elk van de processoren:
  • Uitgaande van kernen 0-11 voor knooppunt 0: [1,2,4,8,10,20,40,80,100,200,400,800]
  • Zoek de IRQ's die zijn toegewezen aan de toegewezen poort: grep ethX /proc/interrupts en noteer de IRQ-waarden. Bijvoorbeeldample, 181-192 voor de 12 geladen vectoren.
  • Echo de SMP-affiniteitswaarde in de overeenkomstige IRQ-invoer. Let op dat dit voor elke IRQ-invoer moet worden gedaan: echo 1 > /proc/irq/181/smp_affinity echo 2 > /proc/irq/182/smp_affinity echo 4 > /proc/irq/183/smp_affinity IRQ-affiniteit weergeven:
  • Om de IRQ-affiniteit voor alle kernen weer te geven: /scripts/set_irq_affinity -s ethX
  • Om alleen cores op de lokale NUMA-socket weer te geven: /scripts/set_irq_affinity -s lokale ethX
  • U kunt ook een reeks kernen selecteren: /scripts/set_irq_affinity -s 40-0-8,16 ethX

OPMERKING
Het script set_irq_affinity ondersteunt de -s-vlag in i40e-driverversie 2.16.11 en later.
4.2 Tx/Rx-wachtrijen
Het standaard aantal wachtrijen dat door de driver bij initialisatie voor elke Ethernet-poort is ingeschakeld, is gelijk aan het totale aantal CPU's dat op het platform beschikbaar is. Dit werkt goed voor veel platforms en workloadconfiguraties. Op platforms met een hoog aantal cores en/of een hoge Ethernet-poortdichtheid kan deze configuratie echter leiden tot resourceconflicten. Daarom kan het in sommige gevallen nodig zijn om de standaard voor elke poort in het systeem te wijzigen.
Het standaard aantal Tx/Rx-wachtrijen kan variëren, afhankelijk van het specifieke model en de driverversie. Het aantal wachtrijen kan worden aangepast met de onderstaande opdracht ethtool -L.
OPMERKING
In deze gevallen raadt Intel aan om het standaardwachtrijaantal voor elke poort te verlagen tot niet meer dan het aantal CPU's dat beschikbaar is in het NUMA-knooppunt lokaal op de adapterpoort. In sommige gevallen, bij het proberen om resources te balanceren op implementaties met een hoog poortaantal, kan het nodig zijn om dit aantal nog verder te verlagen.
Om de wachtrijconfiguratie te wijzigen:
De volgende example stelt de poort in op 32 Tx/Rx-wachtrijen: ethtool -L ethX combined 32
Exampbestandsuitgang:
ethtool -l ethX
Kanaalparameters voor ethX: Vooraf ingestelde maxima:
RX: 96
TX: 96
Overig: 1
Gecombineerd: 96
Huidige hardware-instellingen:
RX: 0
TX: 0
Overig: 1
Gecombineerd: 32
4.3 Onderbrekingsmoderatie
Adaptieve interruptmoderatie is standaard ingeschakeld en is ontworpen om een ​​evenwichtige aanpak te bieden tussen laag CPU-gebruik en hoge prestaties. U kunt echter proberen om interruptinstellingen handmatig aan te passen aan uw use case.
Het bereik van 0-235 microseconden biedt een effectief bereik van 4,310 tot 250,000 interrupts per seconde. De waarde van rx-μsecs-high kan onafhankelijk van rx-μsecs en tx-μsecs worden ingesteld in dezelfde ethtool-opdracht, en is ook onafhankelijk van het adaptieve interrupt-moderatiealgoritme. De onderliggende hardware ondersteunt granulariteit in intervallen van 2 microseconden, dus aangrenzende waarden kunnen resulteren in dezelfde interrupt-snelheid.

  • Om adaptieve interrupt-moderatie uit te schakelen: ethtool -C ethX adaptive-rx off adaptive-tx off
  • Om adaptieve interrupt-moderatie in te schakelen: ethtool -C ethX adaptive-rx on adaptive-tx on

Een goede plek om te beginnen voor algemene tuning is 84 μs, of ~12000 interrupts/s. Als u ziet dat rx_dropped counters draaien tijdens verkeer (met behulp van ethtool -S ethX), dan hebt u waarschijnlijk een te trage CPU, niet genoeg buffers van de ringgrootte van de adapter (ethtool -G) om pakketten 84 μs vast te houden of een te lage interrupt rate.

  • Om interrupt moderation in te stellen op een vaste interrupt rate van 84 μs tussen interrupts (12000 interrupts/s): ethtool -C ethX adaptive-rx off adaptive-tx off rx-usecs 84 tx-usecs 84 De volgende waarde om te proberen, als u niet maximaal gebruikmaakt van de CPU, is 62 μs. Dit gebruikt meer CPU, maar het bedient buffers sneller en vereist minder descriptors (ring size, ethtool -G).
  • Om de onderbrekingsmoderatie in te stellen op een vaste onderbrekingsfrequentie van 62 usecs tussen onderbrekingen (16000 onderbrekingen/s). ethtool -C ethX adaptive-rx off adaptive-tx off rx-usecs 62 tx-usecs 62
    Als rx_dropped-tellers toenemen tijdens verkeer (met behulp van ethtool -S ethX), hebt u waarschijnlijk een te trage CPU, niet genoeg buffers van de ringgrootte van de adapter (ethtool -G) of een te lage interruptsnelheid. Als u niet maximaal gebruikmaakt van de CPU, kunt u de interruptsnelheid verhogen door de ITR-waarde te verlagen. Dit gebruikt meer CPU, maar servicesbuffers zijn sneller en vereist minder descriptors (ringgrootte, ethtool -G).
    Als uw CPU op 100% staat, wordt het verhogen van de interrupt rate afgeraden. In bepaalde omstandigheden, zoals een CPU-gebonden workload, wilt u mogelijk de μs-waarde verhogen om meer CPU-tijd voor andere applicaties mogelijk te maken.
    Als u lage latentieprestaties nodig hebt en/of voldoende CPU hebt voor netwerkverwerking, kunt u interrupt-moderatie volledig uitschakelen. Hierdoor worden de interrupts zo snel mogelijk afgevuurd.
  • Om interrupt moderatie uit te schakelen ethtool -C ethX adaptive-rx off adaptive-tx off rx-usecs 0 tx-usecs 0

OPMERKING
Wanneer u met interrupt-moderatie uitgeschakeld uitvoert, kan de interrupt-snelheid in elke wachtrij erg hoog zijn. Overweeg de parameter rx-usec-high op te nemen om een ​​bovengrens voor de interrupt-snelheid in te stellen. De volgende opdracht schakelt adaptieve interrupt-moderatie uit en staat maximaal 5 microseconden toe voordat wordt aangegeven dat een ontvangst of verzending is voltooid. In plaats van te resulteren in 200,000 interrupts per seconde, beperkt het het totale aantal interrupts per seconde tot 50,000 via de parameter rx-usec-high. # ethtool -C ethX adaptive-rx off adaptive-tx off rx-usecs-high 20 rx-usecs 5 txusecs 5 Probeer de coalescing-timer voor verzenden/ontvangen/hoge prioriteit hoger (80/100/150/200) of lager (25/20/10/5) in te stellen om de optimale waarde voor de werklast te vinden.
4.4 Ringmaat
Als u rx_dropped-tellers ziet in ethtool -S ethX (rx_dropped, rx_dropped.nic), of cachedruk vermoedt met meerdere actieve wachtrijen, kunt u proberen de ringgrootte aan te passen vanaf de standaardwaarde. De standaardwaarde is 512, de max is 4096.

  • Om de huidige waarden te controleren: ethtool -g ethX
    Als u vermoedt dat een gebrek aan buffering de oorzaak is van de onderbrekingen bij de huidige onderbrekingsfrequentie, kunt u eerst de maximale waarde proberen, vervolgens de minimale waarde en vervolgens een binaire zoekopdracht uitvoeren totdat u optimale prestaties ziet.
    Als cachedruk wordt vermoed (veel wachtrijen actief), kan het verminderen van buffers van standaard helpen Intel ® Data Direct I/O (Intel ® DDIO) efficiënter te laten werken. Intel raadt aan om 128 of 256 per wachtrij te proberen, wetende dat een verhoging van de interrupt rate via ethtool -C nodig kan zijn om een ​​verhoging van rx_dropped te voorkomen.
  • Om de ringmaat op een vaste waarde in te stellen: ethtool -G eth12 rx 256 tx 256

OPMERKING
Om Rx-pakketverlies op te lossen dat is aangetroffen met ethtool -S ethX|grep drop, kunt u overwegen de ringgrootte te verhogen naar 4096. Experimenteer om de beste instelling voor de werklast te vinden, maar wees voorzichtig met overmatig geheugengebruik bij hogere waarden.
4.5 Stroomregeling
Layer 2 flow control kan de TCP-prestaties aanzienlijk beïnvloeden en wordt aanbevolen om uit te schakelen voor de meeste workloads. Een mogelijke uitzondering is bursty-verkeer waarbij de bursts niet lang duren.
Stroomregeling is standaard uitgeschakeld.

  • Om flow control in te schakelen: ethtool -A ethX rx on tx on
  • Om de flow control uit te schakelen: ethtool -A ethX rx off tx off

OPMERKING
U hebt een koppelingspartner nodig die flow control ondersteunt om flow control succesvol in te kunnen schakelen.
4.6 Jumbo-frames
Wanneer de verwachte verkeersomgeving bestaat uit grote blokken data die worden overgedragen, kan het nuttig zijn om de jumbo frame-functie in te schakelen. Jumbo Frames-ondersteuning wordt ingeschakeld door de Maximum Transmission Unit (MTU) te wijzigen naar een waarde die groter is dan de standaardwaarde van 1500. Hierdoor kan het apparaat data in grotere pakketten binnen de netwerkomgeving overdragen. Deze instelling kan de doorvoer verbeteren en het CPU-gebruik voor grote I/O-werklasten verminderen. Het kan echter van invloed zijn op kleine pakket- of latentiegevoelige werklasten.
OPMERKING
Jumboframes of grotere MTU-instellingen moeten correct worden geconfigureerd in uw netwerkomgeving.
Gebruik de ifconfig-opdracht om de MTU-grootte te vergroten. Bijvoorbeeldample, voer het volgende in, waarbij is het interfacenummer: ifconfig mtu 9000 omhoog
U kunt ook de ip-opdracht als volgt gebruiken: ip link set mtu 9000 dev ip-link instellen dev

Platform Tuning (i40e niet-specifiek)

5.1 BIOS-instellingen

  • Schakel Intel® VT-d in voor virtualisatieworkloads.
  • Hyper-threading (logische processors) kan de prestaties beïnvloeden. Experimenteer ermee om het aan of uit te zetten voor uw workload.
  • Intel® Turbo Boost zorgt ervoor dat CPU-cores op een hogere frequentie werken dan de basisfrequentie van de CPU. Het inschakelen van Intel® Turbo Boost kan de prestaties voor veel workloads verbeteren, maar verbruikt meer stroom om de cores op een hogere frequentie te houden. Experimenteer met Turbo Boost uit/aan voor uw workload.

OPMERKING
Turbofrequenties zijn niet gegarandeerd als het platform een ​​hoog algeheel CPU-gebruik ervaart. Hogere core turbofrequenties worden verlaagd naarmate het algeheel CPU-gebruik toeneemt.
5.2 Energiebeheer
Power management kan de prestaties beïnvloeden, met name bij workloads met lage latentie. Als prestaties een hogere prioriteit hebben dan het verlagen van het stroomverbruik, raadt Intel aan om te experimenteren met het beperken van de effecten van power management. Er zijn veel verschillende manieren om power management te beperken, via tools van het besturingssysteem, BIOS-instellingen en kernel boot parameters. Kies de beste methode en het beste niveau voor uw omgeving.
5.2.1 C-State Controle
Door de C-statustoegang te beperken tot CO of C1 worden de prestaties verbeterd en het stroomverbruik verhoogd.
Het uitschakelen van CPU Package C6 state entry kan de netwerkprestaties verbeteren. Dit verhoogt echter het stroomverbruik.
De volgende opties zijn beschikbaar:

  • Dynamische controle over de C-statusinvoer:
    Open
    /dev/cpu_dma_latency en schrijf de maximaal toegestane latentie erin.

OPMERKING
Er is een klein programma genaamd cpudmalatency.c dat u kunt downloaden van de open source community, kunt compileren en uitvoeren vanaf de opdrachtregel om precies dit te doen.
De volgende example staat vijf μs aan wektijd toe, en staat dus C1-invoer toe: cpudmalatency 5 &

  • Beperk de maximale C-status in de kernel-opstartinstellingen:
    Voor Intel CPU's: intel_idle.max_cstates=1
    Voor niet-Intel CPU's: processor.max_cstates=1
  • Gebruik de opdracht cpupower om de CPU C6-status te controleren en uit te schakelen: Controleer: cpupower monitor of cpupower idle-info
    C6 uitschakelen: cpupower idle-set -d3 of
    C-States uitschakelen: cpupower idle-set -D0

Opmerkingen:

  1. Schakel C-states op de CPU uit als de server Intel® 4th Gen Intel® Xeon® Scalable Processor(s) heeft. Wanneer Hyper Threading is ingeschakeld of uitgeschakeld, voorkomt het uitschakelen van inactieve statussen (-D0) dat cores in low-power-statussen terechtkomen tijdens inactieve periodes en vermindert de latentie voor de CPU om over te gaan van inactieve naar actieve statussen.
  2. Het energiebeheer van de Intel® 4e generatie Intel® Xeon® Scalable Processor is extreem agressief. Om te voorkomen dat cores in een low-power-status terechtkomen, kunt u proberen het aantal gebruikte cores te verminderen om ze langer wakker te houden (ethtool -L gecombineerd ). Bind interrupts ook aan specifieke cores met set irq affinity (meestal met -x local of list of CPU cores) en zorg ervoor dat de workload op dezelfde cores draait met taskset of numactl. Dit verbetert de prestaties door cores actief te houden en interrupt handling te optimaliseren.

C6 inschakelen:
cpupower inactief-set -d3
C-States inschakelen:
cpupower inactief-set -E

  • Een andere methode is om de afgestemde tool (meegeleverd met veel Linux-distributies) te gebruiken om een ​​prestatieprofile. Deze profiles wijzigen verschillende OS-instellingen die de prestaties van veel applicaties kunnen beïnvloeden. Er is ontdekt dat de netwerkdoorvoerprofile biedt verbetering voor de meeste workloads.
    Rekening:
    tuned-adm actief
    Set:
    afgestemd-adm profile netwerkdoorvoer
    OPMERKING
    De afgestemde service moet voor bovenstaande opdrachten worden uitgevoerd. Om te controleren/opnieuw te starten, afgestemd: systemctl status tuned systemctl restart tuned
    U kunt ook elke C-statusvermelding blokkeren door het volgende toe te voegen aan de opstartregel van de kernel:
    inactief=poll
  • Beperk de C-status via de BIOS-energiebeheerinstellingen van het systeem, die mogelijk een prestatieverbetering kunnen hebbenfile beschikbaar.
    Met hulpmiddelen zoals turbostat of x86_energy_perf_policy kunt u de instellingen voor energiebeheer controleren of instellen.

5.2.2 PCIe-energiebeheer
Active-State Power Management (ASPM) schakelt een lagere energiestatus in voor PCIe-koppelingen wanneer ze niet actief worden gebruikt. Dit kan leiden tot hogere latentie op PCIe-netwerkapparaten, dus Intel raadt aan om ASPM uit te schakelen voor latentiegevoelige workloads. Schakel ASPM uit door het volgende toe te voegen aan de kernel-opstartregel: pcie_aspm=off
5.2.3 CPU-frequentieschaling
CPU-frequentieschaling (of CPU-snelheidschaling) is een Linux-powermanagementtechniek waarbij de kloksnelheid van het systeem on-the-fly wordt aangepast om energie en warmte te besparen. Net als C-states kan dit ongewenste latentie op netwerkverbindingen veroorzaken.
De cpupower-tool kan ook worden gebruikt om de standaardinstellingen en limieten voor CPU-prestaties te controleren en te wijzigen:

  • Controleer: cpupower monitor of
  • Stel CPU's in op prestatiemodus: cpupower frequency-set -g performance

OPMERKING
Wijzigingen in de CPU-frequentielimieten kunnen gevolgen hebben voor veel workloads en kunnen andere functies uitschakelen, zoals de CPU-turbomodus.
Om CPU-frequentieschaling uit te schakelen, schakelt u de CPU-stroomservice uit met de volgende opdrachten:
systemctl stop cpupower.service
systemctl schakelt cpupower.service uit
5.2.4 Aanvullende richtlijnen voor energiebeheer
Aanvullende details worden verstrekt in dit uitgebreide overzichtview van veel van de energiebeheerfuncties in de 3e generatie Intel® Xeon® Scalable-processors, evenals richtlijnen voor hoe deze functies op platformniveau kunnen worden geïntegreerd: https://networkbuilders.intel.com/solutionslibrary/power-management-technologyoverview-technology-guide
5.3 Intel® Turbo Boost
Intel® Turbo Boost maakt de processor sneller wanneer nodig, maar kan extra stroom verbruiken. Door Turbo Boost uit te schakelen blijft de processor op een constante snelheid, wat u een consistent prestatieniveau geeft voor specifieke workloads.
5.4 Firewalls
Firewalls kunnen de prestaties beïnvloeden, met name de latentieprestaties.
Schakel iptables/firewalld uit als u dit niet nodig hebt.
5.5 Applicatie-instellingen
Vaak is één enkele thread (die overeenkomt met één netwerkwachtrij) niet voldoende om maximale bandbreedte te bereiken. Sommige platformarchitecturen, zoals AMD, hebben de neiging om meer Rx-pakketten te laten vallen met één enkele thread vergeleken met platforms met Intel-processors.
Overweeg om tools als tasket of numactl te gebruiken om applicaties vast te pinnen aan het NUMA-knooppunt of CPU-cores die lokaal zijn op het netwerkapparaat. Voor sommige workloads, zoals storage I/O, biedt het verplaatsen van de applicatie naar een niet-lokaal knooppunt voordelen.
Experimenteer indien mogelijk met het verhogen van het aantal threads dat uw toepassing gebruikt.
5.6 Kernelversie
De meeste moderne in-box kernels zijn redelijk goed geoptimaliseerd voor prestaties, maar afhankelijk van uw use case kan het updaten van de kernel betere prestaties opleveren. Door de bron te downloaden kunt u ook bepaalde functies in- of uitschakelen voordat u de kernel bouwt.
5.7 Besturingssysteem-/kernelinstellingen
Raadpleeg handleidingen voor het afstemmen van besturingssystemen, zoals de Red Hat Enterprise Linux Network Performance Tuning Guide, voor meer inzicht in algemene afstemming van besturingssystemen.
Enkele veelvoorkomende parameters om af te stemmen, worden in de volgende tabel vermeld. Let op: dit zijn slechts voorgestelde startpunten en het wijzigen van de standaardwaarden kan de resources die op het systeem worden gebruikt, verhogen. Hoewel het verhogen van de waarden kan helpen de prestaties te verbeteren, is het noodzakelijk om te experimenteren met verschillende waarden om te bepalen wat het beste werkt voor een bepaald systeem, werklast en verkeerstype.
De kernelparameters kunnen worden geconfigureerd met behulp van het hulpprogramma sysctl in Linux, zoals hieronder aangegeven.
Naar view de standaardwaarden voor rmem en wmem op het systeem:
sysctl net.core.rmem_standaard
sysctl net.core.wmem_standaard
Stel de waarden in op max (16 MB):
sysctl -w net.core.rmem_max=16777216
sysctl -w net.core.wmem_max=16777216
Socketbuffergroottes, ook bekend als ontvangstbuffer (rmem) en verzendbuffer (wmem), zijn systeemparameters die de hoeveelheid geheugen specificeren die is gereserveerd voor inkomend en uitgaand netwerkverkeer.
Als u sysctl uitvoert zonder het argument -w, wordt de parameter met de huidige instelling weergegeven.

Stapelinstelling Beschrijving
net.core.rmem_standaard Standaard ontvangstvenstergrootte
net.core.wmem_standaard Standaard verzendvenstergrootte
net.core.rmem_max Maximale ontvangstvenstergrootte
net.core.wmem_max Maximale verzendvenstergrootte
net.core.optmem_max Maximale optiegeheugenbuffers
net.core.netdev_max_achterstand Achterstand van onverwerkte pakketten voordat de kernel begint met het droppen
net.ipv4.tcp_rmem Geheugenreservering voor TCP-leesbuffers
net.ipv4.tcp_wmem Geheugenreservering voor TCP-verzendbuffers

Kernel, netwerkstack, geheugenhandler, CPU-snelheid en powermanagementparameters kunnen een grote impact hebben op de netwerkprestaties. Een veelvoorkomende aanbeveling is om de netwerkdoorvoerprofile met behulp van de tuned-opdracht. Hiermee worden een paar OS-instellingen aangepast om netwerktoepassingen voorrang te geven.
Rekening:
tuned-adm actief
Set:
afgestemd-adm profile netwerkdoorvoer
5.8 Netwerkapparaat-achterstand
Deze functie helpt de netwerkprestaties te verbeteren door binnenkomend verkeer effectief te beheren, pakketverlies te verminderen, latentie te verlagen en de doorvoer te verhogen. Dit leidt tot een betere gebruikerservaring en snellere systeemrespons.
Standaard is het ingeschakeld in de meeste Linux-besturingssystemen. Om de standaardwaarde te controleren:
sysctl net.core.netdev_max_backlog
De maximumwaarde voor netdev_max_backlog kan variëren afhankelijk van factoren zoals kernelversie, hardware, geheugen en werklast. In veel gevallen wordt 8192 gezien als een goede waarde. sysctl -w net.core.netdev_max_backlog=8192
5.9 Platformspecifieke configuraties en afstemming
5.9.1 4e generatie Intel® Xeon® schaalbare processoren

Het energiebeheer van de Intel® 4e generatie Intel® Xeon® Scalable-processor is extreem agressief vergeleken met de 3e generatie Intel® Xeon® Scalable-processors. Om te voorkomen dat cores in een toestand van laag vermogen terechtkomen, kunt u proberen het aantal gebruikte cores te verminderen om ze langer wakker te houden.
Aanbevolen BIOS-instellingen voor de hoogste prestaties

  1. Hyperthreading in-/uitschakelen (op basis van de werklastvereisten en prestatiedoelen) op de CPU.
  2. Stel het systeem pro infile naar Prestaties voor maximale prestaties.
    OPMERKING
    Dit resulteert in een hoger stroomverbruik
  3. Stel het CPU-energiebeheer in op Maximale prestaties om maximale CPU-prestaties boven energie-efficiëntie te geven.
  4. Turbo Boost inschakelen. Turbo Boost uitschakelen in de BIOS-instellingen van het systeem voorkomt doorgaans dat de CPU zijn kloksnelheid dynamisch verhoogt voorbij zijn basisfrequentie.
  5. OPMERKING
    Het uitschakelen van Turbo Boost kan geschikt zijn voor bepaalde use cases waarbij consistente prestaties, energie-efficiëntie of thermisch beheer voorrang krijgen boven maximale prestaties.
  6. Schakel de functie Single Root I/O Virtualization (SR-IOV) uit als het systeem geen virtualisatietechnologieën gebruikt.
  7. Schakel C-states uit om de CPU te instrueren actief te blijven en te voorkomen dat deze dieper inactief wordt.
  8. Schakel C1E uit om ervoor te zorgen dat de CPU actief blijft en niet in de C1E-inactieve status terechtkomt.
  9. Stel de uncore-frequentie in op maximaal om het systeem te instrueren om te werken op de hoogst beschikbare frequentie.
  10. Op Dell-platforms stelt u de Multiple APIC Description Table (MADT)-core-emulatie in op Lineair (of Round-Robin, afhankelijk van het BIOS) voor een duidelijke en voorspelbare toewijzing van CPU-cores.

Aanbevolen OS-niveau-afstemmingen voor geoptimaliseerde prestaties

  1. Stel de CPU-frequentieschaalregelaar in op prestaties. cpupower frequency-set -g performance cpupower frequency-info
  2. Schakel C-States uit. cpupower idle-set -D0
  3. Stel de core Rx (rmem) en Tx (wmem) buffers in op de maximale waarde. sysctl -w net.core.rmem_max=16777216 sysctl -w net.core.wmem_max=16777216
  4. Stel netwerkapparaatbacklog in. sysctl -w net.core.netdev_max_backlog=8192
  5. Set afgestemd profile (werklast afhankelijk van doorvoer/latentie).
    afgestemd-adm profile netwerkdoorvoer

Aanbevolen adapterniveau-afstemmingen voor geoptimaliseerde prestaties

  1. Beperk het aantal wachtrijen dat gebruikt moet worden voor applicatieverkeer. Gebruik het minimale aantal wachtrijen dat nodig is om de bijbehorende CPU-cores actief te houden om te voorkomen dat ze diepere inactieve toestanden ingaan (pas aan voor de werklast): ethtool -L gecombineerd 32
  2. Stel onderbrekingsmoderatietarieven in. ethtool -C adaptieve-rx uit adaptieve-tx uit rx-usecs-hoog 50 rx-usecs 50 tx-usecs 50
    Probeer de zend-/ontvangst-/hoge-prioriteitscoalescingtimer hoger (80/100/150/200) of lager (25/20/10/5) in te stellen om de optimale waarde voor de werklast te vinden.
  3. Stel de Rx/Tx ringmaten in. ethtool -G recept 4096 tx 4096
    OPMERKING
    Als u ziet dat Rx-pakketten worden gedropt met ethtool -S| grep drop, probeer dan de ringgrootte te verkleinen tot <4096. Probeer de optimale waarde te vinden voor de werklast waarbij pakketten niet worden gedropt.
  4. IRQ-affiniteit instellen. Gebruik cores lokaal voor NIC of specifieke core-mapping (waarbij # cores gelijk is aan het aantal wachtrijen dat is ingesteld in 1 op pagina 26. systemctl stop irqbalance set_irq_affinity -X local OF set_irq_affinity -X

5.9.2 AMD EPYC
AMD EPYC-processors zijn krachtige CPU's die zijn gemaakt voor servers en datacenters, gebouwd op AMD's Zen-architectuur. De onderstaande instellingen zijn afkomstig van AMD's 4e generatie EPYC-serie.
Aanbevolen BIOS-instellingen voor de hoogste prestaties

  1. Schakel de aangepaste modus in om gebruikers toe te staan ​​CPU-prestaties, stroomverbruik en andere instellingen aan te passen. Dit helpt bij het finetunen van het systeem voor de beste balans tussen prestaties en energie-efficiëntie.
  2. Schakel Core Performance Boost in, zodat de CPU automatisch sneller wordt om intensievere taken uit te voeren en de algehele prestaties verbeteren.
  3. Schakel de globale C-statuscontrole uit om te voorkomen dat de CPU diepere energiebesparende standen ingaat, ook wel C-statussen genoemd, waarmee de responsiviteit behouden kan blijven.
    OPMERKING
    Het uitschakelen van C-states kan extra stroomverbruik veroorzaken en thermische temperaturen verhogen. Houd beide in de gaten voor de werklast.
  4. Simultaneous Multithreading (SMT) op de CPU in-/uitschakelen, op basis van de workloadvereisten en prestatiedoelen. SMT is equivalent aan Hyper Threading op Intel CPU's.
    OPMERKING
    Voor optimale prestaties raadpleegt u de secties i40e-stuurprogramma-instellingen afstemmen op pagina 13 en platformafstemming (i40e niet-specifiek) op pagina 19 voor de aanbevolen afstemming op besturingssysteem- en adapterniveau.

Adapterverbinding

Linux bonding is een krachtige feature die de netwerkprestaties, redundantie en fouttolerantie in serveromgevingen aanzienlijk kan verbeteren. Het is echter belangrijk om op te merken dat het compatibele netwerkhardware en een juiste configuratie op zowel de server als de switch vereist om goed te functioneren.
Met de bonding driver in Linux kunt u meerdere fysieke netwerkinterfaces samenvoegen tot een bonded interface. Deze bonded interface verschijnt als een enkele virtuele netwerkinterface voor het besturingssysteem en de applicaties.
OPMERKING
De bond is een logische interface, dus het is niet mogelijk om de CPU-affiniteit rechtstreeks op de bondinterface in te stellen (bijvoorbeeldample, bond0). Dat wil zeggen dat het geen directe controle heeft over interrupt handling of CPU affiniteit. CPU affiniteit moet worden geconfigureerd voor de onderliggende interfaces die deel uitmaken van de bond.
Bonding kent verschillende werkingswijzen, elk met zijn eigen kenmerken.

Modus  Type
0 Ronde Robin
1 Actieve back-up
2 XOR
3 Uitzending
4 LACP
5 Verzendlastbalans
6 Adaptieve lastbalans

Er zijn verschillende methoden om een ​​bonding te creëren in Linux. Een van de meest voorkomende methoden is door gebruik te maken van netwerkconfiguratie files (bijvoorbeeldample, /etc/network/ interfaces of /etc/sysconfig/network-scripts/ifcfg-bondX).
Configuratie met behulp van netwerkconfiguratie Files
De volgende stappen creëren bonding via de netwerkconfiguratie files.

  1. Selecteer twee of meer NIC-poorten voor bonding (bijv.ample, ethX en ethY)
  2. Open NIC-configuratie Files onder /etc/sysconfig/network-scripts/ voor de vereiste NIC-interface (bijv.ample, vi ifcfg-ethX en vi ifcfg-ethY) en voeg de volgende tekst toe:
    MASTER=bondN [Opmerking: N is een geheel getal om het bondnummer te vermelden.] SLAVE=ja
  3. Maak een script voor een obligatienetwerk file gebruik vi /etc/sysconfig/networkscripts/ifcfg-bondN en voer de volgende tekst in:
    DEVICE=bondN [Opmerking: N is een geheel getal om het bondnummer te vermelden] ONBOOT=ja USERCTL=nee BOOTPROTO=dhcp (of) geen
    IPADDR=200.20.2.4 [vereist als BOOTPROTO=geen] NETMASK=255.255.255.0 [vereist als BOOTPROTO=geen] NETWORK=200.20.2.0 [vereist als BOOTPROTO=geen] BROADCAST=200.20.2.255 [vereist als BOOTPROTO=geen] BONDING_OPTS=”mode=1 miimon=100″
    OPMERKING
    De modus kan elk geheel getal tussen 0 en 6 zijn, afhankelijk van de vereiste.
  4. Start de netwerkservices opnieuw op met behulp van service network restart of systemctl restart NetworkManager.service

Prestatieproblemen oplossen

7.1 CPU-gebruik
Controleer het CPU-gebruik per kern terwijl de werklast actief is.
Houd er rekening mee dat het gebruik per core relevanter is voor de prestaties dan het algehele CPU-gebruik, omdat het een idee geeft van het CPU-gebruik per netwerkwachtrij. Als u slechts een paar threads hebt die netwerkverkeer uitvoeren, worden er mogelijk maar een paar cores gebruikt. Als die cores echter op 100% staan, wordt uw netwerkdoorvoer waarschijnlijk beperkt door het CPU-gebruik en is het tijd om het volgende uit te voeren:

  1. Stel IRQ-moderatie/ringgrootte in zoals beschreven in Interrupt-moderatie.
  2. Verhoog het aantal applicatiethreads om de CPU-belasting over meer cores te verdelen. Als alle cores op 100% draaien, is uw applicatie mogelijk CPU-gebonden in plaats van netwerkgebonden.

Algemeen beschikbare hulpmiddelen:

  • bovenkant
    — Druk op 1 om de lijst met CPU's uit te vouwen en te controleren welke worden gebruikt.
    — Let op het gebruiksniveau.
    — Let op welke processen als meest actief worden weergegeven (bovenaan de lijst).
  • mpstat
    De volgende example command line is getest op Red Hat Enterprise Linux 7.x.
    Het geeft het CPU-gebruik per kern weer (door het totale percentage inactiviteit te bepalen en dit van 100 af te trekken) en markeert de waarden boven de 80% in het rood. mpstat -P ALL 1 1 | grep -v Average | tail -n +5 | head -n -1 | awk '{ print (100-$13)}' | egrep -color=always '[^\.][8-9][0-9][\.]?.*|^[8-9][0-9][\.]?.*| 100|' | column
  • perf top Kijk waar cycli worden doorgebracht.

7.2 i40e Tellers
De i40e driver biedt een lange lijst met tellers voor interface debug en monitoring via de ethtool -S ethX opdracht. Het kan handig zijn om de output te bekijken terwijl een workload draait en/of de tellerwaarden te vergelijken voor en na een workload run.

  • Om een ​​volledige dump van i40e-tellers te krijgen: ethtool -S ethX
  • Om alleen tellers te bekijken die niet nul zijn: watch -d (ethtool -S ethX) | egrep -v :\ 0 | column
    Waar u op moet letten:
  • rx_dropped betekent dat de CPU de buffers niet snel genoeg verwerkt.
  • port.rx_dropped betekent dat er iets niet snel genoeg is in het slot/geheugen/systeem.

7.3 Netwerktellers
Controleer netstat -s voor/na het uitvoeren van een workload.
Netstat verzamelt netwerkinformatie van alle netwerkapparaten in het systeem. Resultaten kunnen daarom worden beïnvloed door andere netwerken dan het geteste netwerk. De uitvoer van netstat -s kan een goede indicator zijn van prestatieproblemen in het Linux-besturingssysteem of de kernel. Raadpleeg de handleidingen voor het afstemmen van het besturingssysteem, zoals de Red Hat Enterprise Linux Network Performance Tuning Guide, voor meer inzicht in algemene afstemming van het besturingssysteem.
7.4 Systeemlogboeken
Controleer de systeemlogboeken op fouten en waarschuwingen (/var/log/messages, dmesg).
7.5 Intel svr-info-hulpprogramma
Intel biedt een svr-info-tool (zie https://github.com/intel/svr-info) voor Linux die relevante hardware- en softwaredetails van een server vastlegt. svr-info-uitvoer kan zeer nuttig zijn om systeemknelpunten of instellingen/afstemmingen te identificeren die niet zijn geoptimaliseerd voor de werklast. Wanneer u een supportcase opent met Intel voor Ethernet-gerelateerde prestatieproblemen, zorg er dan voor dat u svr-info-uitvoer (tekst file) voor elke Linux-server in de testconfiguratie.

  1. Download en installeer svr-info:
    wget -qO- https://github.com/intel/svr-info/releases/latest/download/svrinfo.tgz| tar xvz cd svr-info
    ./svr-info
    > hostnaam.txt
  2. Verzamel de uitvoer:
    ./svr-info > hostnaam.txt
  3. Voeg één tekst toe (.txt) file voor elke server naar uw Intel-ondersteuningscase voor analyse.

Aanbevelingen voor veelvoorkomende prestatiescenario's

8.1 IP-doorsturen

  • Werk de kernel bij.
    Sommige recente in-distro kernels hebben een verslechterde routing performance door kernelwijzigingen in de routing code, te beginnen met het verwijderen van de routing cache vanwege beveiliging. Recente out-of-distro kernels zouden patches moeten hebben die de performance impact van deze wijzigingen verlichten en mogelijk betere performance bieden.
  • Hyperthreading (logische kernen) uitschakelen.
  • Bewerk de opstartparameters van de kernel.
    — Forceer iommu off (intel_iommu=off of iommu=off) vanaf de kernel bootlijn, tenzij vereist voor virtualisatie
    — Schakel het energiebeheer uit: processor.max_cstates=1 idle=poll pcie_aspm=off
  • Beperk het aantal wachtrijen tot het aantal cores op de lokale socket (in dit voorbeeld 12).ample). ethtool -L ethX gecombineerd 12
  • Pin-interrupts alleen naar lokale socket. set_irq_affinity -X lokale ethX OF set_irq_affinity -X lokale ethX
    OPMERKING
    Afhankelijk van de werklast kan -X of -x gebruikt worden.
  • Wijzig de Tx- en Rx-ringgroottes indien nodig. Een grotere waarde kost meer bronnen, maar kan betere doorstuursnelheden bieden. ethtool -G ethX rx 4096 tx 4096
  • GRO uitschakelen tijdens het routeren.
    Vanwege een bekend kernelprobleem moet GRO worden uitgeschakeld tijdens het routeren/doorsturen. ethtool -K ethX gro off waarbij ethX de Ethernet-interface is die moet worden gewijzigd.
  • Schakel adaptieve interrupt-moderatie uit en stel een statische waarde in. ethtool -C ethX adaptive-rx off adaptive-tx off ethtool -C ethX rx-usecs 64 tx-usecs 64

OPMERKING
Afhankelijk van het type processor en de werklast kunnen de coalescentieparameters voor RX en TX worden aangepast voor betere prestaties (of minder frameverlies).

  • Schakel de firewall uit. sudo systemctl disable firewalld sudo systemctl stop firewalld
  • IP-forwarding inschakelen. sysctl -w net.ipv4.ip_forward=1
  • Configureer maximale waarden voor de ontvangst- en verzendsocketbuffergroottes. sysctl -w net.core.rmem_max=16777216 sysctl -w net.core.wmem_max=16777216

OPMERKING
Afhankelijk van de werklast of vereisten kunnen deze waarden worden gewijzigd ten opzichte van de standaardwaarden.
8.2 Lage latentie

  • Schakel hyperthreading (logische kernen) UIT.
  • Zorg ervoor dat het netwerkapparaat lokaal is op numa core 0.
  • Zet de benchmark vast op core 0 met tasket -c 0.
  • Schakel irqbalance uit met systemctl stop irqbalance of systemctl disable irqbalance
  • Voer het affiniteitsscript uit om over cores te verspreiden. Probeer lokaal of alles.
  • Schakel interrupt-moderatie uit. ethtool -C ethX rx-usecs 0 tx-usecs 0 adaptive-rx uit adaptive-tx uit rxusecs- hoog 0
  • Beperk het aantal wachtrijen tot het aantal cores op de lokale socket (in dit voorbeeld 32).ample). ethtool -L ethX gecombineerd 32
  • Pin-interrupts alleen naar lokale socket (script verpakt met i40e driverbron). set_irq_affinity -X local ethX
  • Gebruik een gevestigde benchmark zoals netperf -t TCP_RR, netperf -t UDP_RR of NetPipe. netperf -t TCP_RR of netperf -t UDP_RR
  • Pin benchmark aan een enkele kern in het lokale NUMA-knooppunt. taskset -c

Intel ® Ethernet 700-serie
Handleiding voor Linux-prestatie-afstemming
December 2024
Doc. nr.: 334019, Rev.: 1.2

Documenten / Bronnen

Intel Ethernet 700-serie Linux-prestatie-afstemming [pdf] Gebruikershandleiding
334019, Ethernet 700-serie Linux-prestatie-afstemming, Ethernet 700-serie, Linux-prestatie-afstemming, Prestatie-afstemming, Afstemming

Referenties

Laat een reactie achter

Uw e-mailadres wordt niet gepubliceerd. Verplichte velden zijn gemarkeerd *