Serie Intel ® Ethernet 700
Linux Performance Tuning Guide
NEX Cloud Networking Group (NCNG)
Rev. 1.2
dicembre 2024
Storia di rivisione
Revisione | Data | Cumenti |
1.2 | dicembre 2024 | · Aggiunta Guida di Gestione di l'energia addiziale. · Aggiuntu Intel* Turbo Boost. · Aggiuntu Backlog di Dispositivi Rete. · Aghjunghjite cunfigurazioni è sintonizzazioni specifiche per a piattaforma. · Aggiunti Processori scalabili Intel* %eon* di 4a generazione. · Aggiuntu AMD EPYC. · Aggiornata Verificate e Capacità di Hardware di u Sistema. · Actualizatu iPerf2. · Actualizatu iPerf3. · File Tx/Rx aghjurnati. · Aggiornata Moderation Interrupt. · Taglia di Ring aghjurnata. · Sintonizazione di a piattaforma aghjurnata (i40e Non-Specific). · Configurazione BIOS aghjurnata. · Cuntrolla C-State aghjurnata. · Scala di Frequenza CPU aghjurnata. · Configurazione di l'applicazione aghjurnata. · Configurazione di u Sistema Operativu / Kernel aghjurnatu. · Trasferimentu IP aghjurnatu. · Latenza bassa aghjurnata. |
Aostu 2023 | I cambiamenti à stu documentu includenu: · Aghjunghjite Referenze Relative. · Aggiuntu Assicuratevi chì u pacchettu DDP hè caricatu bè. · Aggiuntu iPerf2. · Aggiuntu iPerf3. · Netperf aghjuntu. · Affinità IRQ aghjurnata. · Aghjunghjite Tx/Rx Queues. · Taglia di Ring aghjurnata. · Aggiunti Jumbo Frames. · Adattatore Adattatore aghjuntu. · Aggiuntu Intel svr-info Tool. |
|
1.0 | marzu 2016 | Versione iniziale (Intel Public). |
Introduzione
Questa guida hè destinata à furnisce una guida per l'ambienti di sintonizazione per un rendimentu di rete ottimale utilizendu una NIC Intel ® Ethernet 700 Series in ambienti Linux. Si focalizeghja nantu à u hardware, u driver è e cundizioni di u sistema operatore è i paràmetri chì puderanu migliurà u rendiment di a rete. Semu devi esse nutatu chì u rendiment di rete pò esse affettatu da ogni quantità di influenze esterne, solu i più cumuni è drammatici di questi sò cuparti in questa guida.
1.1 Riferimenti Related
- Guida d'utilizatore per tutti l'adattatori è i dispositivi Intel ® Ethernet, chì supportanu Windows è Linux:
Guida per l'usu di l'adattatori è i dispositi Ethernet Intel ® - Scheda tecnica:
Scheda di dati Intel ® Ethernet Controller X710/XXV710/XL710 - Pacchettu SW cumpletu per tutti i prudutti Intel ® Ethernet (scaricate tutti i driver, NVM, arnesi, etc.):
Intel ® Ethernet Adapter Complete Driver Pack - Paquet d'aghjurnamentu NVM (Memoria Non-Volatile):
Memoria Non-Volatile (NVM) Update Utility per Intel ® Ethernet Network Adapter 700 Series - Strumenta svr-info per Linux chì cattura dettagli hardware è software pertinenti da un servitore: https://github.com/intel/svr-info
- Guida Tecnulugia DDP:
Guida tecnologica Intel ® Ethernet 700 Series Dynamic Device Personalizazione (DDP).
Lista di cuntrollu iniziale
2.1 Aghjurnate e Versioni di Driver / Firmware
Verificate e versioni di u driver / firmware usendu ethtool -i ethx.
Aghjurnate i seguenti cum'è necessariu:
- Aghjurnate u driver i40e
http://sourceforge.net/projects/e1000/files/i40e%20stable/ or https:// downloadcenter.intel.com/ download/24411/Network-Adapter-Driver-for-PCI-E-40- Gigabit-Network-Connections-under-Linux - Aghjurnate u firmware
https://downloadcenter.intel.com/download/24769/NVM-Update-Utility-for-Intel-Ethernet-ConvergedNetwork-Adapter-XL710-X710-Series
2.2 Leghjite u README
Verificate i prublemi cunnisciuti è uttene l'ultime struzzioni di cunfigurazione da u README file inclusu in u pacchettu fonte i40e.
2.3 Verificate chì u vostru slot PCI Express (PCIe) hè x8
Certi slot PCIe x8 sò in realtà cunfigurati cum'è slot x4. Questi slots anu una larghezza di banda insufficiente per a tarifa di linea completa cù i dispositi dual port è quad port. Inoltre, se mette un adattatore capaci di PCIe v3.0 in un slot PCIe v2.x, ùn pudete micca ottene una larghezza di banda completa. U driver di u dispositivu software rileva sta situazione è scrive u missaghju seguente in u logu di u sistema:
A larghezza di banda PCI-Express dispunibule per questa carta ùn hè micca abbastanza per un rendiment ottimali. Per un rendimentu ottimale hè necessariu un slot PCI-Express x8.
Se questu errore si trova, move u vostru adattatore à un veru slot PCIe v3.0 x8 per risolve u prublema.
2.4 Verificate e Capacità di Hardware di u Sistema
À 10 Gbps, 25 Gbps, è 40 Gbps Ethernet, ci sò alcuni requisiti minimi di CPU è di sistema. In generale, un processore di classa di servitore mudernu è a cunfigurazione di memoria ottima per a vostra piattaforma deve esse abbastanza, ma i bisogni varienu secondu a vostra carica di travagliu. Tutti i canali di memoria deve esse populati è u modu di rendiment di memoria deve esse attivatu in u BIOS. Verificate chì a vostra CPU è a cunfigurazione di memoria sò capaci di sustene u livellu di prestazione di a rete chì avete bisognu per a vostra carica di travagliu.
NOTA
U XL710 hè un controller 40 GbE. L'adattatore 2 x 40 GbE chì utilizeghja stu controller ùn hè micca pensatu à esse un 2 x 40 GbE ma un 1 x 40 GbE cù un portu di back-up attivu. Quandu pruvate d'utilizà u trafficu di linea chì implica i dui porti, u switch internu hè saturatu è a larghezza di banda cumminata trà i dui porti hè limitata à un totale di SO Gbps.
2.4.1 Kernel Boot Parameters
Se Intel® Virtualization Technology for Directed I/O (Intel® VT-d) hè attivata in u BIOS, Intel raccomanda chì IOMMU sia in modalità pass-through per prestazioni ottimali di a rete host. Questu elimina l'overhead DMA nantu à u trafficu di l'ospite mentre permette à e Macchine Virtuali (VM) di avè sempre i benefici di Intel® VT-d. Questu hè realizatu aghjunghjendu a seguente linea à i paràmetri di boot di u kernel: fommu-pt.
2.5 Assicuratevi chì u pacchettu DDP hè caricatu bè
I driver di basa 140ea è 140eb ùn anu micca supportu direttu per a persunalizazione dinamica di u dispositivu (DDP). Per utilizà DDP cù i dispositi di a Serie 700, un DDP profile pò esse appiicata cù l'applicazione testpmd.
Per i dettagli nantu à DDP profiles, è cumu applicà un DDP profile cù testpmd nantu à i dispositi di a Serie 700, fate riferimentu à a Guida di Tecnulugia Intel® Ethernet 700 Serie Dynamic Device Personalizazione (DDP).
Per verificà se un DDP profile hè stata caricata cun successu:
testpmd> ddp get list 0 Profile numeru hè: 1
NOTA
Se u profile u numeru hè 0, ùn hè micca caricatu un pacchettu DDP. In l'eventu di un errore di carica di u pacchettu DDP, u dispositivu predeterminatu in modu sicuru è parechje funzioni di rendiment ùn sò micca dispunibili. Se ci sò errori ligati à a carica di u pacchettu DDP, pruvucarà prublemi di rendiment. Per i passi di risoluzione di i prublemi, riferite à a Guida di Tecnulugia Inte/* Ethernet 700 Series Dynamic Device Personalizazione (DDP).
Misurazioni di Rendimentu di Baseline è Metodologia di Tuning
3.1 Benchmarks di rendiment di a rete
Prima di inizià un eserciziu di sintonizazione, hè impurtante avè una bona misurazione di basa di u vostru rendimentu di a rete. Di solitu, in più di ottene una misurazione iniziale di u rendimentu di a vostra applicazione specifica / carica di travagliu, hè una bona idea di utilizà ancu un benchmark di rendiment di rete standard per verificà chì u vostru dispositivu di rete hè in un bonu statu.
Per l'ottimisazione di un sistema unicu, netperf o iperf è NetPIPE sò tutti i solidi strumenti gratuiti opensource chì vi permettenu di stressà una cunnessione è diagnosticà prublemi di rendiment.
Netperf hè forte per a prova di throughput è di latenza. NetPIPE hè un strumentu specificu di latenza, ma pò esse compilatu per ogni tipu d'ambiente.
NOTA
A prova TCP_RR in netperf torna a latenza in un valore di transazzione / sec. Questu hè un numeru di andata e ritorno. A latenza unidirezionale pò esse calculata utilizendu l'equazioni seguenti:
Latenza (usec) = (1⁄2) / [Transazzioni/sec] * 1,000,000
3.1.1 iPerf2
Intel raccomanda iperf2 sopra iperf3 per a maiò parte di e situazioni di benchmarking per via di a facilità d'utilizazione è di supportu di più fili in una sola istanza di applicazione. Intel consiglia di correre cù l'opzione -P cù 2-4 fili per cunnessione 25G è circa 4-6 fili per cunnessione 40G.
- Per eseguisce u trafficu unidirezionale da u cliente à u servitore: cumanda di u servitore example: iperf2 -s
Cumandamentu di u cliente example: iperf2 -c -P - Per eseguisce u trafficu bidirezionale da u cliente à u servitore (è vice versa): Cumandante di u servitore example: iperf2 –s –p
Cumandamentu di u cliente exampLe:
iperf2 -c -p -P -–full-duplex OR
iperf2 -c -p -P – d
NOTA
Sia l'opzioni -full-duplex è -d in iperf2 permettenu à l'utilizatori di fà teste bidirezionali. Tuttavia, l'opzione -full-duplex si focalizeghja specificamente in a prova full duplex.
NOTA
Quandu teste iperf2 in parechji porti di u servitore, a bandiera -d pò esse aghjuntu à u cumandamentu di u servitore per eseguisce tutte e sessioni di u servitore in u fondu da a stessa finestra di terminal. A bandiera -d pò ancu esse usata quandu u cumandamentu di u servitore hè incrustatu in un for-loop in un script.
NOTA
Quandu eseguisce a prova di trasmissione di a rete cù un unicu flussu / filu (esample: P1), i processori AMD ùn ponu micca furnisce u throughput previstu, in particulare NIC di larghezza di banda più altu (se a velocità hè >= 25G di larghezza di banda). In u risultatu, l'applicazione pinning à core specifichi hè necessariu per ottene un rendimentu più altu. Vede Impostazioni di l'applicazione à a pagina 22.
3.1.2 iPerf3
Se iperf3 hè utilizatu, parechje istanze di l'applicazione sò necessarie per piglià in anticiputage di e file multi-threads, RSS, è hardware. Intel consiglia di eseguisce cù e sessioni di applicazione 2-4 per e cunnessione 25G è circa 4-6 sessioni per e cunnessione 40G. Ogni sessione deve specificà un valore unicu di u portu TCP utilizendu l'opzione -p.
- Per eseguisce u trafficu unidirezionale da u cliente à u servitore:
Cumandamentu di u servitore exampLe:
iperf3 -s -p
Cumandamentu di u cliente exampLe:
iperf3 -c -p - Per eseguisce u trafficu bidirezionale da u cliente à u servitore (è vice versa):
Cumandamentu di u servitore exampLe:
iperf3 –s –p
Cumandamentu di u cliente example: iperf3 -c -p -P –-bidir - Per inizià parechje istanze (fili) di iperf3, a ricunniscenza hè di utilizà un for-loop per mappe i fili à i porti TCP è eseguisce iperf3 in u sfondate usendu & per creà parechji prucessi in parallelu.
Cumandamentu di u servitore example, principià 4 fili: port=""; per i in {0..3}; do port=520$i; bash -c "iperf3 -s -p $port &"; fattu; Cumandamentu di u cliente example, principià 4 fili - Trasmette u portu di prova = ""; per i in {0..3}; do port=520$i; bash -c "iperf3 -c $serverIP -p $port &"; fattu; Cumandamentu di u cliente example, principià 4 fili - Riceve u portu di prova = ""; per i in {0..3}; do port=520$i; bash -c "iperf3 -R -c $serverIP -p $port &"; fattu; Per e cunnessione 40G, aumentate u for-loop per creà finu à 6 istanze / fili.
NOTA
Quandu eseguisce a prova di trasmissione di a rete cù un unicu flussu / filu (esample: P1), i prucessori AMD ùn ponu micca furnisce u throughput previstu, in particulare una larghezza di banda più alta
NIC (se a velocità hè >= 25G di larghezza di banda). In u risultatu, l'applicazione pinning à core specifichi hè necessariu per ottene un rendimentu più altu. Vede Impostazioni di l'applicazione à a pagina 22 è AMD EPYC à a pagina 26.
3.1.3 netperf
L'uttellu netperf hè una scelta forte per a prova di throughput è di latenza.
- A prova TCP_STREAM in netperf misura e capacità di throughput di u dispusitivu. Cumandamentu di u servitore example: netserver Command client example: netperf -t TCP_STREAM -l 30 -H
- A prova TCP_RR in netperf torna latenza in un valore di transazzione / secondu. Questu hè un numeru di andata e ritorno. Hè ricumandemu di utilizà l'opzione -T x,x, se x hè CPU locale à u dispusitivu. A latenza unidirezionale pò esse calculata aduprendu: Latenza (usec) = (1⁄2)/ [Transazzioni/sec] * 1,000,\ Cumanda di u servitore example: netserver
Cumandamentu di u cliente example: netperf -t TCP_RR -l 30 -H -T x, x - Per inizià parechje istanze (threads) di netperf, a ricunniscenza hè di utilizà un for-loop per mapà i fili à i porti TCP è eseguite netperf in u sfondate usendu & per creà parechji prucessi in parallelu.
Cumandamentu di u servitore example, principià 8 discussioni:
portu = ""; per i in {0..7}; do port=520$i; bash -c "netserver -L $serverIP -p $port &"; fattu;
Cumandamentu di u cliente example, principià 8 fili: port=""; per i in {0..7}; do port=520$i; bash -c "netperf -H $serverIP -p $port -t TCP_STREAM -l 30 &"; fattu;
3.2 Metodologia di Tuning
Focus nantu à un cambiamentu di sintonizazione à u mumentu per sapè quale impattu face ogni cambiamentu à a vostra prova. U più metudicu site in u prucessu di sintonizazione, u più faciule serà identificà è indirizzà e cause di i colli di bottiglia di rendiment.
Tuning i40e Settings Driver
4.1 Affinità IRQ
A cunfigurazione di l'affinità IRQ in modu chì l'interruzioni per e diverse file di rete sò affinizzate à diversi core di CPU pò avè un impattu enormu nantu à u rendiment, in particulare i testi di throughput multithread.
Per cunfigurà l'affinità IRQ, ferma l'irqbalance è dopu aduprate u script set_irq_affinity da u pacchettu fonte i40e o pin queues manualmente. Disattivate l'equilibriu IRQ di u spaziu di l'utilizatori per attivà a pinning di fila:
- systemctl disattivate irqbalance
- systemctl stop irqbalance
Utilizendu u script set_irq_affinity da u pacchettu fonte i40e (cunsigliatu): - Per utilizà tutti i core:
[path-to-i40epackage]/scripts/set_irq_affinity -X all ethX - Per utilizà solu core nantu à u socket NUMA locale: [path-to-i40epackage]/scripts/set_irq_affinity -X local ethX
- Pudete ancu selezziunate una gamma di core. Evite l'usu di cpu0 perchè esegue attività di timer. [path-to-i40epackage]/scripts/set_irq_affinity 1-2 ethX
NOTA
U script d'affinità permette a Trasmissione Packet Steering (XPS) cum'è parte di u prucessu di pinning quandu l'opzione -x hè specificata. Quandu XPS hè attivatu, Intel ricumanda di disattivà l'irqbalance, postu chì u bilanciatore di kernel cù XPS pò causà prestazioni imprevisible. U script di affinità disattiva XPS quandu l'opzione -X hè specifica. A disattivazione di XPS è l'attivazione di file simmetriche hè benefica per i carichi di travagliu induve u megliu rendimentu hè ottenutu quandu u trafficu Tx è Rx hè servitu nantu à a stessa coppia (s) di fila.
A cunfigurazione di file simmetriche in Linux implica a sintonizazione di i paràmetri di u driver di l'interfaccia di rete per attivà e file simmetriche di ricezione (Rx) è code di trasmissione simmetriche (Tx) per adattatori di rete supportati.
NOTA
- I file simmetrici sò una funzione avanzata di rete, è micca tutti l'adattatori di rete di a serie 700 o i cunduttori li supportanu.
- Assicuratevi di avè u supportu di driver è hardware necessariu prima di pruvà à cunfigurà file simmetriche.
Per cunfigurà file simmetriche, seguitate questi passi generali:
- Edite a cunfigurazione di l'interfaccia di a rete File: Aduprate un editore di testu (per esample, vi, nano, o gedit) per edità a cunfigurazione di l'interfaccia di a rete file. U file hè tipicamenti situatu sottu u /etc/sysconfig/network-scripts/ directory è hà un nome cum'è ifcfg-ethX, induve ethX hè u nome di a vostra interfaccia di rete.
- Aghjunghjite i Paràmetri di Coda Simmetrica. Aghjunghjite e seguenti linee à a cunfigurazione di l'interfaccia di rete file: ETHTOOL_OPTS=”rx-queues 8 tx-queues 8″
- Restart Service Network.
Dopu avè fattu i cambiamenti, riavvia u serviziu di rete per applicà a nova cunfigurazione. sudo systemctl riavvia a reta
Manualmente:
-
Truvate i prucessori attaccati à ogni node usendu: numactl -hardware lscpu
-
Truvate e maschere di bit per ognunu di i processori:
- Assumindu core 0-11 per u node 0: [1,2,4,8,10,20,40,80,100,200,400,800]
- Truvate l'IRQ assignati à u portu chì hè assignatu: grep ethX /proc/interrupts è nota i valori IRQ Per example, 181-192 per i 12 vettori caricati.
- Echo u valore di affinità SMP in l'entrata IRQ currispundente. Nota chì questu deve esse fattu per ogni entrata IRQ: echo 1 > /proc/irq/181/smp_affinity echo 2 > /proc/irq/182/smp_affinity echo 4 > /proc/irq/183/smp_affinity Mostra l'affinità IRQ:
- Per mostra l'affinità IRQ per tutti i core: /scripts/set_irq_affinity -s ethX
- Per vede solu i core nantu à u socket NUMA locale: /scripts/set_irq_affinity -s locale ethX
- Pudete ancu selezziunà una gamma di core: /scripts/set_irq_affinity -s 40-0-8,16 ethX
NOTA
U script set_irq_affinity supporta a bandiera -s in a versione di driver i40e 2.16.11 è più tardi.
4.2 Tx/Rx Queues
U numaru predeterminatu di fila attivatu per ogni portu Ethernet da u driver à l'inizializazione hè uguale à u numeru tutale di CPU dispunibuli in a piattaforma. Questu funziona bè per parechje piattaforme è cunfigurazioni di carichi di travagliu. In ogni casu, in e plataformi cù un altu numeru di core è / o una alta densità di portu Ethernet, sta cunfigurazione pò causà cuntinzione di risorse. Dunque, pò esse necessariu in certi casi di mudificà u predeterminatu per ogni portu in u sistema.
U numeru predeterminatu di file Tx / Rx pò varià secondu u mudellu specificu è a versione di u driver. U numaru di fila pò esse aghjustatu cù u cumandimu ethtool -L listatu quì sottu.
NOTA
In questi casi, Intel ricumanda di riduce u numeru di fila predeterminatu per ogni portu à micca più di u numeru di CPU dispunibili in u node NUMA locale à u portu di l'adattatore. In certi casi, quandu pruvate di equilibrà e risorse nantu à implementazioni di cunti di portu elevati, puderia esse necessariu di riduce ancu più stu numeru.
Per mudificà a cunfigurazione di a fila:
I seguenti example mette u portu à 32 file Tx/Rx: ethtool -L ethX combined 32
Example output:
ethtool -l ethX
Parametri di canali per ethX: Massimu predefinitu:
RX: 96
TX: 96
Autre : 1
Cumminatu: 96
Configurazione hardware attuale:
RX: 0
TX: 0
Autre : 1
Cumminatu: 32
4.3 Interrupt Moderation
A moderazione di l'interruzzione adattativa hè attivata per difettu, è hè pensata per furnisce un approcciu equilibratu trà l'utilizazione di CPU bassa è l'altu rendiment. Tuttavia, pudete pruvà à sintonizà i paràmetri di interruzzione manualmente per adattà à u vostru casu d'usu.
A gamma di 0-235 microsecondi furnisce un intervallu efficace di 4,310 à 250,000 interruzioni per seconda. U valore di rx-μsecs-high pò esse stabilitu indipindente da rx-μsecs è tx-μsecs in u stessu cumandamentu ethtool, è hè ancu indipendente da l'algoritmu di moderazione di interruzione adattativa. U hardware sottostante supporta a granularità in intervalli di 2 microsecondi, cusì i valori adiacenti puderanu risultatu in a stessa rata di interruzzione.
- Per disattivà a moderazione di l'interruzzione adattativa: ethtool -C ethX adaptive-rx off adaptive-tx off
- Per attivà a moderazione di interruzione adattativa: ethtool -C ethX adaptive-rx on adaptive-tx on
Un bonu postu per inizià a sintonizazione generale hè 84 μs, o ~ 12000 interruzioni / s. Se vedete chì i contatori rx_dropped sò in esecuzione durante u trafficu (usendu ethtool -S ethX) allora probabilmente avete troppu lento di un CPU, micca abbastanza buffer da a dimensione di l'anellu di l'adattatore (ethtool -G) per mantene i pacchetti per 84 μs o à bassa di una freccia di interruzzione.
- Per stabilisce a moderazione di l'interruzzione à una velocità di interruzzione fissa di 84 μs trà interruzioni (12000 interruzioni / s): ethtool -C ethX adaptive-rx off adaptive-tx off rx-usecs 84 tx-usecs 84 U prossimu valore da pruvà, se ùn site micca massimu di l'utilizazione di CPU, hè 62 μs. Questu usa più CPU, ma serve buffer più veloce, è richiede menu descrittori (taglia di l'anellu, ethtool -G).
- Per stabilisce a moderazione di l'interruzzione à a rata di interruzzione fissa di 62 usecs trà interruzioni (16000 interruzioni / s). ethtool -C ethX adaptive-rx off adaptive-tx off rx-usecs 62 tx-usecs 62
Se i contatori rx_dropped aumentanu durante u trafficu (usendu ethtool -S ethX), probabilmente avete troppu lento di una CPU, micca abbastanza buffer da a dimensione di l'anellu di l'adattatore (ethtool -G), o troppu bassu di una rata di interruzzione. Se ùn site micca u massimu di l'utilizazione di CPU, pudete aumentà a freccia di interruzzione diminuendu u valore ITR. Questu usa più CPU, ma i servizii buffers più veloce, è richiede menu descrittori (taglia di l'anellu, ethtool -G).
Se u vostru CPU hè à 100%, ùn hè micca cunsigliatu per aumentà a tarifa di interruzzione. In certe circustanze, cum'è una carica di travagliu di CPU, pudete vulete aumentà u valore μs per attivà più tempu di CPU per altre applicazioni.
Sè avete bisognu di prestazione di bassa latenza è / o avete assai CPU per dedicà à u processamentu di a rete, pudete disattivà a moderazione di l'interruzzione interamente, chì permette à l'interruzioni di sparà u più prestu pussibule. - Per disattivà l'interruzzione di moderazione ethtool -C ethX adaptive-rx off adaptive-tx off rx-usecs 0 tx-usecs 0
NOTA
Quandu si corre cù a moderazione di interruzzione disattivata, a rata di interruzzione in ogni fila pò esse assai alta. Cunsiderate l'inclusione di u paràmetru rx-usec-high per stabilisce un limitu superiore in a tarifa di interruzzione. U cumandimu seguitu disattiva a moderazione di l'interruzzione adattativa è permette un massimu di 5 microsecondi prima di indicà una ricezione o trasmissione hè stata cumpleta. Invece di risultatu in quant'è 200,000 interruzioni per seconda, limita l'interruzioni totali per seconda à 50,000 via u paràmetru rx-usec-high. # ethtool -C ethX adaptive-rx off adaptive-tx off rx-usecs-high 20 rx-usecs 5 txusecs 5 Pruvate à aghjustà u timer coalescente di trasmissione / ricezione / alta priorità più altu (80/100/150/200) o più bassu (25/20/10) o più bassu (5/XNUMX/XNUMX) per truvà u valore ottimale per u travagliu.
4.4 Size Ring
Se vi vede i contatori rx_dropped in ethtool -S ethX (rx_dropped, rx_dropped.nic), o sospettate a pressione di cache cù parechje file attive, pudete pruvà à aghjustà a dimensione di l'anellu da u valore predeterminatu. U valore predeterminatu hè 512, u massimu hè 4096.
- Per verificà i valori attuali: ethtool -g ethX
Se si sospetta chì a mancanza di buffering hè causatu gocce à u ritmu di interruzzione attuale, pudete pruvà u massimu prima, dopu u minimu, poi cuntinuà in una ricerca binaria finu à vede u rendiment ottimali.
Se a pressione di cache hè sospettata (parechje file attive), a riduzione di i buffer da predefinitu pò aiutà à l'Intel ® Data Direct I/O (Intel ® DDIO) à uperà più efficacemente. Intel ricumanda di pruvà 128 o 256 per fila, essendu cuscenti chì un aumentu di a rata di interruzzione via ethtool -C puderia esse necessariu per evità un aumentu di rx_dropped. - Per stabilisce a dimensione di l'anellu à u valore fissu: ethtool -G eth12 rx 256 tx 256
NOTA
Per riparà e gocce di pacchettu Rx truvate cù ethtool -S ethX|grep drop, cunzidira l'aumentu di a dimensione di l'anellu à 4096. Pruvate per truvà u megliu paràmetru per a carica di travagliu, ma attente à l'usu eccessivu di memoria cù valori più altu.
4.5 Flow Control
U cuntrollu di u flussu di u Layer 2 pò influenzà notevolmente u rendiment TCP è hè cunsigliatu per esse disattivatu per a maiò parte di i carichi di travagliu. Un'eccezzioni potenziale hè u trafficu bursty induve e raffiche ùn sò micca longu in durata.
U cuntrollu di flussu hè disattivatu per difettu.
- Per attivà u cuntrollu di flussu: ethtool -A ethX rx on tx on
- Per disattivà u cuntrollu di flussu: ethtool -A ethX rx off tx off
NOTA
Duvete avè un cumpagnu di ligame capaci di cuntrollu di flussu per attivà successu u cuntrollu di flussu.
4.6 Jumbo Frames
Quandu l'ambiente di trafficu previstu hè custituitu da grandi blocchi di dati chì sò trasferiti, puderia esse benefica per attivà a funzione di quadru jumbo. U supportu Jumbo Frames hè attivatu cambiendu l'Unità di Trasmissione Massima (MTU) à un valore più grande di u valore predeterminatu di 1500. Questu permette à u dispusitivu di trasfiriri dati in pacchetti più grande in l'ambiente di a reta. Questa paràmetra puderia migliurà u throughput è riduce l'utilizazione di CPU per grandi carichi di travagliu I/O. Tuttavia, puderia avè un impattu in picculi pacchetti o carichi di travagliu sensibili à a latenza.
NOTA
I frames Jumbo o l'impostazione MTU più grande deve esse cunfigurati bè in u vostru ambiente di rete.
Aduprate u cumandimu ifconfig per aumentà a dimensione MTU. Per esample, entre i seguenti, induve hè u numeru di l'interfaccia: ifconfig mtu 9000 up
In alternativa, pudete aduprà u cumandimu ip cum'è seguente: ip link set mtu 9000 dev ip link set up dev
Tuning Platform (i40e Non-Specific)
5.1 Impostazioni BIOS
- Abilita Intel® VT-d per i carichi di travagliu di virtualizazione.
- Hyper-threading (processori lògichi) pò influenzà u rendiment. Sperimenta cun ellu on o off per a vostra carica di travagliu.
- Intel® Turbo Boost permette à i core di CPU di operare à una frequenza più altu ch'è a frequenza di basa di u CPU. L'attivazione di Intel® Turbo Boost pò migliurà a prestazione per parechje carichi di travagliu, ma cunsuma più energia per mantene i core à una frequenza più alta. Pruvate cù Turbo Boost off/on per a vostra carica di travagliu.
NOTA
E frequenze turbo ùn sò micca garantite se a piattaforma sperimenta una alta utilizazione generale di CPU. E frequenze turbo core più alte sò ridotte cum'è l'utilizazione generale di CPU aumenta.
5.2 Gestione di l'energia
A gestione di l'energia pò impactà u rendiment, in particulare in carichi di travagliu di bassa latenza. Se u rendiment hè una priorità più altu ch'è a diminuzione di u cunsumu di energia, Intel ricumanda di sperimentà cù limitazione di l'effetti di a gestione di l'energia. Ci hè parechje manere diverse per limità a gestione di l'energia, attraversu l'arnesi di u sistema operatore, i paràmetri di u BIOS è i paràmetri di boot di u kernel. Sceglite u megliu metudu è livellu per adattà à u vostru ambiente.
5.2.1 C-State Control
A limitazione di l'ingressu C-state à CO o C1 migliurà u rendiment è aumenta l'utilizazione di l'energia.
A disattivazione di l'entrata di u statu di CPU Package C6 pò migliurà u rendiment di a rete. Tuttavia, questu aumenta l'usu di energia.
E seguenti opzioni sò dispunibili:
- Cuntrolla dinamicamente l'entrata C-state:
Apertu
/dev/cpu_dma_latency è scrivite a latenza massima permessa.
NOTA
Ci hè un picculu prugramma chjamatu cpudmalatency.c chì pò esse scaricatu da a cumunità open source, compilatu, è eseguite da a linea di cumanda per fà esattamente questu.
I seguenti example permette cinque μs di tempu di veglia, è cusì permette l'entrata C1: cpudmalatency 5 &
- Limite u C-state massimu in i paràmetri di boot di u kernel:
Per CPU Intel: intel_idle.max_cstates=1
Per CPU non-Intel: processor.max_cstates=1 - Aduprate u cumandamentu cpupower per verificà è disattivà u statu di CPU C6: Verificate: cpupower monitor o cpupower idle-info
Disable C6: cpupower idle-set -d3 or
Disable C-States: cpupower idle-set -D0
Note:
- Disattivate C-states nantu à u CPU se u servitore hà Intel® 4th Gen Intel® Xeon® Scalable Processor(s). Quandu l'Hyper Threading hè attivatu o disattivatu, a disattivazione di stati inattivi (-D0) impedisce à i core di entre in stati di bassa putenza durante i periodi inattivi è riduce a latenza per a CPU per a transizione trà stati inattivi è attivi.
- A gestione di l'energia di u Processore Intel® Xeon® Scalable Intel® 4th Gen hè estremamente aggressiva. Per evità i nuclei di entre in stati di bassa putenza, pruvate à riduce u nùmeru di nuclei in usu per mantenenu svegliu più longu (ethtool -L cumminata ). Inoltre, legate interruzioni à nuclei specifichi utilizendu affinità irq set (a maiò spessu cù -x locale o lista di core di CPU), è assicuratevi chì a carica di travagliu corre nantu à quelli stessi core cù taskset o numactl. Questu migliurà u rendiment mantenendu i core attivi è ottimizendu a gestione di l'interruzzione.
Abilita C6:
cpupower idle-set -d3
Abilita C-States:
cpupower idle-set -E
- Un altru mètudu hè di utilizà l'uttellu sintonizatu (cumpresu cù parechje distribuzioni Linux) per stabilisce un rendimentu profile. Questi profiles mudificà parechji paràmetri di u SO chì ponu influenzà u rendiment in parechje applicazioni. Hè statu trovu chì u reta-throughput profile furnisce migliurà a maiò parte di i carichi di travagliu.
Verificate:
sintonizatu-adm attivu
Set:
sintonizatu-adm profile flussu di rete
NOTA
U serviziu sintonizatu deve esse in esecuzione per i cumandamenti sopra. Per verificà / riavvia, sintonizatu: systemctl status tuned systemctl restart tuned
Pudete ancu disattivà qualsiasi entrata C-state aghjunghjendu i seguenti à a linea di boot di u kernel:
idle = sondaghju - Limite u C-state attraversu i paràmetri di gestione di l'energia di u BIOS di u sistema, chì puderia avè un rendimentu profile dispunibule.
Strumenti cum'è turbostat o x86_energy_perf_policy ponu esse utilizati per verificà o stabilisce i paràmetri di gestione di l'energia.
5.2.2 Gestione di l'energia PCIe
Active-State Power Management (ASPM) permette un statu di putenza più bassu per i ligami PCIe quandu ùn sò micca in usu attivu. Questu pò causà una latenza più alta in i dispositi di rete PCIe, cusì Intel ricumanda di disattivà ASPM per carichi di travagliu sensibili à a latenza. Disattivate l'ASPM aghjunghjendu i seguenti à a linea di boot di u kernel: pcie_aspm=off
5.2.3 Scaling di Frequency CPU
A scala di frequenza di CPU (o scala di velocità di CPU) hè una tecnica di gestione di l'energia di Linux in quale a velocità di u clock di u sistema hè aghjustata in u volu per risparmià energia è calore. Cum'è i stati C, questu pò causà latenza indesiderata nantu à e cunnessione di rete.
L'uttellu cpupower pò ancu esse usatu per verificà è mudificà i predefiniti è i limiti di u rendiment di CPU:
- Verificate: cpupower monitor o
- Set CPU in modalità di prestazione: cpupower frequency-set -g performance
NOTA
E mudificazioni à i limiti di frequenza di CPU pò avè un impattu à parechje carichi di travagliu è puderanu disattivà altre funzioni, cum'è u modu turbo CPU.
Per disattivà a scala di frequenza di CPU, disattiveghjanu u serviziu di putenza CPU cù i seguenti cumandamenti:
systemctl ferma cpupower.service
systemctl disattivate cpupower.service
5.2.4 Guida supplementu di gestione di l'energia
Detaglii supplementari sò furniti in questu altu livelluview di parechje di e funzioni di gestione di l'energia in i processori scalabili Intel® Xeon® di 3a generazione, è ancu una guida nantu à cumu queste funzioni ponu esse integrate à livellu di piattaforma: https://networkbuilders.intel.com/solutionslibrary/power-management-technologyoverview-technology-guide
5.3 Intel® Turbo Boost
Intel® Turbo Boost rende u processore più veloce quandu hè necessariu, ma pò cunsumà energia supplementaria. A disattivazione di Turbo Boost mantene u processore à una velocità stabile, dendu un livellu di rendiment coherente per carichi di travagliu specifichi.
5.4 Firewalls
I firewall ponu impactà u rendiment, in particulare u rendiment di latenza.
Disattiva iptables / firewalld se ùn hè micca necessariu.
5.5 Parametri di l'applicazione
Spessu un filu unicu (chì currisponde à una sola fila di rete) ùn hè micca abbastanza per ottene u massimu di larghezza di banda. Alcune architetture di piattaforma, cum'è AMD, tendenu à abbandunà più pacchetti Rx cun un solu filu cumparatu cù e plataforme cù processori basati in Intel.
Cunsiderate l'usu di strumenti cum'è taskset o numactl per pinnà l'applicazioni à u node NUMA o core CPU locale à u dispusitivu di rete. Per certi carichi di travagliu, cum'è l'I/O di almacenamento, u muvimentu di l'applicazione à un nodu non-lucale furnisce benefiziu.
Pruvate cù l'aumentu di u numeru di fili utilizati da a vostra applicazione se pussibule.
Versione 5.6 Kernel
A maiò parte di i kernel in-box muderni sò raghjone bè ottimizzati per u rendiment, ma, secondu u vostru casu d'usu, l'aghjurnà u kernel puderia furnisce un rendimentu migliuratu. Scaricatu a fonte permette ancu di attivà / disattivà certe funzioni prima di custruisce u kernel.
5.7 Configurazione di u Sistema Operativu / Kernel
Cunsultate e guide di sintonizazione di u sistema operatore, cum'è a Red Hat Enterprise Linux Network Performance Tuning Guide, per più insight nantu à l'accordu generale di u sistema operatore.
Certi paràmetri cumuni per sintonizà sò listati in a tavula seguente. Nota chì questi sò solu punti di partenza suggeriti, è cambià da i valori predeterminati puderia aumentà e risorse aduprate in u sistema. Ancu se l'aumentu di i valori pò aiutà à migliurà u rendiment, hè necessariu di sperimentà diversi valori per determinà ciò chì funziona megliu per un sistema, carica di travagliu è tipu di trafficu.
I paràmetri di u kernel sò configurabili cù l'utilità sysctl in Linux cum'è indicatu quì sottu.
À view i valori predeterminati per rmem è wmem in u sistema:
sysctl net.core.rmem_default
sysctl net.core.wmem_default
Pone i valori à max (16 MB):
sysctl -w net.core.rmem_max=16777216
sysctl -w net.core.wmem_max=16777216
I socket buffer sizes, cunnisciuti ancu cum'è buffer di ricezione (rmem) è buffer di trasmissione (wmem), sò paràmetri di u sistema chì specificanu a quantità di memoria riservata per u trafficu di a rete in entrata è in uscita.
L'esecuzione di sysctl senza l'argumentu -w elenca u paràmetru cù u so paràmetru attuale.
Stack Setting | Descrizzione |
net.core.rmem_default | Dimensione predefinita di a finestra di ricezione |
net.core.wmem_default | Dimensione di a finestra di trasmissione predefinita |
net.core.rmem_max | Dimensione massima di a finestra di ricezione |
net.core.wmem_max | Dimensione massima di a finestra di trasmissione |
net.core.optmem_max | Buffer di memoria d'opzione massima |
net.core.netdev_max_backlog | Backlog di pacchetti micca processati prima chì u kernel cumencia à caduta |
net.ipv4.tcp_rmem | Riservatore di memoria per i buffer di lettura TCP |
net.ipv4.tcp_wmem | Riservatore di memoria per i buffer di mandatu TCP |
U kernel, a pila di rete, u gestore di memoria, a velocità di CPU è i paràmetri di gestione di l'energia ponu avè un grande impattu nantu à u rendiment di a rete. Una ricunniscenza cumuni hè di applicà à u throughput di a rete profile usendu u cumandamentu sintonizatu. Questu mudifica uni pochi paràmetri di u SO per furnisce preferenza à l'applicazioni di rete.
Verificate:
sintonizatu-adm attivu
Set:
sintonizatu-adm profile flussu di rete
5.8 Backlog di Dispositivi Rete
Questa funzione aiuta à migliurà u rendiment di a rete gestionendu u trafficu entrante in modu efficace, riducendu a perdita di pacchetti, diminuendu a latenza è aumentendu u throughput. Questu porta à una sperienza d'utilizatore megliu è una risposta di u sistema più veloce.
Per automaticamente, hè attivatu in a maiò parte di i sistemi operativi Linux. Per verificà u valore predeterminatu:
sysctl net.core.netdev_max_backlog
U valore massimu per netdev_max_backlog pò varià secondu fatturi cum'è a versione di u kernel, u hardware, a memoria è a carica di travagliu. In parechji casi, 8192 hè vistu cum'è un bonu valore. sysctl -w net.core.netdev_max_backlog=8192
5.9 Configurazioni è Tuning specifichi di a piattaforma
5.9.1 Processori scalabili Intel® Xeon® di quarta generazione
A gestione di l'energia di u processore Intel® Xeon® Scalable Intel® 4th Generation hè estremamente aggressivu cumparatu cù i processori Scalable Intel® Xeon® di 3ª Generazione. Per evità i nuclei di entre in stati di bassa putenza, pruvate à riduce u nùmeru di nuclei in usu per mantenenu svegliu più longu.
Configurazione di Bios cunsigliata per u più altu rendiment
- Abilitazione / disattivazione di l'hyper-threading (basatu nantu à u requisitu di u travagliu di u travagliu è l'ugettivi di rendiment) nantu à u CPU.
- Pone u sistema profile à Performance per u massimu rendiment.
NOTA
Questu risultatu in un cunsumu d'energia più altu - Pone a gestione di l'energia di u CPU à u Massimu Rendimentu per prioritizà u massimu rendimentu di CPU nantu à l'efficienza energetica.
- Habilita Turbo Boost. A disattivazione di Turbo Boost in i paràmetri di u BIOS di u sistema generalmente impedisce à u CPU di aumentà dinamicamente a so velocità di clock oltre a so frequenza di basa.
- NOTA
A disattivazione di Turbo Boost pò esse adattatu per certi casi d'usu induve a prestazione coherente, l'efficienza energetica o a gestione termale sò priorità nantu à u massimu rendiment. - Disattivate a funzione di Virtualizzazione I/O Single Root (SR-IOV), se u sistema ùn utilizeghja micca e tecnulugia di virtualizazione.
- Disattivate i C-states per urdinà à u CPU per stà attivu è impediscenu di entre in stati inattivi più profondi.
- Disable C1E, per assicurà chì u CPU resta attivu è ùn entre micca in u statu inattivu C1E.
- Pone a frequenza di uncore à u massimu per urdinà à u sistema per operare à a più alta frequenza dispunibule.
- Nant'à e piattaforme Dell, stabilisce l'emulazione di core Multiple APIC Description Table (MADT) in Linear (o Round-Robin secondu u BIOS) per furnisce una mappatura chjara è prevedibile di core CPU.
Sintonizzazioni di u Livellu di OS cunsigliatu per un rendimentu ottimizatu
- Pone u guvernatore di scala di frequenza di CPU à u rendiment. cpupower frequency-set -g performance cpupower frequency-info
- Disattivate C-States. cpupower idle-set -D0
- Set core Rx (rmem) è Tx (wmem) buffers à u valore massimu. sysctl -w net.core.rmem_max=16777216 sysctl -w net.core.wmem_max=16777216
- Stabilite u backlog di u dispositivu di a rete. sysctl -w net.core.netdev_max_backlog=8192
- Set tuned profile (dipendente di a carica di travagliu per u throughput / latenza).
sintonizatu-adm profile flussu di rete
Sintonizzazioni di Livellu di l'adattatore cunsigliate per un rendimentu ottimizatu
- Limite u numeru di file à aduprà per u trafficu di l'applicazioni. Aduprate u minimu numeru di file necessarie per mantene i core di CPU assuciati attivi per impediscenu di entre in stati inattivi più profondi (aghjustate per a carica di travagliu): ethtool -L cumminatu 32
- Stabilite i tassi di moderazione di interruzzione. ettool -C adaptive-rx off adaptive-tx off rx-usecs-high 50 rx-usecs 50 tx-usecs 50
Pruvate à aghjustà u timer di trasmissione / ricezione / coalescing di alta priorità più altu (80/100/150/200) o più bassu (25/20/10/5) per truvà u valore ottimale per a carica di travagliu. - Definite e dimensioni di l'anelli Rx/Tx. ettool -G rx 4096 tx 4096
NOTA
Se vede u pacchettu Rx cade cù ethtool -S| grep drop, pruvate à riduce a dimensione di l'anellu à <4096. Pruvate di truvà u valore ottimale per a carica di travagliu induve i pacchetti ùn sò micca abbandunati. - Imposta l'affinità IRQ. Aduprate cores locali à NIC, o core mapping specifichi (induve # cores hè uguale à u numeru di fila stabilitu in 1 à a pagina 26. systemctl stop irqbalance set_irq_affinity -X local OR set_irq_affinity -X
5.9.2 AMD EPYC
I processori AMD EPYC sò CPU putenti fatti per servitori è centri di dati, custruiti annantu à l'architettura Zen di AMD. I paràmetri sottu sò da a serie EPYC di 4a generazione di AMD.
Configurazione BIOS cunsigliata per u più altu rendiment
- Attivate u modu persunalizatu per permette à l'utilizatori di aghjustà u rendiment di CPU, u cunsumu di energia è altre paràmetri. Questu aiuta à fine-tuning u sistema per u megliu equilibriu trà u rendiment è l'efficienza energetica.
- Abilita l'aumentu di u rendiment core per permette à a CPU di aumentà automaticamente a so velocità per trattà e attività più intensive, migliurà u rendiment generale.
- Disattivate u cuntrollu di u C-state globale, per impedisce chì u CPU entre in stati più profondi di risparmiu di energia cunnisciuti cum'è C-states, chì ponu mantene a reattività.
NOTA
A disattivazione di i C-states pò causà un cunsumu di energia supplementu è aumentà a temperatura termica. Monitorate i dui per a carica di travagliu. - Abilita / disattiveghja Simultaneous Multithreading (SMT) in u CPU, basatu annantu à u requisitu di u travagliu di u travagliu è i scopi di rendiment. SMT hè equivalente à Hyper Threading in CPU Intel.
NOTA
Per prestazioni ottimizzate, fate riferimentu à Tuning i40e Driver Settings à pagina 13 è Platform Tuning (i40e Non-Specific) à pagina 19 per l'accordu di u nivellu di l'adattatore è u SO consigliatu.
Adattatore Bonding
U Bonding Linux hè una funzione putente chì pò migliurà significativamente u rendiment di a rete, a redundanza è a tolleranza à i difetti in l'ambienti di u servitore. In ogni casu, hè impurtante nutà chì esige hardware di rete cumpatibile è cunfigurazione propria nantu à u servitore è u switch per funziunà bè.
U driver di bonding in Linux permette di aggregate parechje interfacce di rete fisiche in una interfaccia ligata. Questa interfaccia ligata appare cum'è una sola interfaccia di rete virtuale à u sistema operatore è l'applicazioni.
NOTA
U ligame hè una interfaccia logica, cusì ùn hè micca pussibule di stabilisce l'affinità di CPU direttamente nantu à l'interfaccia di ligame (per es.ample, bond0). Questu hè, ùn hà micca un cuntrollu direttu nantu à a gestione di l'interruzzione o l'affinità CPU. L'affinità di CPU deve esse cunfigurata per l'interfacce sottostanti chì sò parti di u ligame.
Bonding furnisce parechji modi di operazioni, ognunu cù e so caratteristiche.
Modu | Tipu |
0 | Round Robin |
1 | Backup attivu |
2 | XOR |
3 | Broadcast |
4 | LACP |
5 | Trasmettite l'equilibriu di carica |
6 | Bilanciu di Carica Adattiva |
Ci sò diversi metudi per creà un ligame in Linux. Unu di i metudi più cumuni hè di utilizà a cunfigurazione di a rete files (per esample, /etc/network/interfaces o /etc/sysconfig/network-scripts/ifcfg-bondX).
Configurazione Utilizendu a Configurazione di a Rete Files
I seguenti passi creanu ligami attraversu a cunfigurazione di a rete files.
- Selezziunate dui o più porti NIC per u ligame (per esample, ethX è ethY)
- Aprite a Configurazione NIC Files in /etc/sysconfig/network-scripts/ per l'interfaccia NIC necessaria (per es.ample, vi ifcfg-ethX è vi ifcfg-ethY) è aghjunghje u testu seguente:
MASTER=bondN [Nota: N hè un interu per menziunà u numeru di ligame.] SLAVE=iè - Crea un script di rete di legami file usendu vi /etc/sysconfig/networkscripts/ifcfg-bondN è inserite u testu seguente:
DEVICE = bondN [Nota: N hè un interu per menziunà u numeru di ligame] ONBOOT = sì USERCTL = no BOOTPROTO = dhcp (o) nimu
IPADDR = 200.20.2.4 [necessariu se BOOTPROTO = nimu] NETMASK = 255.255.255.0 [necessariu se BOOTPROTO = nimu] NETWORK = 200.20.2.0 [obligatoriu se BOOTPROTO = nimu] BROADCAST = 200.20.2.255. BOOTPROTO=none] BONDING_OPTS=”mode=1 miimon=100″
NOTA
U modu pò esse qualsiasi interu da 0 à 6 basatu nantu à u requisitu. - Riavvia i servizii di rete utilizendu u riavviu di a rete di serviziu o systemctl restart NetworkManager.service
Risoluzione di prublemi di rendiment
7.1 Utilizazione CPU
Verificate l'utilizazione di CPU per core mentre a carica di travagliu hè in esecuzione.
Nota chì l'utilizazione per core hè più pertinente à u rendiment cà l'utilizazione generale di CPU, postu chì furnisce una idea di l'utilizazione di CPU per fila di rete. Sì avete solu uni pochi di fili chì currenu u trafficu di a rete, pudete avè solu uni pochi di core chì sò utilizati. Tuttavia, se quelli nuclei sò à 100%, allora u vostru throughput di a rete hè prubabilmente limitatu da l'utilizazione di CPU è hè ora di fà e seguenti:
- Sintonizza a moderazione IRQ / a dimensione di l'anellu cum'è detallatu in Interrupt Moderation.
- Aumentà u numeru di fili di l'applicazione per sparghje a carica di CPU in più core. Se tutti i nuclei funzionanu à 100% allora a vostra applicazione puderia esse ligata à CPU invece di ligata à a rete.
Strumenti cumunimenti dispunibili:
- cima
- Press 1 per espansione a lista di CPU è verificate quale sò aduprati.
- Avvisu u livellu di usu.
- Avvisu chì prucessi sò listati cum'è più attivi (in cima di a lista). - mpstat
I seguenti exampa linea di cumanda hè stata pruvata in Red Hat Enterprise Linux 7.x.
Mostra l'utilizazione di CPU per core (truvendu u percentu tutale inattivu è sottraendu da 100) è mette in risaltu i valori sopra 80% in rossu. mpstat -P TUTTI 1 1 | grep -v Media | coda -n +5 | testa -n -1 | awk '{ stampa (100-$ 13)}' | egrep -color=sempre '[^\.][8-9][0-9][\.]?.*|^[8-9][0-9][\.]?.*| 100|' | culonna - perf top Cercate induve i ciculi sò spesi.
7.2 i40e Counters
U driver i40e furnisce una longa lista di cuntatori per u debug di l'interfaccia è u monitoraghju attraversu u cumandimu ethtool -S ethX. Pò esse utile per guardà l'output mentre una carica di travagliu hè in esecuzione è / o paragunate i valori di u contatore prima è dopu à una carica di travagliu.
- Per uttene un dump cumpletu di i contatori i40e: ethtool -S ethX
- Per guardà solu cuntatori chì ùn sò micca zero: watch -d (ethtool -S ethX) | egrep -v :\ 0 | culonna
Alcune cose da circà: - rx_dropped significa chì u CPU ùn serve micca i buffer abbastanza veloce.
- port.rx_dropped significa chì qualcosa ùn hè micca abbastanza veloce in u slot / memoria / sistema.
7.3 Contatori di rete
Verificate netstat -s prima / dopu una corsa di travagliu.
Netstat raccoglie l'infurmazioni di a rete da tutti i dispositi di rete in u sistema. Per quessa, i risultati puderanu esse influenzati da e rete diverse da a rete in prova. L'output da netstat -s pò esse un bon indicatore di prublemi di rendiment in u sistema operatore Linux o kernel. Cunsultate e guide di sintonizazione di u sistema operatore, cum'è a Red Hat Enterprise Linux Network Performance Tuning Guide, per più insight nantu à l'accordu generale di u sistema operatore.
7.4 Logs di u Sistema
Verificate i logs di u sistema per errori è avvisi (/var/log/messages, dmesg).
7.5 Intel svr-info Tool
Intel furnisce un strumentu svr-info (vede https://github.com/intel/svr-info) per Linux chì cattura dettagli hardware è software pertinenti da un servitore. L'output di svr-info pò esse estremamente utile per identificà i colli di bottiglia di u sistema o paràmetri / sintonizzazioni chì ùn sò micca ottimizzati per a carica di travagliu. Quandu apre un casu di supportu cù Intel per prublemi di prestazione in relazione à Ethernet, assicuratevi di include l'output svr-info (testu file) per ogni servitore Linux in a cunfigurazione di prova.
- Scaricate è installate svr-info:
wget -qO- https://github.com/intel/svr-info/releases/latest/download/svrinfo.tgz| tar xvz cd svr-info
./svr-info
> hostname.txt - Raccoglie l'output:
./svr-info > hostname.txt - Attaccà un testu (.txt) file per ogni servitore à u vostru casu di supportu Intel per l'analisi.
Raccomandazioni per Scenarii di Rendimentu Cumunu
8.1 Trasferimentu IP
- Aghjurnate u kernel.
Certi recenti kernels in-distro anu degradatu u rendiment di routing per via di i cambiamenti di u kernel in u codice di routing cuminciendu cù a rimuzione di a cache di routing per via di sicurità. I kernels recenti fora di distro duveranu avè patch chì allevianu l'impattu di u rendiment di sti cambiamenti è puderanu furnisce un rendimentu migliuratu. - Disattiva l'iper-threading (core logici).
- Edite i paràmetri di boot di u kernel.
- Forza iommu off (intel_iommu = off o iommu = off) da a linea di boot di u kernel, salvu micca necessariu per a virtualizazione
- Disattiva a gestione di l'energia: processor.max_cstates=1 idle=poll pcie_aspm=off - Limite u numeru di file per esse uguali à u numeru di core nantu à u socket locale (12 in questu ex.ample). ethtool -L ethX cumminatu 12
- Pin interrompe solu à u socket locale. set_irq_affinity -X local ethX OR set_irq_affinity -X local ethX
NOTA
-X o -x pò esse usatu secondu a carica di travagliu. - Cambia a dimensione di l'anellu Tx è Rx cum'è necessariu. Un valore più grande piglia più risorse, ma pò furnisce tassi di spedizione megliu. ethtool -G ethX rx 4096 tx 4096
- Disattivà GRO durante u routing.
A causa di un prublema di kernel cunnisciutu, GRO deve esse disattivatu quandu u routing / forwarding. ethtool -K ethX gro off induve ethX hè l'interfaccia Ethernet da mudificà. - Disattivate a moderazione di l'interrupzione adattativa è stabilisce un valore staticu. ethtool -C ethX adaptive-rx off adaptive-tx off ethtool -C ethX rx-usecs 64 tx-usecs 64
NOTA
Sicondu u tipu di processore è a carica di travagliu, i paràmetri di coalescenza per RX è TX ponu esse aghjustati per un rendimentu migliuratu (o menu perdita di frame).
- Disattivà u firewall. sudo systemctl disattiva firewalld sudo systemctl ferma firewalld
- Habilita l'invio IP. sysctl -w net.ipv4.ip_forward=1
- Configurate i valori massimi per i socket buffer sizes di riceve è mandà. sysctl -w net.core.rmem_max=16777216 sysctl -w net.core.wmem_max=16777216
NOTA
Sicondu a carica di travagliu o esigenza, sti valori ponu esse cambiati da u predeterminatu.
8.2 Latenza bassa
- Disattiva iper-threading (core logici).
- Assicuratevi chì u dispositivu di a rete hè lucale à numa core 0.
- Pin u benchmark à core 0 usendu taskset -c 0.
- Disattiva irqbalance usendu systemctl stop irqbalance o systemctl disable irqbalance
- Eseguite u script di affinità per sparghje in core. Pruvate o lucale o tutti.
- Disattiva a moderazione di l'interruzzione. ethtool -C ethX rx-usecs 0 tx-usecs 0 adaptive-rx off adaptive-tx off rxusecs- high 0
- Limite u numeru di file per esse uguali à u numeru di core nantu à u socket locale (32 in questu example). ethtool -L ethX cumminatu 32
- Pin interrompe solu à u socket locale (script imballatu cù a fonte di driver i40e). set_irq_affinity -X locale ethX
- Aduprate un benchmark stabilitu cum'è netperf -t TCP_RR, netperf -t UDP_RR, o NetPipe. netperf -t TCP_RR o netperf -t UDP_RR
- Pin benchmark à un core unicu in u node NUMA lucale. taskset -c
Serie Intel ® Ethernet 700
Linux Performance Tuning Guide
dicembre 2024
Doc. No.: 334019, Rev.: 1.2
Documenti / Risorse
![]() |
Sintonizzazione di prestazioni Linux Intel Ethernet serie 700 [pdfGuida di l'utente 334019, Ethernet 700 Series Linux Performance Tuning, Ethernet 700 Series, Linux Performance Tuning, Tuning Performance, Tuning |