Sèrie Intel ® Ethernet 700
Guia d'ajust del rendiment de Linux
NEX Cloud Networking Group (NCNG)
Rev. 1.2
desembre 2024
Historial de revisions
Revisió | Data | Comentaris |
1.2 | desembre 2024 | · S'ha afegit una guia addicional de gestió d'energia. · S'ha afegit Intel* Turbo Boost. · S'ha afegit el registre de dispositius de xarxa. · S'han afegit configuracions i afinació específiques de la plataforma. · S'han afegit processadors escalables Intel* %eon* de 4a generació. · S'ha afegit AMD EPYC. · Actualització de la comprovació de les capacitats del maquinari del sistema. · Actualitzat iPerf2. · Actualitzat iPerf3. · Cues Tx/Rx actualitzades. · Moderació d'interrupcions actualitzada. · Mida de l'anell actualitzada. · Ajust de plataforma actualitzat (i40e no específic). · Configuració de la BIOS actualitzada. · Actualitzat C-State Control. · Escalat de freqüència de CPU actualitzat. · Configuració de l'aplicació actualitzada. · Configuració actualitzada del sistema operatiu/nucli. · Reenviament IP actualitzat. · Baixa latència actualitzada. |
Agost 2023 | Els canvis en aquest document inclouen: · S'han afegit referències relacionades. · S'ha afegit Assegureu-vos que el paquet DDP es carregui correctament. · S'ha afegit iPerf2. · S'ha afegit iPerf3. · Netperf afegit. · Afinitat IRQ actualitzada. · S'han afegit cues Tx/Rx. · Mida de l'anell actualitzada. · S'han afegit marcs Jumbo. · S'ha afegit unió d'adaptadors. · S'ha afegit l'eina Intel svr-info. |
|
1.0 | març de 2016 | Versió inicial (Intel Public). |
Introducció
Aquesta guia té com a objectiu proporcionar una guia per ajustar els entorns per obtenir un rendiment de xarxa òptim mitjançant una NIC Intel ® Ethernet de la sèrie 700 en entorns Linux. Se centra en les condicions i la configuració del maquinari, el controlador i el sistema operatiu que poden millorar el rendiment de la xarxa. Cal tenir en compte que el rendiment de les xarxes es pot veure afectat per qualsevol quantitat d'influències externes, només les més comunes i dramàtices es cobreixen en aquesta guia.
1.1 Referències relacionades
- Guia d'usuari per a tots els adaptadors i dispositius Ethernet Intel ® compatibles amb Windows i Linux:
Guia d'usuari d'adaptadors i dispositius Ethernet Intel ® - Fitxa tècnica:
Full de dades de la controladora Ethernet Intel® X710/XXV710/XL710 - Paquet complet de SW per a tots els productes Intel ® Ethernet (descarregueu tots els controladors, NVM, eines, etc.):
Paquet complet de controladors de l'adaptador Ethernet Intel ® - Paquet d'actualització NVM (Memòria no volàtil):
Utilitat d'actualització de memòria no volàtil (NVM) per a l'adaptador de xarxa Ethernet Intel ® sèrie 700 - eina svr-info per a Linux que captura detalls de maquinari i programari rellevants d'un servidor: https://github.com/intel/svr-info
- Guia de tecnologia DDP:
Guia de tecnologia Intel ® Ethernet 700 Series Dynamic Device Personalization (DDP).
Llista de verificació inicial
2.1 Actualitzar les versions del controlador/firmware
Comproveu les versions del controlador/firmware mitjançant ethtool -i ethx.
Actualitzeu el següent segons sigui necessari:
- Actualitza el controlador 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 - Actualitza el firmware
https: //downloadcenter.intel.com/download/24769/NVM-Update-Utility-for-Intel-Ethernet-ConvergedNetwork-Adapter-XL710-X710-Series
2.2 Llegeix el README
Comproveu si hi ha problemes coneguts i obteniu les últimes instruccions de configuració del README file inclòs al paquet font i40e.
2.3 Comproveu que la vostra ranura PCI Express (PCIe) sigui x8
Algunes ranures PCIe x8 es configuren realment com a ranures x4. Aquestes ranures tenen una amplada de banda insuficient per a una velocitat de línia completa amb dispositius de port dual i de quatre ports. A més, si poseu un adaptador compatible amb PCIe v3.0 en una ranura PCIe v2.x, no podreu obtenir l'ample de banda complet. El controlador del dispositiu del programari detecta aquesta situació i escriu el missatge següent al registre del sistema:
L'ample de banda PCI-Express disponible per a aquesta targeta no és suficient per a un rendiment òptim. Per obtenir un rendiment òptim es requereix una ranura PCI-Express x8.
Si es produeix aquest error, moveu l'adaptador a una ranura PCIe v3.0 x8 real per resoldre el problema.
2.4 Comproveu les capacitats del maquinari del sistema
A 10 Gbps, 25 Gbps i 40 Gbps Ethernet, hi ha alguns requisits mínims de CPU i sistema. En general, un processador de classe de servidor modern i una configuració de memòria òptima per a la vostra plataforma haurien de ser suficients, però les necessitats varien en funció de la vostra càrrega de treball. Tots els canals de memòria s'han d'omplir i el mode de rendiment de memòria ha d'estar habilitat a la BIOS. Verifiqueu que la vostra CPU i la configuració de memòria siguin capaços de suportar el nivell de rendiment de xarxa que necessiteu per a la vostra càrrega de treball.
NOTA
El XL710 és un controlador de 40 GbE. L'adaptador 2 x 40 GbE que utilitza aquest controlador no està pensat per ser un 2 x 40 GbE, sinó un 1 x 40 GbE amb un port de còpia de seguretat actiu. Quan s'intenta utilitzar el trànsit de velocitat de línia que involucre els dos ports, el commutador intern està saturat i l'ample de banda combinat entre els dos ports es limita a un total de SO Gbps.
2.4.1 Paràmetres d'arrencada del nucli
Si la tecnologia de virtualització Intel® per a E/S dirigida (Intel® VT-d) està habilitada a la BIOS, Intel recomana que IOMMU estigui en mode de transmissió per obtenir un rendiment òptim de la xarxa host. Això elimina la sobrecàrrega de DMA al trànsit de l'amfitrió alhora que permet que les màquines virtuals (VM) encara tinguin els avantatges d'Intel® VT-d. Això s'aconsegueix afegint la línia següent als paràmetres d'arrencada del nucli: fommu-pt.
2.5 Assegureu-vos que el paquet DDP es carregui correctament
Els controladors bàsics 140ea i 140eb no tenen suport directe per a la personalització de dispositiu dinàmic (DDP). Per utilitzar DDP amb dispositius de la sèrie 700, un professional DDPfile es pot aplicar amb l'aplicació testpmd.
Per obtenir més informació sobre DDP profiles, i com aplicar un DDP profile amb testpmd en dispositius de la sèrie 700, consulteu la Guia de tecnologia de personalització dinàmica de dispositius (DDP) Intel® Ethernet de la sèrie 700.
Per verificar si un DDP profile s'ha carregat correctament:
testpmd> ddp get list 0 Profile el número és: 1
NOTA
Si el profile número és 0, no es carrega cap paquet DDP. En cas d'error de càrrega de paquets DDP, el dispositiu passa per defecte al mode segur i moltes funcions de rendiment no estan disponibles. Si hi ha errors relacionats amb la càrrega del paquet DDP, provocarà problemes de rendiment. Per obtenir els passos de resolució de problemes, consulteu la Guia de tecnologia de personalització dinàmica de dispositius (DDP) de la sèrie Inte/* Ethernet 700.
Mesures de rendiment de referència i metodologia d'ajust
3.1 Punts de referència de rendiment de la xarxa
Abans de començar un exercici de sintonització, és important tenir una bona mesura de referència del rendiment de la vostra xarxa. Normalment, a més d'obtenir una mesura inicial del rendiment de la vostra aplicació/càrrega de treball específica, és una bona idea utilitzar també un punt de referència estàndard de rendiment de xarxa per verificar que el vostre dispositiu de xarxa estigui en bon estat.
Per a l'optimització d'un sol sistema, netperf o iperf i NetPIPE són eines sòlides gratuïtes de codi obert que us permeten posar èmfasi en una connexió i diagnosticar problemes de rendiment.
Netperf és fort tant per a proves de rendiment com de latència. NetPIPE és una eina específica de latència, però es pot compilar per a qualsevol tipus d'entorn.
NOTA
La prova TCP_RR a netperf retorna la latència en un valor de transaccions/s. Aquest és un número d'anada i tornada. La latència unidireccional es pot calcular mitjançant l'equació següent:
Latència (usec) = (1⁄2) / [Transaccions/s] * 1,000,000
3.1.1 iPerf2
Intel recomana iperf2 sobre iperf3 per a la majoria de situacions de benchmarking a causa de la facilitat d'ús i suport de diversos fils en una sola instància d'aplicació. Intel recomana executar amb l'opció -P amb 2-4 fils per a connexions 25G i uns 4-6 fils per connexions 40G.
- Per executar trànsit unidireccional del client al servidor: ordre del servidor example: iperf2 -s
Comandament del client example: iperf2 -c -P - Per executar trànsit bidireccional de client a servidor (i viceversa): comanda del servidor example: iperf2 –s –p
Comandament del client exampLI:
iperf2 -c -p -P -–O dúplex complet
iperf2 -c -p -P –d
NOTA
Tant les opcions -full-duplex com -d d'iperf2 permeten a l'usuari realitzar proves bidireccionals. Tanmateix, l'opció –full-duplex se centra específicament en les proves full duplex.
NOTA
Quan es proveu iperf2 a diversos ports del servidor, es pot afegir el senyalador -d a l'ordre del servidor per executar totes les sessions del servidor en segon pla des de la mateixa finestra de terminal. El senyalador -d també es pot utilitzar quan l'ordre del servidor està incrustada dins d'un bucle for en un script.
NOTA
Quan s'executa la prova de rendiment de la xarxa amb un sol flux/fil (example: P1), és possible que els processadors AMD no proporcionin el rendiment esperat, especialment les NIC d'amplada de banda més alta (si la velocitat és >= 25 G d'amplada de banda). Com a resultat, cal fixar l'aplicació a nuclis específics per aconseguir un rendiment més elevat. Vegeu Configuració de l'aplicació a la pàgina 22.
3.1.2 iPerf3
Si s'utilitza iperf3, es requereixen diverses instàncies de l'aplicació per avançartage de les cues multifils, RSS i maquinari. Intel recomana executar-se amb les 2-4 sessions d'aplicació per a connexions 25G i unes 4-6 sessions per a connexions 40G. Cada sessió hauria d'especificar un valor de port TCP únic mitjançant l'opció -p.
- Per executar trànsit unidireccional del client al servidor:
Comandament del servidor exampLI:
iperf3 -s -p
Comandament del client exampLI:
iperf3 -c -p - Per executar trànsit bidireccional de client a servidor (i viceversa):
Comandament del servidor exampLI:
iperf3 –s –p
Comandament del client example: iperf3 -c -p -P –-bidir - Per iniciar diverses instàncies (fils) d'iperf3, la recomanació és utilitzar un bucle for per assignar fils a ports TCP i executar iperf3 en segon pla utilitzant & per crear diversos processos en paral·lel.
Comandament del servidor example, inicieu 4 fils: port=""; per i a {0..3}; fer port=520$i; bash -c "iperf3 -s -p $port &"; fet; Comandament del client example, inicieu 4 fils – Transmet port de prova =””; per i a {0..3}; fer port=520$i; bash -c "iperf3 -c $serverIP -p $port &"; fet; Comandament del client example, inicieu 4 fils – Rebre port de prova =””; per i a {0..3}; fer port=520$i; bash -c "iperf3 -R -c $IP servidor -p $port &"; fet; Per a connexions 40G, augmenta el bucle for per crear fins a 6 instàncies/fils.
NOTA
Quan s'executa la prova de rendiment de la xarxa amb un sol flux/fil (example: P1), és possible que els processadors AMD no proporcionin el rendiment esperat, especialment una amplada de banda més gran
NIC (si la velocitat és >= 25 G d'ample de banda). Com a resultat, cal fixar l'aplicació a nuclis específics per aconseguir un rendiment més elevat. Vegeu Configuració de l'aplicació a la pàgina 22 i AMD EPYC a la pàgina 26.
3.1.3 netperf
L'eina netperf és una bona elecció tant per a proves de rendiment com de latència.
- La prova TCP_STREAM a netperf mesura les capacitats de rendiment del dispositiu. Comandament del servidor example: netserver Command client example: netperf -t TCP_STREAM -l 30 -H
- La prova TCP_RR a netperf retorna la latència en un valor de transaccions/segon. Aquest és un número d'anada i tornada. Es recomana utilitzar l'opció -T x,x, on x és la CPU local al dispositiu. La latència unidireccional es pot calcular mitjançant: Latència(usec)=(1⁄2)/ [Transaccions/s]*1,000,\ Ordre del servidor ex.ample: servidor de xarxa
Comandament del client example: netperf -t TCP_RR -l 30 -H -T x,x - Per iniciar diverses instàncies (fils) de netperf, la recomanació és utilitzar un for-loop per assignar fils a ports TCP i executar netperf en segon pla utilitzant & per crear diversos processos en paral·lel.
Comandament del servidor example, inicia 8 fils:
port=""; per i a {0..7}; fer port=520$i; bash -c "netserver -L $serverIP -p $port &"; fet;
Comandament del client example, inicieu 8 fils: port=""; per i a {0..7}; fer port=520$i; bash -c “netperf -H $serverIP -p $port -t TCP_STREAM -l 30 &”; fet;
3.2 Metodologia d'afinació
Centreu-vos en un canvi d'ajust a la vegada per saber quin impacte té cada canvi a la vostra prova. Com més metòdic sigui en el procés d'ajust, més fàcil serà identificar i abordar les causes dels colls d'ampolla de rendiment.
Ajustant la configuració del controlador i40e
4.1 Afinitat IRQ
Configurar l'afinitat IRQ de manera que les interrupcions de diferents cues de xarxa s'affinin amb diferents nuclis de CPU pot tenir un gran impacte en el rendiment, especialment en les proves de rendiment multifils.
Per configurar l'afinitat IRQ, atureu irqbalance i, a continuació, utilitzeu l'script set_irq_affinity del paquet font i40e o fixeu les cues manualment. Desactiveu l'equilibrador d'IRQ d'espai d'usuari per habilitar la fixació de la cua:
- systemctl desactiva irqbalance
- systemctl stop irqbalance
Utilitzant l'script set_irq_affinity del paquet font i40e (recomanat): - Per utilitzar tots els nuclis:
[path-to-i40epackage]/scripts/set_irq_affinity -X tot ethX - Per utilitzar només nuclis al sòcol NUMA local: [path-to-i40epackage]/scripts/set_irq_affinity -X local ethX
- També podeu seleccionar una sèrie de nuclis. Eviteu utilitzar cpu0 perquè executa tasques de temporitzador. [camí-a-i40epackage]/scripts/set_irq_affinity 1-2 ethX
NOTA
L'script d'afinitat activa Transmit Packet Steering (XPS) com a part del procés de fixació quan s'especifica l'opció -x. Quan XPS està habilitat, Intel recomana desactivar irqbalance, ja que l'equilibrador del nucli amb XPS pot provocar un rendiment impredictible. L'script d'afinitat desactiva XPS quan s'especifica l'opció -X. Desactivar XPS i habilitar cues simètriques és beneficiós per a les càrregues de treball on s'aconsegueix el millor rendiment quan el trànsit Tx i Rx s'atén al mateix parell de cues.
La configuració de cues simètriques a Linux implica ajustar els paràmetres del controlador de la interfície de xarxa per habilitar les cues de recepció simètriques (Rx) i les cues de transmissió simètriques (Tx) per als adaptadors de xarxa compatibles.
NOTA
- Les cues simètriques són una funció de xarxa avançada i no tots els adaptadors de xarxa o controladors de la sèrie 700 les admeten.
- Assegureu-vos que teniu el suport necessari per al controlador i el maquinari abans d'intentar configurar cues simètriques.
Per configurar cues simètriques, seguiu aquests passos generals:
- Edita la configuració de la interfície de xarxa File: Utilitzeu un editor de text (per exemple,ample, vi, nano o gedit) per editar la configuració de la interfície de xarxa file. El file normalment es troba al directori /etc/sysconfig/network-scripts/ i té un nom com ifcfg-ethX, on ethX és el nom de la vostra interfície de xarxa.
- Afegiu paràmetres de cua simètrics. Afegiu les línies següents a la configuració de la interfície de xarxa file: ETHTOOL_OPTS=”rx-queues 8 tx-queues 8″
- Reinicieu el servei de xarxa.
Després de fer els canvis, reinicieu el servei de xarxa per aplicar la nova configuració. sudo systemctl reinicia la xarxa
Manualment:
-
Trobeu els processadors connectats a cada node mitjançant: numactl –hardware lscpu
-
Trobeu les màscares de bits per a cadascun dels processadors:
- Suposant nuclis 0-11 per al node 0: [1,2,4,8,10,20,40,80,100,200,400,800]
- Trobeu les IRQ assignades al port que s'assigna: grep ethX /proc/interrupts i anoteu els valors IRQ, per exempleample, 181-192 per als 12 vectors carregats.
- Feu ressò del valor d'afinitat SMP a l'entrada IRQ corresponent. Tingueu en compte que això s'ha de fer per a cada entrada d'IRQ: echo 1 > /proc/irq/181/smp_affinity echo 2 > /proc/irq/182/smp_affinity echo 4 > /proc/irq/183/smp_affinity Mostra l'afinitat d'IRQ:
- Per mostrar l'afinitat IRQ per a tots els nuclis: /scripts/set_irq_affinity -s ethX
- Per mostrar només nuclis al sòcol NUMA local: /scripts/set_irq_affinity -s local ethX
- També podeu seleccionar una sèrie de nuclis: /scripts/set_irq_affinity -s 40-0-8,16 ethX
NOTA
L'script set_irq_affinity admet el senyalador -s a la versió del controlador i40e 2.16.11 i posteriors.
4.2 Cues Tx/Rx
El nombre predeterminat de cues habilitats per a cada port Ethernet pel controlador en la inicialització és igual al nombre total de CPU disponibles a la plataforma. Això funciona bé per a moltes plataformes i configuracions de càrrega de treball. Tanmateix, a les plataformes amb un nombre elevat de nuclis i/o una densitat de ports Ethernet elevada, aquesta configuració pot provocar contenció de recursos. Per tant, en alguns casos pot ser necessari modificar el valor predeterminat de cada port del sistema.
El nombre predeterminat de cues Tx/Rx pot variar segons el model específic i la versió del controlador. El nombre de cues es pot ajustar mitjançant l'ordre ethtool -L que es mostra a continuació.
NOTA
En aquests casos, Intel recomana que reduïu el nombre de cues per defecte per a cada port a no més del nombre de CPU disponibles al node NUMA local al port de l'adaptador. En alguns casos, quan s'intenta equilibrar els recursos en implementacions de nombre elevat de ports, pot ser necessari reduir encara més aquest nombre.
Per modificar la configuració de la cua:
El següent exampli estableix el port a 32 cues Tx/Rx: ethtool -L ethX combinat 32
Example sortida:
ethtool -l ethX
Paràmetres de canal per a ethX: Màxims preestablerts:
RX: 96
TX: 96
Altres: 1
Combinat: 96
Configuració actual del maquinari:
RX: 0
TX: 0
Altres: 1
Combinat: 32
4.3 Moderació d'interrupcions
La moderació d'interrupcions adaptatives està activada de manera predeterminada i està dissenyada per oferir un enfocament equilibrat entre la baixa utilització de la CPU i l'alt rendiment. Tanmateix, podeu provar d'ajustar la configuració d'interrupció manualment perquè s'adapti al vostre cas d'ús.
El rang de 0-235 microsegons proporciona un rang efectiu de 4,310 a 250,000 interrupcions per segon. El valor de rx-μsecs-high es pot establir independentment de rx-μsecs i tx-μsecs a la mateixa ordre ethtool, i també és independent de l'algorisme de moderació d'interrupció adaptativa. El maquinari subjacent admet granularitat en intervals de 2 microsegons, de manera que els valors adjacents poden donar lloc a la mateixa taxa d'interrupció.
- Per desactivar la moderació d'interrupcions adaptatives: ethtool -C ethX adaptive-rx off adaptive-tx off
- Per activar la moderació d'interrupcions adaptatives: ethtool -C ethX adaptive-rx on adaptive-tx on
Un bon lloc per començar per a l'afinació general és 84 μs, o ~12000 interrupcions/s. Si veieu que els comptadors rx_dropped s'executen durant el trànsit (utilitzant ethtool -S ethX), probablement tingueu una CPU massa lenta, no hi ha prou buffers de la mida de l'anell de l'adaptador (ethtool -G) per contenir paquets durant 84 μs o una taxa d'interrupció baixa.
- Per establir la moderació d'interrupcions a una taxa d'interrupció fixa de 84 μs entre interrupcions (12000 interrupcions/s): ethtool -C ethX adaptive-rx off adaptive-tx off rx-usecs 84 tx-usecs 84 El següent valor a provar, si no esteu al màxim de la utilització de la CPU, és 62 μs. Això utilitza més CPU, però fa servei als buffers més ràpidament i requereix menys descriptors (mida de l'anell, ethtool -G).
- Per establir la moderació d'interrupcions a una taxa d'interrupció fixa de 62 usecs entre interrupcions (16000 interrupcions/s). ethtool -C ethX adaptive-rx off adaptive-tx off rx-usecs 62 tx-usecs 62
Si els comptadors rx_dropped augmenten durant el trànsit (utilitzant ethtool -S ethX), probablement tingueu una CPU massa lenta, no hi ha prou buffers de la mida de l'anell de l'adaptador (ethtool -G) o una taxa d'interrupció massa baixa. Si no esteu al màxim de la utilització de la CPU, podeu augmentar la taxa d'interrupció reduint el valor ITR. Això utilitza més CPU, però els serveis s'emmagatzemen més ràpidament i requereix menys descriptors (mida de l'anell, ethtool -G).
Si la CPU està al 100%, no es recomana augmentar la taxa d'interrupció. En determinades circumstàncies, com ara una càrrega de treball vinculada a la CPU, és possible que vulgueu augmentar el valor de μs per habilitar més temps de CPU per a altres aplicacions.
Si necessiteu un rendiment de baixa latència i/o teniu molta CPU per dedicar al processament de la xarxa, podeu desactivar completament la moderació d'interrupcions, la qual cosa permet que les interrupcions s'activin el més ràpid possible. - Per desactivar la moderació d'interrupcions ethtool -C ethX adaptive-rx off adaptive-tx off rx-usecs 0 tx-usecs 0
NOTA
Quan s'executa amb la moderació d'interrupcions desactivada, la taxa d'interrupcions de cada cua pot ser molt alta. Penseu en incloure el paràmetre rx-usec-high per establir un límit superior a la velocitat d'interrupció. L'ordre següent desactiva la moderació adaptativa d'interrupcions i permet un màxim de 5 microsegons abans d'indicar que una recepció o transmissió s'ha completat. En lloc de produir fins a 200,000 interrupcions per segon, limita les interrupcions totals per segon a 50,000 mitjançant el paràmetre rx-usec-high. # ethtool -C ethX adaptive-rx off adaptive-tx off rx-usecs-high 20 rx-usecs 5 txusecs 5 Proveu d'ajustar el temporitzador de coalescència de transmissió/recepció/prioritat alta més alt (80/100/150/200) o inferior (25/20/10/5) o inferior (XNUMX/XNUMX/XNUMX/XNUMX) per trobar el valor òptim per a la càrrega de treball.
4.4 Mida de l'anell
Si veieu comptadors rx_dropped a ethtool -S ethX (rx_dropped, rx_dropped.nic) o sospiteu pressió de la memòria cau amb diverses cues actives, podeu provar d'ajustar la mida de l'anell des del valor predeterminat. El valor predeterminat és 512, el màxim és 4096.
- Per comprovar els valors actuals: ethtool -g ethX
Si se sospita que la manca de memòria intermèdia està causant caigudes a la velocitat d'interrupció actual, podeu provar primer el màxim, després el mínim i després continuar en una cerca binària fins que vegeu un rendiment òptim.
Si se sospita de la pressió de la memòria cau (moltes cues actives), reduir els buffers per defecte pot ajudar a que Intel ® Data Direct I/O (Intel ® DDIO) funcioni de manera més eficient. Intel recomana provar 128 o 256 per cua, tenint en compte que pot ser necessari un augment de la taxa d'interrupció mitjançant ethtool -C per evitar un augment de rx_dropped. - Per establir la mida de l'anell en un valor fix: ethtool -G eth12 rx 256 tx 256
NOTA
Per solucionar les caigudes de paquets Rx que es troben amb ethtool -S ethX|grep drop, considereu augmentar la mida de l'anell a 4096. Experimenteu per trobar la millor configuració per a la càrrega de treball, però aneu amb compte amb un ús excessiu de memòria amb valors més alts.
4.5 Control de flux
El control de flux de la capa 2 pot afectar considerablement el rendiment de TCP i es recomana desactivar-lo per a la majoria de càrregues de treball. Una possible excepció és el trànsit en ràfega on les ràfegues no tenen una durada llarga.
El control de flux està desactivat per defecte.
- Per habilitar el control de flux: ethtool -A ethX rx on tx on
- Per desactivar el control de flux: ethtool -A ethX rx off tx off
NOTA
Heu de tenir un soci d'enllaç capaç de controlar el flux per activar correctament el control de flux.
4.6 Marcs Jumbo
Quan l'entorn de trànsit esperat consisteix en grans blocs de dades que s'estan transferint, pot ser beneficiós habilitar la funció de trama jumbo. El suport de Jumbo Frames s'habilita canviant la unitat de transmissió màxima (MTU) a un valor superior al valor predeterminat de 1500. Això permet que el dispositiu transfereixi dades en paquets més grans dins de l'entorn de xarxa. Aquesta configuració pot millorar el rendiment i reduir la utilització de la CPU per a grans càrregues de treball d'E/S. Tanmateix, pot afectar paquets petits o càrregues de treball sensibles a la latència.
NOTA
Els marcs jumbo o la configuració de MTU més gran s'han de configurar correctament al vostre entorn de xarxa.
Utilitzeu l'ordre ifconfig per augmentar la mida de la MTU. Per example, introduïu el següent, on és el número de la interfície: ifconfig mtu 9000 amunt
Alternativament, podeu utilitzar l'ordre ip de la següent manera: ip link set mtu 9000 dev Configuració de l'enllaç ip dev
Ajust de plataforma (i40e no específic)
5.1 Configuració de la BIOS
- Habiliteu Intel® VT-d per a càrregues de treball de virtualització.
- Hyper-threading (processadors lògics) pot afectar el rendiment. Experimenteu-lo activat o desactivat per a la vostra càrrega de treball.
- Intel® Turbo Boost permet que els nuclis de la CPU funcionin a una freqüència superior a la freqüència base de la CPU. Habilitar Intel® Turbo Boost pot millorar el rendiment de moltes càrregues de treball, però consumeix més energia per mantenir els nuclis a una freqüència més alta. Proveu amb Turbo Boost desactivat/activat per a la vostra càrrega de treball.
NOTA
Les freqüències turbo no estan garantides si la plataforma està experimentant una gran utilització general de la CPU. Les freqüències turbo centrals més altes es redueixen a mesura que augmenta la utilització general de la CPU.
5.2 Gestió de l'energia
La gestió de l'energia pot afectar el rendiment, especialment en càrregues de treball de baixa latència. Si el rendiment és una prioritat més alta que reduir el consum d'energia, Intel recomana que experimenteu limitant els efectes de la gestió de l'energia. Hi ha moltes maneres diferents de limitar la gestió de l'energia, mitjançant les eines del sistema operatiu, la configuració de la BIOS i els paràmetres d'arrencada del nucli. Trieu el millor mètode i nivell per adaptar-vos al vostre entorn.
5.2.1 Control de l'estat C
Limitar l'entrada de l'estat C a CO o C1 millora el rendiment i augmenta la utilització de l'energia.
La desactivació de l'entrada d'estat del paquet CPU C6 pot millorar el rendiment de la xarxa. Tanmateix, això augmenta el consum d'energia.
Les opcions següents estan disponibles:
- Controla dinàmicament l'entrada d'estat C:
Obert
/dev/cpu_dma_latency i escriu-hi la latència màxima permesa.
NOTA
Hi ha un petit programa anomenat cpudmalatency.c que es pot descarregar de la comunitat de codi obert, compilar i executar des de la línia d'ordres per fer-ho exactament.
El següent example permet cinc μs de temps d'activació i, per tant, permet l'entrada C1: cpudmalatency 5 &
- Limiteu l'estat C màxim a la configuració d'arrencada del nucli:
Per a les CPU Intel: intel_idle.max_cstates=1
Per a CPU que no siguin d'Intel: processor.max_cstates=1 - Utilitzeu l'ordre cpupower per comprovar i desactivar l'estat de la CPU C6: Comproveu: cpupower monitor o cpupower idle-info
Desactiva C6: cpupower idle-set -d3 o
Desactiva els estats C: cpupower idle-set -D0
Notes:
- Desactiveu els estats C a la CPU si el servidor té processadors escalables Intel® de 4a generació Intel® Xeon®. Quan Hyper Threading està activat o desactivat, la desactivació dels estats inactius (-D0) impedeix que els nuclis entrin en estats de baixa potència durant els períodes d'inactivitat i redueix la latència de la CPU per passar entre els estats inactiu i actiu.
- La gestió de l'energia del processador escalable Intel® Xeon® de 4a generació és extremadament agressiva. Per evitar que els nuclis entrin en estats de baixa potència, proveu de reduir el nombre de nuclis en ús per mantenir-los desperts durant més temps (ethtool -L combinats ). A més, enllaceu interrupcions a nuclis específics mitjançant l'afinitat irq establerta (la majoria de vegades amb -x local o llista de nuclis de CPU) i assegureu-vos que la càrrega de treball s'executi en aquests mateixos nuclis amb taskset o numactl. Això millora el rendiment mantenint els nuclis actius i optimitzant el maneig d'interrupcions.
Habilita C6:
cpupower idle-set -d3
Habilita els estats C:
cpupower idle-set -E
- Un altre mètode és utilitzar l'eina ajustada (inclosa amb moltes distribucions de Linux) per establir un rendiment professionalfile. Aquests profiles modifiqueu diversos paràmetres del sistema operatiu que poden afectar el rendiment de moltes aplicacions. S'ha trobat que el rendiment de xarxa profile proporciona millores a la majoria de les càrregues de treball.
Comprovar:
tuned-adm actiu
Conjunt:
sintonitzat-adm profile rendiment de xarxa
NOTA
El servei ajustat s'ha d'executar per a les ordres anteriors. Per comprovar/reiniciar, ajustat: systemctl status tuned systemctl restart tuned
També podeu no permetre qualsevol entrada d'estat C afegint el següent a la línia d'arrencada del nucli:
inactiu=enquesta - Limiteu l'estat C mitjançant la configuració de gestió d'energia de la BIOS del sistema, que podria tenir un rendiment professionalfile disponible.
Eines com ara turbostat o x86_energy_perf_policy es poden utilitzar per comprovar o establir la configuració de gestió de l'energia.
5.2.2 Gestió d'energia PCIe
La gestió d'energia d'estat actiu (ASPM) permet un estat de potència més baix per als enllaços PCIe quan no estan en ús actiu. Això pot provocar una latència més alta als dispositius de xarxa PCIe, per la qual cosa Intel recomana que desactiveu l'ASPM per a càrregues de treball sensibles a la latència. Desactiveu l'ASPM afegint el següent a la línia d'arrencada del nucli: pcie_aspm=off
5.2.3 Escalat de freqüència de CPU
L'escala de freqüència de la CPU (o escala de velocitat de la CPU) és una tècnica de gestió d'energia de Linux en la qual la velocitat del rellotge del sistema s'ajusta sobre la marxa per estalviar energia i calor. Igual que els estats C, això pot provocar una latència no desitjada a les connexions de xarxa.
L'eina cpupower també es pot utilitzar per comprovar i modificar els límits i els valors predeterminats del rendiment de la CPU:
- Comproveu: cpupower monitor o
- Estableix les CPU al mode de rendiment: cpupower frequency-set -g performance
NOTA
Les modificacions als límits de freqüència de la CPU poden tenir un impacte en moltes càrregues de treball i poden desactivar altres funcions, com ara el mode turbo de la CPU.
Per desactivar l'escala de freqüència de la CPU, desactiveu el servei d'alimentació de la CPU mitjançant les ordres següents:
systemctl atura cpupower.service
systemctl desactiva cpupower.service
5.2.4 Orientació addicional per a la gestió de l'energia
Es proporcionen detalls addicionals en aquest sobre d'alt nivellview de moltes de les funcions de gestió d'energia dels processadors escalables Intel® Xeon® de 3a generació, així com una guia sobre com es poden integrar aquestes funcions a nivell de plataforma: https://networkbuilders.intel.com/solutionslibrary/power-management-technologyoverview-technology-guide
5.3 Intel® Turbo Boost
Intel® Turbo Boost fa que el processador sigui més ràpid quan cal, però pot consumir energia addicional. Desactivar Turbo Boost manté el processador a una velocitat constant, donant-vos un nivell de rendiment constant per a càrregues de treball específiques.
5.4 Tallafocs
Els tallafocs poden afectar el rendiment, especialment el rendiment de latència.
Desactiveu iptables/firewalld si no és necessari.
5.5 Configuració de l'aplicació
Sovint, un sol fil (que correspon a una única cua de xarxa) no és suficient per aconseguir l'amplada de banda màxima. Algunes arquitectures de plataformes, com AMD, tendeixen a deixar caure més paquets Rx amb un sol fil en comparació amb plataformes amb processadors basats en Intel.
Penseu en l'ús d'eines com ara taskset o numactl per fixar aplicacions al node NUMA o als nuclis de CPU locals al dispositiu de xarxa. Per a algunes càrregues de treball, com ara E/S d'emmagatzematge, moure l'aplicació a un node no local ofereix beneficis.
Si és possible, experimenteu augmentant el nombre de fils utilitzats per la vostra aplicació.
5.6 Versió del nucli
La majoria dels nuclis integrats moderns estan raonablement optimitzats per al rendiment, però, depenent del vostre cas d'ús, l'actualització del nucli pot millorar el rendiment. La descàrrega de la font també us permet activar/desactivar determinades funcions abans de construir el nucli.
5.7 Configuració del sistema operatiu/nucli
Consulteu les guies d'ajust del sistema operatiu, com ara la Guia d'ajust del rendiment de la xarxa de Red Hat Enterprise Linux, per obtenir més informació sobre l'ajust general del sistema operatiu.
Alguns paràmetres comuns per ajustar es mostren a la taula següent. Tingueu en compte que aquests només són punts de partida suggerits, i canviar-los dels valors predeterminats pot augmentar els recursos utilitzats al sistema. Tot i que augmentar els valors pot ajudar a millorar el rendiment, cal experimentar amb diferents valors per determinar què funciona millor per a un sistema, càrrega de treball i tipus de trànsit determinats.
Els paràmetres del nucli es poden configurar mitjançant la utilitat sysctl a Linux, tal com s'indica a continuació.
A view els valors per defecte per a rmem i wmem al sistema:
sysctl net.core.rmem_default
sysctl net.core.wmem_default
Establiu els valors com a màxim (16 MB):
sysctl -w net.core.rmem_max=16777216
sysctl -w net.core.wmem_max=16777216
Les mides de memòria intermèdia de socket, també conegudes com a memòria intermèdia de recepció (rmem) i memòria intermèdia de transmissió (wmem), són paràmetres del sistema que especifiquen la quantitat de memòria reservada per al trànsit de xarxa entrant i sortint.
L'execució de sysctl sense l'argument -w mostra el paràmetre amb la seva configuració actual.
Configuració de la pila | Descripció |
net.core.rmem_default | Mida de la finestra de recepció per defecte |
net.core.wmem_default | Mida de la finestra de transmissió per defecte |
net.core.rmem_max | Mida màxima de la finestra de recepció |
net.core.wmem_max | Mida màxima de la finestra de transmissió |
net.core.optmem_max | Buffers de memòria d'opció màxima |
net.core.netdev_max_backlog | Endarreri de paquets no processats abans que el nucli comenci a caure |
net.ipv4.tcp_rmem | Reservador de memòria per als buffers de lectura TCP |
net.ipv4.tcp_wmem | Reservador de memòria per als buffers d'enviament TCP |
El nucli, la pila de xarxa, el gestor de memòria, la velocitat de la CPU i els paràmetres de gestió d'energia poden tenir un gran impacte en el rendiment de la xarxa. Una recomanació comuna és aplicar-la a la xarxa de rendiment professionalfile utilitzant la comanda sintonitzada. Això modifica alguns paràmetres del sistema operatiu per donar preferència a les aplicacions de xarxa.
Comprovar:
tuned-adm actiu
Conjunt:
sintonitzat-adm profile rendiment de xarxa
5.8 Backlog de dispositius de xarxa
Aquesta funció ajuda a millorar el rendiment de la xarxa gestionant el trànsit entrant de manera eficaç, reduint la pèrdua de paquets, reduint la latència i augmentant el rendiment. Això condueix a una millor experiència d'usuari i una resposta més ràpida del sistema.
Per defecte, està habilitat a la majoria dels sistemes operatius Linux. Per comprovar el valor predeterminat:
sysctl net.core.netdev_max_backlog
El valor màxim de netdev_max_backlog pot variar en funció de factors com la versió del nucli, el maquinari, la memòria i la càrrega de treball. En molts casos, 8192 es considera un bon valor. sysctl -w net.core.netdev_max_backlog=8192
5.9 Configuracions i afinació específiques de la plataforma
5.9.1 Processadors escalables Intel® Xeon® de 4a generació
La gestió de l'energia del processador Intel® Xeon® Scalable de 4a generació és extremadament agressiva en comparació amb els processadors Intel® Xeon® Scalable de 3a generació. Per evitar que els nuclis entrin en estats de baixa potència, proveu de reduir el nombre de nuclis en ús per mantenir-los desperts durant més temps.
Configuració de la BIOS recomanada per al màxim rendiment
- Habilita/desactiva l'hiper-threading (segons els requisits de càrrega de treball i els objectius de rendiment) a la CPU.
- Configura el sistema professionalfile al rendiment per al màxim rendiment.
NOTA
Això es tradueix en un major consum d'energia - Establiu la gestió de l'energia de la CPU a Rendiment màxim per prioritzar el rendiment màxim de la CPU sobre l'eficiència energètica.
- Activa Turbo Boost. La desactivació de Turbo Boost a la configuració de la BIOS del sistema normalment impedeix que la CPU augmenti dinàmicament la seva velocitat de rellotge més enllà de la seva freqüència base.
- NOTA
La desactivació de Turbo Boost pot ser adequada per a determinats casos d'ús on es prioritzen el rendiment coherent, l'eficiència energètica o la gestió tèrmica sobre el rendiment màxim. - Desactiveu la funció de virtualització d'E/S d'arrel única (SR-IOV), si el sistema no utilitza tecnologies de virtualització.
- Desactiveu els estats C per indicar a la CPU que es mantingui activa i evitar que entri en estats d'inactivitat més profunds.
- Desactiveu C1E, per assegurar-vos que la CPU roman activa i no entra a l'estat d'inactivitat C1E.
- Establiu la freqüència sense nucli al màxim per indicar al sistema que funcioni a la freqüència més alta disponible.
- A les plataformes Dell, configureu l'emulació del nucli de la taula de descripció d'APIC múltiple (MADT) a Lineal (o Round-Robin segons la BIOS) per proporcionar un mapeig clar i previsible dels nuclis de la CPU.
Ajustaments de nivell del sistema operatiu recomanats per a un rendiment optimitzat
- Estableix el governador d'escala de freqüència de la CPU al rendiment. cpupower frequency-set -g rendiment cpupower frequency-info
- Desactiva els estats C. cpupower idle-set -D0
- Estableix els buffers centrals Rx (rmem) i Tx (wmem) al valor màxim. sysctl -w net.core.rmem_max=16777216 sysctl -w net.core.wmem_max=16777216
- Estableix el retard del dispositiu de xarxa. sysctl -w net.core.netdev_max_backlog=8192
- Establir sintonitzat profile (depèn de la càrrega de treball pel rendiment/latència).
sintonitzat-adm profile rendiment de xarxa
Ajustaments de nivell d'adaptador recomanats per a un rendiment optimitzat
- Limiteu el nombre de cues a utilitzar per al trànsit d'aplicacions. Utilitzeu el nombre mínim de cues necessàries per mantenir actius els nuclis de CPU associats per evitar que entrin en estats d'inactivitat més profunds (ajusteu-vos a la càrrega de treball): ethtool -L combinat 32
- Estableix taxes de moderació d'interrupcions. ethtool -C Adaptive-rx off Adaptive-tx off rx-usecs-high 50 rx-usecs 50 tx-usecs 50
Proveu d'ajustar el temporitzador de transmissió/recepció/coalescència d'alta prioritat més alt (80/100/150/200) o inferior (25/20/10/5) per trobar el valor òptim per a la càrrega de treball. - Estableix les mides dels anells Rx/Tx. ethtool -G rx 4096 tx 4096
NOTA
Si veieu que el paquet Rx baixa amb ethtool -S| grep drop, prova de reduir la mida de l'anell a <4096. Intenteu trobar el valor òptim per a la càrrega de treball on els paquets no es descarten. - Estableix l'afinitat IRQ. Utilitzeu nuclis locals a la NIC o mapeig de nucli específic (on # nuclis és igual al nombre de cues establertes a 1 a la pàgina 26. systemctl stop irqbalance set_irq_affinity -X local O set_irq_affinity -X
5.9.2 AMD EPYC
Els processadors AMD EPYC són potents CPU creades per a servidors i centres de dades, construïdes amb l'arquitectura Zen d'AMD. La configuració següent és de la sèrie EPYC de quarta generació d'AMD.
Configuració de la BIOS recomanada per al màxim rendiment
- Activeu el mode personalitzat per permetre als usuaris ajustar el rendiment de la CPU, el consum d'energia i altres paràmetres. Això ajuda a ajustar el sistema per obtenir el millor equilibri entre rendiment i eficiència energètica.
- Activeu l'augment del rendiment bàsic per permetre que la CPU augmenti automàticament la seva velocitat per gestionar tasques més intensives, millorant el rendiment general.
- Desactiveu el control global de l'estat C, per evitar que la CPU entri en estats d'estalvi d'energia més profunds coneguts com a estats C, que poden mantenir la capacitat de resposta.
NOTA
La desactivació dels estats C pot provocar un consum d'energia addicional i augmentar les temperatures tèrmiques. Superviseu tots dos per la càrrega de treball. - Activeu/desactiveu el multithreading simultània (SMT) a la CPU, segons els requisits de càrrega de treball i els objectius de rendiment. SMT és equivalent a Hyper Threading a les CPU Intel.
NOTA
Per obtenir un rendiment optimitzat, consulteu Ajust de la configuració del controlador de l'i40e a la pàgina 13 i Ajust de plataforma (i40e no específic) a la pàgina 19 per obtenir l'ajust del nivell d'adaptador i SO recomanat.
Enllaç d'adaptadors
La vinculació de Linux és una característica potent que pot millorar significativament el rendiment de la xarxa, la redundància i la tolerància a errors en entorns de servidor. Tanmateix, és important tenir en compte que requereix un maquinari de xarxa compatible i una configuració adequada tant al servidor com al commutador per funcionar correctament.
El controlador d'enllaç a Linux us permet agregar diverses interfícies físiques de xarxa en una interfície vinculada. Aquesta interfície vinculada apareix com una única interfície de xarxa virtual per al sistema operatiu i les aplicacions.
NOTA
L'enllaç és una interfície lògica, de manera que no és possible establir l'afinitat de la CPU directament a la interfície d'enllaç (per exempleample, enllaç0). És a dir, no té control directe sobre el maneig d'interrupcions o l'afinitat de la CPU. L'afinitat de la CPU s'ha de configurar per a les interfícies subjacents que formen part de l'enllaç.
L'enllaç proporciona diversos modes d'operació, cadascun amb les seves pròpies característiques.
Mode | Tipus |
0 | Round Robin |
1 | Còpia de seguretat activa |
2 | XOR |
3 | Transmissió |
4 | LACP |
5 | Transmet el balanç de càrrega |
6 | Balanç de càrrega adaptatiu |
Hi ha diferents mètodes per crear un enllaç a Linux. Un dels mètodes més comuns és utilitzar la configuració de xarxa files (per exampli, /etc/network/ interfaces o /etc/sysconfig/network-scripts/ifcfg-bondX).
Configuració mitjançant la configuració de xarxa Files
Els passos següents creen l'enllaç a través de la configuració de la xarxa files.
- Seleccioneu dos o més ports NIC per a la connexió (per exemple,ample, ethX i ethY)
- Obriu la configuració de la NIC Files a /etc/sysconfig/network-scripts/ per a la interfície NIC necessària (per exempleample, vi ifcfg-ethX i vi ifcfg-ethY) i afegiu el text següent:
MASTER=bondN [Nota: N és un nombre enter per esmentar el número d'enllaç.] SLAVE=sí - Creeu un script de xarxa d'enllaços file utilitzant vi /etc/sysconfig/networkscripts/ifcfg-bondN i introduïu el text següent:
DEVICE=bondN [Nota: N és un nombre enter per esmentar el número de vincle] ONBOOT=si USERCTL=no BOOTPROTO=dhcp (o) cap
IPADDR=200.20.2.4 [obligatori si BOOTPROTO=cap] NETMASK=255.255.255.0 [obligatori si BOOTPROTO=cap] NETWORK=200.20.2.0 [obligatori si BOOTPROTO=cap] BROADCAST=200.20.2.255. BOOTPROTO=cap] BONDING_OPTS="mode=1 miimon=100″
NOTA
El mode pot ser qualsevol nombre enter de 0 a 6 segons el requisit. - Reinicieu els serveis de xarxa mitjançant el reinici de la xarxa de serveis o systemctl restart NetworkManager.service
Resolució de problemes de rendiment
7.1 Ús de la CPU
Comproveu l'ús de la CPU per nucli mentre s'executa la càrrega de treball.
Tingueu en compte que la utilització per nucli és més rellevant per al rendiment que la utilització general de la CPU, ja que proporciona una idea de la utilització de la CPU per cua de xarxa. Si només teniu uns quants fils que executen trànsit de xarxa, és possible que només s'utilitzin uns quants nuclis. Tanmateix, si aquests nuclis estan al 100%, és probable que el rendiment de la vostra xarxa estigui limitat per la utilització de la CPU i és hora de fer el següent:
- Ajusteu la mida de l'anell/moderació IRQ tal com es detalla a Moderació d'interrupció.
- Augmenteu el nombre de fils d'aplicació per repartir la càrrega de la CPU en més nuclis. Si tots els nuclis s'executen al 100%, és possible que la vostra aplicació estigui lligada a la CPU en lloc de la xarxa.
Eines comunament disponibles:
- superior
— Premeu 1 per ampliar la llista de CPU i comprovar quines s'estan utilitzant.
— Observar el nivell d'aprofitament.
— Observeu quins processos apareixen com a més actius (parte superior de la llista). - mpstat
El següent exampla línia d'ordres es va provar a Red Hat Enterprise Linux 7.x.
Mostra la utilització de la CPU per nucli (trobant el percentatge total d'inactivitat i restant de 100) i destaca els valors per sobre del 80% en vermell. mpstat -P TOTS 1 1 | grep -v Mitjana | cua -n +5 | cap -n -1 | awk '{ imprimir (100-$13)}' | egrep -color=sempre '[^\.][8-9][0-9][\.]?.*|^[8-9][0-9][\.]?.*| 100|' | columna - perf top Busca on s'estan passant els cicles.
7.2 Comptadors i40e
El controlador i40e proporciona una llarga llista de comptadors per a la depuració i la supervisió de la interfície mitjançant l'ordre ethtool -S ethX. Pot ser útil veure la sortida mentre s'executa una càrrega de treball i/o comparar els valors del comptador abans i després de l'execució de la càrrega de treball.
- Per obtenir un abocament complet de comptadors i40e: ethtool -S ethX
- Per veure només comptadors diferents de zero: mira -d (ethtool -S ethX) | egrep -v :\ 0 | columna
Algunes coses a buscar: - rx_dropped significa que la CPU no està donant servei als buffers prou ràpid.
- port.rx_dropped significa que alguna cosa no és prou ràpid a la ranura/memoria/sistema.
7.3 Comptadors de xarxa
Comproveu netstat -s abans o després d'executar la càrrega de treball.
Netstat recopila informació de xarxa de tots els dispositius de xarxa del sistema. Per tant, els resultats poden veure's afectats per xarxes diferents de la xarxa sota prova. La sortida de netstat -s pot ser un bon indicador dels problemes de rendiment del sistema operatiu o del nucli Linux. Consulteu les guies d'ajust del sistema operatiu, com ara la Guia d'ajust del rendiment de la xarxa de Red Hat Enterprise Linux, per obtenir més informació sobre l'ajust general del sistema operatiu.
7.4 Registres del sistema
Comproveu els registres del sistema per detectar errors i advertències (/var/log/messages, dmesg).
7.5 Eina Intel svr-info
Intel proporciona una eina svr-info (vegeu https://github.com/intel/svr-info) per a Linux que captura detalls de maquinari i programari rellevants d'un servidor. La sortida svr-info pot ser molt útil per identificar colls d'ampolla del sistema o configuracions/ajustaments que no estan optimitzats per a la càrrega de treball. Quan obriu un cas d'assistència amb Intel per problemes de rendiment relacionats amb Ethernet, assegureu-vos d'incloure la sortida d'informació svr (text file) per a cada servidor Linux a la configuració de prova.
- Baixeu i instal·leu svr-info:
wget -qO- https://github.com/intel/svr-info/releases/latest/download/svrinfo.tgz| tar xvz cd svr-info
./svr-info
> hostname.txt - Recolliu la sortida:
./svr-info > hostname.txt - Adjunta un text (.txt) file per a cada servidor al vostre cas de suport d'Intel per a l'anàlisi.
Recomanacions per a escenaris de rendiment comuns
8.1 Reenviament IP
- Actualitzeu el nucli.
Alguns nuclis d'enrutament recents han degradat el rendiment de l'encaminament a causa dels canvis del nucli en el codi d'encaminament començant amb l'eliminació de la memòria cau d'encaminament per motius de seguretat. Els nuclis recents fora de la distribució haurien de tenir pedaços que alleugin l'impacte d'aquests canvis en el rendiment i podrien oferir un rendiment millorat. - Desactiveu l'hiper threading (nuclis lògics).
- Editeu els paràmetres d'arrencada del nucli.
— Força iommu desactivat (intel_iommu=off o iommu=off) des de la línia d'arrencada del nucli tret que sigui necessari per a la virtualització
— Desactiveu la gestió d'energia: processor.max_cstates=1 idle=poll pcie_aspm=off - Limiteu el nombre de cues perquè siguin iguals al nombre de nuclis del sòcol local (12 en aquest example). ethtool -L ethX combinat 12
- Pin interrupcions només al sòcol local. set_irq_affinity -X local ethX O set_irq_affinity -X local ethX
NOTA
-X o -x es poden utilitzar segons la càrrega de treball. - Canvieu les mides dels anells Tx i Rx segons sigui necessari. Un valor més gran requereix més recursos, però pot proporcionar millors tarifes de reenviament. ethtool -G ethX rx 4096 tx 4096
- Desactiveu el GRO durant l'encaminament.
A causa d'un problema conegut del nucli, el GRO s'ha d'apagar durant l'encaminament/enviament. ethtool -K ethX gro off on ethX és la interfície Ethernet que cal modificar. - Desactiveu la moderació d'interrupcions adaptatives i establiu un valor estàtic. ethtool -C ethX adaptable-rx apagat adaptive-tx apagat ethtool -C ethX rx-usecs 64 tx-usecs 64
NOTA
Depenent del tipus de processador i càrrega de treball, els paràmetres de coalescència per a RX i TX es poden ajustar per millorar el rendiment (o menys pèrdua de fotogrames).
- Desactiveu el tallafoc. sudo systemctl desactiva firewalld sudo systemctl atura firewalld
- Activa el reenviament d'IP. sysctl -w net.ipv4.ip_forward=1
- Configureu valors màxims per a les mides de memòria intermèdia de socket de recepció i d'enviament. sysctl -w net.core.rmem_max=16777216 sysctl -w net.core.wmem_max=16777216
NOTA
Segons la càrrega de treball o el requisit, aquests valors es poden canviar des del valor predeterminat.
8.2 Baixa latència
- Desactiveu l'hiper thread (nuclis lògics).
- Assegureu-vos que el dispositiu de xarxa sigui local al numa core 0.
- Fixeu el punt de referència al nucli 0 mitjançant el conjunt de tasques -c 0.
- Desactiveu irqbalance mitjançant systemctl stop irqbalance o systemctl disable irqbalance
- Executeu l'script d'afinitat per distribuir-lo entre els nuclis. Proveu amb locals o tots.
- Desactiva la moderació d'interrupcions. ethtool -C ethX rx-usecs 0 tx-usecs 0 adaptive-rx off adaptable-tx off rxusecs- high 0
- Limiteu el nombre de cues per ser igual al nombre de nuclis del sòcol local (32 en aquest exempleample). ethtool -L ethX combinat 32
- Pin interrupcions només al sòcol local (script empaquetat amb la font del controlador i40e). set_irq_affinity -X local ethX
- Utilitzeu un punt de referència establert com netperf -t TCP_RR, netperf -t UDP_RR o NetPipe. netperf -t TCP_RR o netperf -t UDP_RR
- Fixeu el punt de referència a un sol nucli del node NUMA local. conjunt de tasques -c
Sèrie Intel ® Ethernet 700
Guia d'ajust del rendiment de Linux
desembre 2024
Doc. Núm.: 334019, Rev.: 1.2
Documents/Recursos
![]() |
Ajust del rendiment de Linux de la sèrie Intel Ethernet 700 [pdfGuia de l'usuari 334019, Ethernet 700 Series Linux Performance Tuning, Ethernet 700 Series, Linux Performance Tuning, Performance Tuning, Tuning |