Intel ® Ethernet 700 Series
Gabay sa Pag-tune ng Pagganap ng Linux
NEX Cloud Networking Group (NCNG)
Rev. 1.2
Disyembre 2024
Kasaysayan ng Pagbabago
Rebisyon | Petsa | Mga komento |
1.2 | Disyembre 2024 | · Nagdagdag ng Karagdagang Gabay sa Pamamahala ng Power. · Idinagdag ang Intel* Turbo Boost. · Idinagdag Network Device Backlog. · Idinagdag ang Platform-Specific na Configuration at Pag-tune. · Nagdagdag ng 4th Generation Intel* %eon* Scalable Processor. · Idinagdag ang AMD EPYC. · Nai-update na Suriin ang Mga Kakayahang Hardware ng System. · Nai-update na iPerf2. · Nai-update na iPerf3. · Nai-update na Tx/Rx Queue. · Nai-update na Interrupt Moderation. · Na-update na Laki ng Ring. · Na-update na Platform Tuning (i40e Non-Specific). · Na-update na Mga Setting ng BIOS. · Nai-update na C-State Control. · Nai-update na CPU Frequency Scaling. · Nai-update na Mga Setting ng Application. · Na-update na Mga Setting ng Operating System/Kernel. · Nai-update na IP Forwarding. · Na-update na Mababang Latency. |
Agosto 2023 | Ang mga pagbabago sa dokumentong ito ay nagpapahiwatig: · Nagdagdag ng Mga Kaugnay na Sanggunian. · Idinagdag Tiyaking Naglo-load nang Maayos ang DDP Package. · Idinagdag iPerf2. · Idinagdag iPerf3. · Nagdagdag ng netperf. · Nai-update na IRQ Affinity. · Nagdagdag ng Tx/Rx Queue. · Na-update na Laki ng Ring. · Nagdagdag ng Jumbo Frame. · Idinagdag ang Adapter Bonding. · Nagdagdag ng Intel svr-info Tool. |
|
1.0 | Marso 2016 | Paunang Paglabas (Intel Public). |
Panimula
Ang gabay na ito ay nilayon na magbigay ng gabay para sa pag-tune ng mga kapaligiran para sa pinakamainam na pagganap ng networking gamit ang isang Intel ® Ethernet 700 Series NICs sa mga Linux environment. Nakatuon ito sa hardware, driver, at mga kondisyon at setting ng operating system na maaaring mapabuti ang pagganap ng network. Dapat tandaan na ang pagganap ng networking ay maaaring maapektuhan ng anumang bilang ng mga impluwensya sa labas, tanging ang pinakakaraniwan at dramatiko sa mga ito ang nasasaklaw sa gabay na ito.
1.1 Mga Kaugnay na Sanggunian
- Gabay sa Gumagamit para sa lahat ng Intel ® Ethernet adapter at device, na sumusuporta sa Windows at Linux:
Gabay sa Gumagamit ng Mga Adapter at Mga Device ng Intel ® Ethernet - Teknikal na Datasheet:
Datasheet ng Intel ® Ethernet Controller X710/XXV710/XL710 - Kumpletuhin ang SW bundle para sa lahat ng produkto ng Intel ® Ethernet (i-download ang lahat ng driver, NVM, tool, atbp.):
Kumpletong Driver Pack ng Intel ® Ethernet Adapter - NVM (Non-Volatile Memory) Update Package:
Non-Volatile Memory (NVM) Update Utility para sa Intel ® Ethernet Network Adapter 700 Series - svr-info tool para sa Linux na kumukuha ng mga nauugnay na detalye ng hardware at software mula sa isang server: https://github.com/intel/svr-info
- Gabay sa Teknolohiya ng DDP:
Intel ® Ethernet 700 Series Dynamic Device Personalization (DDP) Technology Guide
Paunang Checklist
2.1 I-update ang Mga Bersyon ng Driver/ Firmware
Suriin ang mga bersyon ng driver/firmware gamit ang ethtool -i ethx.
I-update ang sumusunod kung kinakailangan:
- I-update ang driver ng 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 - I-update ang firmware
https: //downloadcenter.intel.com/download/24769/NVM-Update-Utility-for-Intel- Ethernet-ConvergedNetwork-Adapter-XL710-X710-Series
2.2 Basahin ang README
Tingnan kung may mga kilalang isyu at kunin ang pinakabagong mga tagubilin sa configuration mula sa README file kasama sa i40e source package.
2.3 Suriin Kung ang Iyong PCI Express (PCIe) Slot ay x8
Ang ilang mga puwang ng PCIe x8 ay aktwal na na-configure bilang mga puwang ng x4. Ang mga slot na ito ay may hindi sapat na bandwidth para sa buong line rate na may dual port at quad port na mga device. Bilang karagdagan, kung maglalagay ka ng adaptor na may kakayahang PCIe v3.0 sa isang puwang ng PCIe v2.x, hindi ka makakakuha ng buong bandwidth. Nakikita ng driver ng software device ang sitwasyong ito at isinusulat ang sumusunod na mensahe sa log ng system:
Ang PCI-Express bandwidth na magagamit para sa card na ito ay hindi sapat para sa pinakamainam na pagganap. Para sa pinakamainam na pagganap, kailangan ng x8 PCI-Express slot.
Kung mangyari ang error na ito, ilipat ang iyong adapter sa isang tunay na slot ng PCIe v3.0 x8 upang malutas ang isyu.
2.4 Suriin ang Mga Kakayahang Hardware ng System
Sa 10 Gbps, 25 Gbps, at 40 Gbps Ethernet, mayroong ilang minimum na kinakailangan sa CPU at system. Sa pangkalahatan, dapat sapat na ang modernong server class processor at pinakamainam na configuration ng memory para sa iyong platform, ngunit ang mga pangangailangan ay nag-iiba depende sa iyong workload. Ang lahat ng mga channel ng memorya ay dapat na mapuno at ang mode ng pagganap ng memorya ay dapat na pinagana sa BIOS. I-verify na ang iyong CPU at memory configuration ay may kakayahang suportahan ang antas ng pagganap ng network na kailangan mo para sa iyong workload.
TANDAAN
Ang XL710 ay isang 40 GbE controller. Ang 2 x 40 GbE adapter na gumagamit ng controller na ito ay hindi nilayon na maging isang 2 x 40 GbE ngunit isang 1 x 40 GbE na may aktibong back-up port. Kapag sinusubukang gumamit ng line-rate na trapiko na kinasasangkutan ng parehong port, ang panloob na switch ay puspos at ang pinagsamang bandwidth sa pagitan ng dalawang port ay limitado sa kabuuang SO Gbps.
2.4.1 Mga Parameter ng Kernel Boot
Kung ang Intel® Virtualization Technology para sa Directed I/O (Intel® VT-d) ay pinagana sa BIOS, inirerekomenda ng Intel na ang IOMMU ay nasa pass-through mode para sa pinakamainam na pagganap ng host network. Inaalis nito ang overhead ng DMA sa trapiko ng host habang pinapagana ang mga Virtual Machine (VM) na magkaroon pa rin ng mga benepisyo ng Intel® VT-d. Nagagawa ito sa pamamagitan ng pagdaragdag ng sumusunod na linya sa mga parameter ng kernel boot: fommu-pt.
2.5 Tiyaking Naglo-load nang Maayos ang DDP Package
Ang mga driver ng 140ea at 140eb base ay walang direktang suporta para sa Dynamic Device Personalization (DDP). Upang gamitin ang DDP na may 700 Series device, isang DDP profile maaaring ilapat sa application na testpmd.
Para sa mga detalye sa DDP profiles, at kung paano mag-apply ng DDP profile na may testpmd sa mga 700 Series device, sumangguni sa Intel® Ethernet 700 Series Dynamic Device Personalization (DDP) Technology Guide.
Upang i-verify kung ang isang DDP profile matagumpay na na-load:
testpmd> ddp makakuha ng listahan 0 Profile numero ay: 1
TANDAAN
Kung ang profile numero ay 0, walang DDP package na na-load. Kung sakaling magkaroon ng error sa pag-load ng package ng DDP, magde-default ang device sa safe mode at maraming feature ng performance ang hindi available. Kung may mga error na nauugnay sa paglo-load ng DDP package, magdudulot ito ng mga isyu sa performance. Para sa mga hakbang sa pag-troubleshoot, sumangguni sa Inte/* Ethernet 700 Series Dynamic Device Personalization (DDP) Technology Guide.
Baseline Performance Measurements at Tuning Methodology
3.1 Mga Benchmark ng Pagganap ng Network
Bago magsimula ng ehersisyo sa pag-tune, mahalagang magkaroon ng mahusay na pagsukat ng baseline ng pagganap ng iyong network. Karaniwan bilang karagdagan sa pagkuha ng paunang pagsukat ng pagganap ng iyong partikular na application/workload, magandang ideya na gumamit din ng karaniwang benchmark ng pagganap ng network upang i-verify na ang iyong network device ay nasa mabuting kalagayan.
Para sa solong pag-optimize ng system, ang netperf o iperf at NetPIPE ay lahat ng solidong opensource na libreng tool na nagbibigay-daan sa iyo na bigyang-diin ang isang koneksyon at masuri ang mga isyu sa pagganap.
Malakas ang Netperf para sa throughput at latency na pagsubok. Ang NetPIPE ay isang tool na partikular sa latency ngunit maaaring i-compile para sa anumang uri ng kapaligiran.
TANDAAN
Ang TCP_RR test sa netperf ay nagbabalik ng latency sa isang halaga ng mga transaksyon/seg. Isa itong round-trip na numero. Maaaring kalkulahin ang one-way latency gamit ang sumusunod na equation:
Latency(usec) = (1⁄2) / [Mga Transaksyon/seg] * 1,000,000
3.1.1 iPerf2
Inirerekomenda ng Intel ang iperf2 kaysa sa iperf3 para sa karamihan ng mga sitwasyon sa pag-benchmark dahil sa kadalian ng paggamit at suporta ng maraming thread sa isang instance ng application. Inirerekomenda ng Intel na tumakbo gamit ang opsyong -P na may 2-4 na thread para sa 25G na koneksyon at sa paligid ng 4-6 na thread para sa 40G na koneksyon.
- Upang magpatakbo ng uni-directional na trapiko mula sa kliyente patungo sa server: Utos ng server halample: iperf2 -s
Utos ng kliyente halample: iperf2 -c -P - Upang magpatakbo ng bi-directional na trapiko mula sa kliyente patungo sa server (at kabaliktaran): Utos ng server halample: iperf2 –s –p
Utos ng kliyente halample:
iperf2 -c -p -P -–full-duplex O
iperf2 -c -p -P –d
TANDAAN
Parehong ang –full-duplex at -d na opsyon sa iperf2 ay nagbibigay-daan sa user na magsagawa ng bidirectional testing. Gayunpaman, ang –full-duplex na opsyon ay partikular na nakatutok sa full duplex testing.
TANDAAN
Kapag sinusubukan ang iperf2 sa maraming port ng server, maaaring idagdag ang -d flag sa command ng server upang patakbuhin ang lahat ng session ng server sa background mula sa parehong terminal window. Ang -d flag ay maaari ding gamitin kapag ang server command ay naka-embed sa loob ng isang for-loop sa isang script.
TANDAAN
Kapag nagpapatakbo ng pagsubok sa throughput ng network na may iisang stream/thread (halample: P1), ang mga AMD processor ay maaaring hindi magbigay ng inaasahang throughput, partikular na ang mas mataas na bandwidth NICs (kung ang bilis ay >= 25G bandwidth). Bilang resulta, ang pag-pin ng application sa mga partikular na core ay kinakailangan upang makamit ang mas mataas na throughput. Tingnan ang Mga Setting ng Application sa pahina 22.
3.1.2 iPerf3
Kung ang iperf3 ay ginagamit, maraming mga pagkakataon ng application ang kinakailangan upang kumuha ng advantage ng mga multi-thread, RSS, at hardware na pila. Inirerekomenda ng Intel na tumakbo kasama ang 2-4 na session ng application para sa 25G na koneksyon at humigit-kumulang 4-6 na session para sa 40G na koneksyon. Ang bawat session ay dapat tumukoy ng natatanging halaga ng TCP port gamit ang -p na opsyon.
- Upang magpatakbo ng uni-directional na trapiko mula sa kliyente patungo sa server:
Utos ng server halample:
iperf3 -s -p
Utos ng kliyente halample:
iperf3 -c -p - Upang magpatakbo ng bi-directional na trapiko mula sa kliyente patungo sa server (at kabaliktaran):
Utos ng server halample:
iperf3 –s –p
Utos ng kliyente halample: iperf3 -c -p -P –-bidir - Upang magsimula ng maraming instance (thread) ng iperf3, ang rekomendasyon ay gumamit ng for-loop upang i-map ang mga thread sa mga TCP port at patakbuhin ang iperf3 sa background gamit ang & upang lumikha ng maraming proseso nang magkatulad.
Utos ng server halample, simulan ang 4 na mga thread: port = ""; para sa i sa {0..3}; gawin port=520$i; bash -c “iperf3 -s -p $port &”; tapos na; Utos ng kliyente halample, simulan ang 4 na mga thread - Ipadala ang pagsubok port = ""; para sa i sa {0..3}; gawin port=520$i; bash -c “iperf3 -c $serverIP -p $port &”; tapos na; Utos ng kliyente halample, simulan ang 4 na mga thread - Tumanggap ng pagsubok port = ""; para sa i sa {0..3}; gawin port=520$i; bash -c “iperf3 -R -c $serverIP -p $port &”; tapos na; Para sa mga 40G na koneksyon, dagdagan ang for-loop upang makagawa ng hanggang 6 na pagkakataon/thread.
TANDAAN
Kapag nagpapatakbo ng pagsubok sa throughput ng network na may iisang stream/thread (halample: P1), ang mga processor ng AMD ay maaaring hindi magbigay ng inaasahang throughput, lalo na ang mas mataas na bandwidth
Mga NIC (kung ang bilis ay >= 25G bandwidth). Bilang resulta, ang pag-pin ng application sa mga partikular na core ay kinakailangan upang makamit ang mas mataas na throughput. Tingnan ang Mga Setting ng Application sa pahina 22 at AMD EPYC sa pahina 26.
3.1.3 netperf
Ang tool na netperf ay mahusay na pagpipilian para sa parehong throughput at latency na pagsubok.
- Ang TCP_STREAM test sa netperf ay sumusukat sa throughput na kakayahan ng device. Utos ng server halample: netserver Client command halample: netperf -t TCP_STREAM -l 30 -H
- Ang TCP_RR test sa netperf ay nagbabalik ng latency sa halaga ng mga transaksyon/segundo. Isa itong round-trip na numero. Inirerekomenda na gamitin ang -T x,x na opsyon, kung ang x ay lokal na CPU sa device. Maaaring kalkulahin ang one-way latency gamit ang: Latency(usec)=(1⁄2)/ [Transactions/sec]*1,000,\ Server command example: netserver
Utos ng kliyente halample: netperf -t TCP_RR -l 30 -H -T x,x - Para magsimula ng maraming instance (threads) ng netperf, ang rekomendasyon ay gumamit ng for-loop para i-map ang mga thread sa mga TCP port at patakbuhin ang netperf sa background gamit ang & para gumawa ng maraming proseso nang magkatulad.
Utos ng server halample, simulan ang 8 thread:
port=""; para sa i sa {0..7}; gawin port=520$i; bash -c “netserver -L $serverIP -p $port &”; tapos na;
Utos ng kliyente halample, simulan ang 8 mga thread: port = ""; para sa i sa {0..7}; gawin port=520$i; bash -c “netperf -H $serverIP -p $port -t TCP_STREAM -l 30 &”; tapos na;
3.2 Paraan ng Pag-tune
Tumutok sa isang pagbabago sa pag-tune nang paisa-isa para malaman mo kung ano ang epekto ng bawat pagbabago sa iyong pagsubok. Kung mas metodo ka sa proseso ng pag-tune, mas madali itong matukoy at matugunan ang mga sanhi ng mga bottleneck sa pagganap.
Pag-tune ng Mga Setting ng Driver ng i40e
4.1 IRQ Affinity
Ang pag-configure ng IRQ affinity upang ang mga interrupt para sa iba't ibang network queues ay ma-affinitize sa iba't ibang CPU core ay maaaring magkaroon ng malaking epekto sa performance, partikular na ang multithread throughput tests.
Upang i-configure ang IRQ affinity, ihinto ang irqbalance at pagkatapos ay gamitin ang set_irq_affinity script mula sa i40e source package o manu-manong pin queues. I-disable ang user-space IRQ balancer para paganahin ang pagpi-pin ng queue:
- systemctl huwag paganahin ang irqbalance
- systemctl itigil ang irqbalance
Gamit ang set_irq_affinity script mula sa i40e source package (inirerekomenda): - Upang gamitin ang lahat ng mga core:
[path-to-i40epackage]/scripts/set_irq_affinity -X lahat ng ethX - Upang gumamit lamang ng mga core sa lokal na socket ng NUMA: [path-to-i40epackage]/scripts/set_irq_affinity -X local ethX
- Maaari ka ring pumili ng hanay ng mga core. Iwasan ang paggamit ng cpu0 dahil nagpapatakbo ito ng mga gawain sa timer. [path-to-i40epackage]/scripts/set_irq_affinity 1-2 ethX
TANDAAN
Ang affinity script ay nagbibigay-daan sa Transmit Packet Steering (XPS) bilang bahagi ng proseso ng pag-pin kapag ang -x na opsyon ay tinukoy. Kapag pinagana ang XPS, inirerekomenda ng Intel na huwag paganahin ang irqbalance, dahil ang kernel balancer na may XPS ay maaaring magdulot ng hindi inaasahang pagganap. Hindi pinapagana ng affinity script ang XPS kapag tinukoy ang -X na opsyon. Ang hindi pagpapagana sa XPS at pag-enable ng simetriko na mga pila ay kapaki-pakinabang para sa mga workload kung saan ang pinakamahusay na pagganap ay nakakamit kapag ang Tx at Rx na trapiko ay naserbisyuhan sa parehong (mga) pares ng pila.
Ang pag-configure ng simetriko na mga pila sa Linux ay nagsasangkot ng pag-tune ng mga parameter ng driver ng interface ng network upang paganahin ang simetriko na pagtanggap ng mga queues (Rx) at simetriko na pagpapadala ng mga pila (Tx) para sa mga suportadong network adapter.
TANDAAN
- Ang mga simetriko na pila ay isang advanced na feature sa networking, at hindi lahat ng 700 series na network adapter o driver ay sumusuporta sa kanila.
- Tiyaking mayroon kang kinakailangang suporta sa driver at hardware bago subukang i-configure ang mga simetriko na pila.
Upang i-configure ang simetriko na mga pila, sundin ang mga pangkalahatang hakbang na ito:
- I-edit ang Network Interface Configuration File: Gumamit ng text editor (para sa halample, vi, nano, o gedit) upang i-edit ang configuration ng interface ng network file. Ang file ay karaniwang matatagpuan sa ilalim ng /etc/sysconfig/network-scripts/ direktoryo at may pangalan tulad ng ifcfg-ethX, kung saan ang ethX ay ang pangalan ng iyong network interface.
- Magdagdag ng Symmetric Queue Parameter. Idagdag ang mga sumusunod na linya sa configuration ng interface ng network file: ETHTOOL_OPTS=”rx-queues 8 tx-queues 8″
- I-restart ang Network Service.
Pagkatapos gawin ang mga pagbabago, i-restart ang serbisyo ng network upang ilapat ang bagong configuration. sudo systemctl i-restart ang network
Manu-manong:
-
Hanapin ang mga processor na nakakabit sa bawat node gamit ang: numactl –hardware lscpu
-
Hanapin ang mga bit mask para sa bawat isa sa mga processor:
- Ipagpalagay na ang mga core 0-11 para sa node 0: [1,2,4,8,10,20,40,80,100,200,400,800]
- Hanapin ang mga IRQ na itinalaga sa port na itinalaga: grep ethX /proc/interrupts at tandaan ang mga halaga ng IRQ Para sa example, 181-192 para sa 12 vectors na na-load.
- I-echo ang halaga ng SMP affinity sa kaukulang IRQ entry. Tandaan na kailangan itong gawin para sa bawat IRQ entry: echo 1 > /proc/irq/181/smp_affinity echo 2 > /proc/irq/182/smp_affinity echo 4 > /proc/irq/183/smp_affinity Ipakita ang IRQ affinity:
- Upang ipakita ang IRQ affinity para sa lahat ng mga core: /scripts/set_irq_affinity -s ethX
- Upang ipakita lamang ang mga core sa lokal na socket ng NUMA: /scripts/set_irq_affinity -s local ethX
- Maaari ka ring pumili ng hanay ng mga core: /scripts/set_irq_affinity -s 40-0-8,16 ethX
TANDAAN
Sinusuportahan ng set_irq_affinity script ang -s flag sa i40e driver na bersyon 2.16.11 at mas bago.
4.2 Tx/Rx Queue
Ang default na bilang ng mga queues na pinagana para sa bawat Ethernet port ng driver sa pagsisimula ay katumbas ng kabuuang bilang ng mga CPU na available sa platform. Ito ay mahusay na gumagana para sa maraming mga platform at workload configuration. Gayunpaman, sa mga platform na may mataas na bilang ng core at/o mataas na densidad ng port ng Ethernet, ang pagsasaayos na ito ay maaaring magdulot ng pagtatalo sa mapagkukunan. Samakatuwid, maaaring kailanganin sa ilang mga kaso na baguhin ang default para sa bawat port sa system.
Ang default na bilang ng Tx/Rx queues ay maaaring mag-iba depende sa partikular na modelo at bersyon ng driver. Maaaring isaayos ang bilang ng mga pila gamit ang ethtool -L command na nakalista sa ibaba.
TANDAAN
Sa mga kasong ito, inirerekomenda ng Intel na bawasan mo ang default na bilang ng queue para sa bawat port sa hindi hihigit sa bilang ng mga CPU na available sa lokal na node ng NUMA sa adapter port. Sa ilang mga kaso, kapag sinusubukang balansehin ang mga mapagkukunan sa mga pagpapatupad ng mataas na bilang ng port, maaaring kailanganin pang bawasan ang bilang na ito.
Upang baguhin ang configuration ng queue:
Ang sumusunod na exampitinatakda ni le ang port sa 32 Tx/Rx queues: ethtool -L ethX pinagsamang 32
Exampang output:
ethtool -l ethX
Mga parameter ng channel para sa ethX: Mga pre-set na maximum:
RX: 96
TX: 96
Iba pa: 1
Pinagsama: 96
Kasalukuyang mga setting ng hardware:
RX: 0
TX: 0
Iba pa: 1
Pinagsama: 32
4.3 Interrupt Moderation
Naka-on bilang default ang adaptive interrupt moderation, at idinisenyo upang magbigay ng balanseng diskarte sa pagitan ng mababang paggamit ng CPU at mataas na pagganap. Gayunpaman, maaari mong subukang manu-manong i-tune ang mga setting ng interrupt upang umangkop sa iyong use case.
Ang hanay ng 0-235 microseconds ay nagbibigay ng epektibong hanay na 4,310 hanggang 250,000 interrupts bawat segundo. Ang halaga ng rx-μsecs-high ay maaaring itakda nang hiwalay sa rx-μsecs at tx-μsecs sa parehong ethtool command, at independiyente rin sa adaptive interrupt moderation algorithm. Ang pinagbabatayan na hardware ay sumusuporta sa granularity sa 2microsecond na pagitan, kaya ang mga katabing value ay maaaring magresulta sa parehong interrupt rate.
- Para i-off ang adaptive interrupt moderation: ethtool -C ethX adaptive-rx off adaptive-tx off
- Para i-on ang adaptive interrupt moderation: ethtool -C ethX adaptive-rx on adaptive-tx on
Ang isang magandang lugar upang magsimula para sa pangkalahatang pag-tune ay 84 μs, o ~12000 interrupts/s. Kung nakikita mo ang mga rx_dropped na counter ay tumatakbo sa panahon ng trapiko (gamit ang ethtool -S ethX) kung gayon malamang na mayroon kang masyadong mabagal na CPU, hindi sapat ang mga buffer mula sa laki ng singsing ng adapter (ethtool -G) upang hawakan ang mga packet sa loob ng 84 μs o mababa sa isang interrupt rate.
- Para itakda ang interrupt moderation sa isang nakapirming interrupt rate na 84 μs sa pagitan ng mga interrupt (12000 interrupts/s): ethtool -C ethX adaptive-rx off adaptive-tx off rx-usecs 84 tx-usecs 84 Ang susunod na value na susubukin, kung hindi ka pa maxed out sa CPU utilization, ay 62 Gumagamit ito ng mas maraming CPU, ngunit mas mabilis itong buffer ng mga serbisyo, at nangangailangan ng mas kaunting mga deskriptor (laki ng singsing, ethtool -G).
- Upang itakda ang interrupt moderation sa fixed interrupt rate na 62 usecs sa pagitan ng mga interrupt (16000 interrupts/s). ethtool -C ethX adaptive-rx off adaptive-tx off rx-usecs 62 tx-usecs 62
Kung tumaas ang mga counter ng rx_dropped sa panahon ng trapiko (gamit ang ethtool -S ethX), malamang na masyadong mabagal ang iyong CPU, hindi sapat ang mga buffer mula sa laki ng singsing ng adapter (ethtool -G), o masyadong mababa sa rate ng interrupt. Kung hindi ka maxed out sa paggamit ng CPU, maaari mong taasan ang interrupt rate sa pamamagitan ng pagpapababa sa halaga ng ITR. Gumagamit ito ng mas maraming CPU, ngunit mas mabilis na buffer ang mga serbisyo, at nangangailangan ng mas kaunting mga deskriptor (laki ng singsing, ethtool -G).
Kung ang iyong CPU ay nasa 100%, kung gayon ang pagtaas ng rate ng pagkagambala ay hindi pinapayuhan. Sa ilang partikular na sitwasyon gaya ng workload na nakatali sa CPU, maaaring gusto mong pataasin ang halaga ng μs upang paganahin ang mas maraming oras ng CPU para sa iba pang mga application.
Kung kailangan mo ng mababang pagganap ng latency at/o may maraming CPU na ilalaan sa pagpoproseso ng network, maaari mong ganap na i-disable ang interrupt moderation, na nagbibigay-daan sa mga interrupt na gumana nang mabilis hangga't maaari. - Upang huwag paganahin ang interrupt moderation ethtool -C ethX adaptive-rx off adaptive-tx off rx-usecs 0 tx-usecs 0
TANDAAN
Kapag tumatakbo nang hindi pinagana ang interrupt moderation, maaaring napakataas ng interrupt rate sa bawat pila. Pag-isipang isama ang rx-usec-high na parameter para magtakda ng mas mataas na limitasyon sa rate ng interrupt. Hindi pinapagana ng sumusunod na command ang adaptive interrupt moderation at nagbibigay-daan sa maximum na 5 microseconds bago isaad na kumpleto na ang pagtanggap o pagpapadala. Sa halip na magresulta sa kasing dami ng 200,000 interrupts bawat segundo, nililimitahan nito ang kabuuang interrupts bawat segundo sa 50,000 sa pamamagitan ng rx-usec-high na parameter. # ethtool -C ethX adaptive-rx off adaptive-tx off rx-usecs-high 20 rx-usecs 5 txusecs 5 Subukang isaayos ang transmit/receive/high-priority coalescing timer na mas mataas (80/100/150/200) o mas mababa (25/20/10/5) para mahanap ang pinakamainam na halaga para sa trabaho.
4.4 Sukat ng singsing
Kung nakakakita ka ng mga rx_dropped na counter sa ethtool -S ethX (rx_dropped, rx_dropped.nic), o pinaghihinalaang presyon ng cache na may maraming pila na aktibo, maaari mong subukang ayusin ang laki ng singsing mula sa default na halaga. Ang default na halaga ay 512, ang max ay 4096.
- Upang suriin ang kasalukuyang mga halaga: ethtool -g ethX
Kung pinaghihinalaan na ang kakulangan ng buffering ay nagdudulot ng mga pagbaba sa kasalukuyang rate ng interrupt, maaari mong subukan muna ang maximum, pagkatapos ay ang minimum, pagkatapos ay magpatuloy sa isang binary na paghahanap hanggang sa makita mo ang pinakamainam na pagganap.
Kung pinaghihinalaang presyon ng cache (maraming queues ang aktibo) ang pagbabawas ng mga buffer mula sa default ay makakatulong sa Intel ® Data Direct I/O (Intel ® DDIO) na gumana nang mas mahusay. Inirerekomenda ng Intel na subukan ang 128 o 256 bawat pila, dahil alam na ang pagtaas ng interrupt rate sa pamamagitan ng ethtool -C ay maaaring kailanganin upang maiwasan ang pagtaas ng rx_dropped. - Upang itakda ang laki ng singsing sa nakapirming halaga: ethtool -G eth12 rx 256 tx 256
TANDAAN
Para ayusin ang mga Rx packet drop na natagpuan gamit ang ethtool -S ethX|grep drop, isaalang-alang ang pagtaas ng laki ng singsing sa 4096. Mag-eksperimento upang mahanap ang pinakamahusay na setting para sa workload ngunit mag-ingat sa labis na paggamit ng memory na may mas mataas na halaga.
4.5 Kontrol sa Daloy
Ang kontrol sa daloy ng Layer 2 ay maaaring makaapekto nang malaki sa pagganap ng TCP at inirerekomendang i-disable para sa karamihan ng mga workload. Ang isang potensyal na pagbubukod ay mabilis na trapiko kung saan ang mga pagsabog ay hindi mahaba sa tagal.
Ang kontrol sa daloy ay hindi pinagana bilang default.
- Upang paganahin ang kontrol ng daloy: ethtool -A ethX rx on tx on
- Upang huwag paganahin ang kontrol ng daloy: ethtool -A ethX rx off tx off
TANDAAN
Dapat ay mayroon kang kasosyo sa link na may kakayahang kontrol sa daloy upang matagumpay na paganahin ang kontrol ng daloy.
4.6 Jumbo Frame
Kapag ang inaasahang kapaligiran ng trapiko ay binubuo ng malalaking bloke ng data na inililipat, maaaring maging kapaki-pakinabang na paganahin ang tampok na jumbo frame. Ang suporta sa Jumbo Frames ay pinagana sa pamamagitan ng pagpapalit ng Maximum Transmission Unit (MTU) sa isang value na mas malaki kaysa sa default na value na 1500. Ito ay nagpapahintulot sa device na maglipat ng data sa mas malalaking packet sa loob ng network environment. Maaaring mapabuti ng setting na ito ang throughput at mabawasan ang paggamit ng CPU para sa malalaking I/O workload. Gayunpaman, maaari itong makaapekto sa maliit na packet o latency-sensitive na workload.
TANDAAN
Ang mga Jumbo frame o mas malaking setting ng MTU ay dapat na maayos na na-configure sa iyong network environment.
Gamitin ang ifconfig command para dagdagan ang laki ng MTU. Para kay example, ipasok ang sumusunod, kung saan ay ang numero ng interface: ifconfig mtu 9000 pataas
Bilang kahalili, maaari mong gamitin ang ip command tulad ng sumusunod: ip link set mtu 9000 dev ip link set up dev
Pag-tune ng Platform (i40e Non-Specific)
5.1 Mga Setting ng BIOS
- I-enable ang Intel® VT-d para sa mga virtualization workload.
- Ang hyper-threading (mga lohikal na processor) ay maaaring makaapekto sa pagganap. Eksperimento ito sa on o off para sa iyong workload.
- Pinapayagan ng Intel® Turbo Boost ang mga core ng CPU na gumana sa mas mataas na frequency kaysa sa base frequency ng CPU. Ang pagpapagana ng Intel® Turbo Boost ay maaaring mapabuti ang pagganap para sa maraming workload ngunit kumokonsumo ng higit na lakas upang panatilihin ang mga core sa mas mataas na dalas. Mag-eksperimento sa Turbo Boost off/on para sa iyong workload.
TANDAAN
Ang mga turbo frequency ay hindi ginagarantiyahan kung ang platform ay nakakaranas ng mataas na pangkalahatang paggamit ng CPU. Ang mas mataas na core turbo frequency ay nababawasan habang tumataas ang pangkalahatang paggamit ng CPU.
5.2 Pamamahala ng Kapangyarihan
Maaaring makaapekto sa performance ang pamamahala ng kuryente, lalo na sa mga low latency na workload. Kung ang pagganap ay isang mas mataas na priyoridad kaysa sa pagpapababa ng konsumo ng kuryente, inirerekomenda ng Intel na mag-eksperimento ka sa paglilimita sa mga epekto ng pamamahala ng kuryente. Mayroong maraming iba't ibang mga paraan upang limitahan ang pamamahala ng kapangyarihan, sa pamamagitan ng mga tool sa operating system, mga setting ng BIOS, at mga parameter ng kernel boot. Piliin ang pinakamahusay na paraan at antas na angkop sa iyong kapaligiran.
5.2.1 C-State Control
Ang paglilimita sa pagpasok ng C-state sa CO o C1 ay nagpapabuti sa pagganap at nagpapataas ng paggamit ng kuryente.
Ang pag-disable sa pagpasok ng estado ng CPU Package C6 ay maaaring mapabuti ang pagganap ng network. Gayunpaman, pinapataas nito ang paggamit ng kuryente.
Available ang mga sumusunod na opsyon:
- Dynamic na kontrolin ang entry ng C-state:
Bukas
/dev/cpu_dma_latency at isulat ang maximum na pinapayagang latency dito.
TANDAAN
Mayroong isang maliit na programa na tinatawag na cpudmalatency.c na maaaring ma-download mula sa open source na komunidad, pinagsama-sama, at tumakbo mula sa command line upang gawin ito nang eksakto.
Ang sumusunod na exampAng le ay nagbibigay-daan sa limang μs ng wake time, at sa gayon ay nagbibigay-daan sa C1 entry: cpudmalatency 5 &
- Limitahan ang maximum na C-state sa mga setting ng kernel boot:
Para sa mga Intel CPU: intel_idle.max_cstates=1
Para sa mga hindi Intel na CPU: processor.max_cstates=1 - Gamitin ang cpupower command para suriin at i-disable ang CPU C6 state: Check: cpupower monitor o cpupower idle-info
Huwag paganahin ang C6: cpupower idle-set -d3 o
Huwag paganahin ang C-States: cpupower idle-set -D0
Mga Tala:
- I-disable ang mga C-state sa CPU kung ang server ay may Intel® 4th Gen Intel® Xeon® Scalable Processor(s). Kapag naka-enable o naka-disable ang Hyper Threading, pinipigilan ng hindi pagpapagana ng mga idle state (-D0) ang mga core na pumasok sa mga low-power na estado sa mga panahon ng idle at binabawasan ang latency para sa paglipat ng CPU sa pagitan ng idle at aktibong estado.
- Ang pamamahala ng kapangyarihan ng Intel® 4th Gen Intel® Xeon® Scalable Processor ay lubhang agresibo. Upang maiwasan ang pagpasok ng mga core sa mga low-power na estado, subukang bawasan ang bilang ng mga core na ginagamit upang panatilihing gising ang mga ito nang mas matagal (ethtool -L pinagsama-sama ). Gayundin, mag-bind interrupts sa mga partikular na core gamit ang set irq affinity (madalas na may -x local o listahan ng mga CPU core), at tiyaking gumagana ang workload sa parehong mga core na may taskset o numactl. Pinapabuti nito ang performance sa pamamagitan ng pagpapanatiling aktibo ng mga core at pag-optimize ng interrupt handling.
Paganahin ang C6:
cpupower idle-set -d3
Paganahin ang C-States:
cpupower idle-set -E
- Ang isa pang paraan ay ang paggamit ng nakatutok na tool (kasama sa maraming distribusyon ng Linux) upang magtakda ng isang pro performancefile. Ang mga profiles baguhin ang ilang mga setting ng OS na maaaring makaapekto sa pagganap sa maraming mga application. Napag-alaman na ang network-throughput profile nagbibigay ng pagpapabuti sa karamihan ng mga workload.
Suriin:
nakatutok-adm aktibo
Itakda:
tuned-adm profile network-throughput
TANDAAN
Ang nakatutok na serbisyo ay dapat na tumatakbo para sa mga utos sa itaas. Upang suriin/i-restart, nakatutok: systemctl status tuned systemctl restart tuned
Maaari mo ring hindi payagan ang anumang C-state entry sa pamamagitan ng pagdaragdag ng sumusunod sa kernel boot line:
idle=poll - Limitahan ang C-state sa pamamagitan ng mga setting ng BIOS power management ng system, na maaaring may performance profile magagamit.
Ang mga tool tulad ng turbostat o x86_energy_perf_policy ay maaaring gamitin upang suriin o itakda ang mga setting ng pamamahala ng kuryente.
5.2.2 PCIe Power Management
Ang Active-State Power Management (ASPM) ay nagbibigay-daan sa mas mababang power state para sa mga link ng PCIe kapag hindi ito aktibong ginagamit. Maaari itong magdulot ng mas mataas na latency sa mga PCIe network device, kaya inirerekomenda ng Intel na huwag paganahin ang ASPM para sa mga workload na sensitibo sa latency. Huwag paganahin ang ASPM sa pamamagitan ng pagdaragdag ng sumusunod sa kernel boot line: pcie_aspm=off
5.2.3 Pag-scale ng Dalas ng CPU
Ang CPU frequency scaling (o CPU speed scaling) ay isang Linux power management technique kung saan ang bilis ng orasan ng system ay agad-agad na inaayos upang makatipid ng kuryente at init. Tulad ng mga C-state, maaari itong magdulot ng hindi gustong latency sa mga koneksyon sa network.
Magagamit din ang cpupower tool para suriin at baguhin ang mga default at limitasyon ng pagganap ng CPU:
- Suriin: cpupower monitor o
- Itakda ang mga CPU sa performance mode: cpupower frequency-set -g performance
TANDAAN
Ang mga pagbabago sa mga limitasyon sa dalas ng CPU ay maaaring magkaroon ng epekto sa maraming workload at maaaring hindi paganahin ang iba pang mga feature, gaya ng CPU turbo mode.
Upang i-disable ang CPU frequency scaling, i-disable ang CPU power service sa pamamagitan ng mga sumusunod na command:
systemctl ihinto ang cpupower.service
systemctl huwag paganahin ang cpupower.service
5.2.4 Karagdagang Gabay sa Pamamahala ng Power
Ang mga karagdagang detalye ay ibinigay sa mataas na antas na itoview ng marami sa mga feature ng power management sa 3rd Generation Intel® Xeon® Scalable processors, pati na rin ang gabay sa kung paano maisasama ang mga feature na ito sa antas ng platform: https://networkbuilders.intel.com/solutionslibrary/power-management-technologyoverview-technology-guide
5.3 Intel® Turbo Boost
Pinapabilis ng Intel® Turbo Boost ang processor kapag kinakailangan ngunit maaaring kumonsumo ng karagdagang kapangyarihan. Ang pag-off sa Turbo Boost ay nagpapanatili sa processor sa isang steady speed, na nagbibigay sa iyo ng pare-parehong antas ng performance para sa mga partikular na workload.
5.4 Mga Firewall
Ang mga firewall ay maaaring makaapekto sa pagganap, lalo na sa pagganap ng latency.
Huwag paganahin ang iptables/firewalld kung hindi kinakailangan.
5.5 Mga Setting ng Application
Kadalasan ang isang solong thread (na tumutugma sa isang solong network queue) ay hindi sapat upang makamit ang maximum na bandwidth. Ang ilang mga arkitektura ng platform, tulad ng AMD, ay may posibilidad na mag-drop ng mas maraming Rx packet na may isang thread kumpara sa mga platform na may mga processor na nakabase sa Intel.
Isaalang-alang ang paggamit ng mga tool tulad ng taskset o numactl para i-pin ang mga application sa NUMA node o mga CPU core na lokal sa network device. Para sa ilang mga workload tulad ng storage I/O, ang paglipat ng application sa isang hindi lokal na node ay nagbibigay ng benepisyo.
Mag-eksperimento sa pagtaas ng bilang ng mga thread na ginagamit ng iyong aplikasyon kung maaari.
5.6 Bersyon ng Kernel
Karamihan sa mga modernong in-box kernel ay makatwirang na-optimize para sa pagganap ngunit, depende sa iyong kaso ng paggamit, ang pag-update ng kernel ay maaaring magbigay ng pinahusay na pagganap. Ang pag-download ng source ay nagbibigay-daan din sa iyo na paganahin/paganahin ang ilang partikular na feature bago buuin ang kernel.
5.7 Mga Setting ng Operating System/Kernel
Kumonsulta sa mga gabay sa pag-tune ng operating system, gaya ng Red Hat Enterprise Linux Network Performance Tuning Guide, para sa higit pang insight sa pangkalahatang pag-tune ng operating system.
Ang ilang karaniwang mga parameter upang ibagay ay nakalista sa sumusunod na talahanayan. Tandaan na ang mga ito ay iminumungkahi lamang na mga panimulang punto, at ang pagpapalit sa mga ito mula sa mga default ay maaaring magpalaki sa mga mapagkukunang ginamit sa system. Bagama't ang pagtaas ng mga halaga ay maaaring makatulong sa pagpapabuti ng pagganap, kinakailangan na mag-eksperimento sa iba't ibang mga halaga upang matukoy kung ano ang pinakamahusay na gumagana para sa isang partikular na sistema, workload at uri ng trapiko.
Ang mga parameter ng kernel ay maaaring i-configure gamit ang sysctl utility sa Linux tulad ng ipinahiwatig sa ibaba.
Upang view ang mga default na halaga para sa rmem at wmem sa system:
sysctl net.core.rmem_default
sysctl net.core.wmem_default
Itakda ang mga halaga sa max (16 MB):
sysctl -w net.core.rmem_max=16777216
sysctl -w net.core.wmem_max=16777216
Ang mga laki ng socket buffer, na kilala rin bilang receive buffer (rmem) at transmit buffer (wmem), ay mga parameter ng system na tumutukoy sa dami ng memory na nakalaan para sa papasok at papalabas na trapiko sa network.
Ang pagpapatakbo ng sysctl nang walang -w argument ay naglilista ng parameter kasama ang kasalukuyang setting nito.
Setting ng Stack | Paglalarawan |
net.core.rmem_default | Default na Receive Window Size |
net.core.wmem_default | Default na Laki ng Window ng Pagpapadala |
net.core.rmem_max | Pinakamataas na Laki ng Window ng Pagtanggap |
net.core.wmem_max | Pinakamataas na Laki ng Window ng Pagpapadala |
net.core.optmem_max | Maximum Option Memory Buffers |
net.core.netdev_max_backlog | Backlog ng mga hindi naprosesong packet bago magsimulang mag-drop ang kernel |
net.ipv4.tcp_rmem | Memory reserver para sa TCP read buffer |
net.ipv4.tcp_wmem | Memory reserver para sa TCP send buffers |
Ang kernel, network stack, memory handler, CPU speed, at power management parameter ay maaaring magkaroon ng malaking epekto sa performance ng network. Ang isang karaniwang rekomendasyon ay mag-apply sa network throughput profile gamit ang nakatutok na utos. Binabago nito ang ilang mga setting ng OS upang magbigay ng kagustuhan sa mga application sa networking.
Suriin:
nakatutok-adm aktibo
Itakda:
tuned-adm profile network-throughput
5.8 Backlog ng Network Device
Nakakatulong ang feature na ito na mapabuti ang performance ng network sa pamamagitan ng epektibong pamamahala sa papasok na trapiko, pagbabawas ng packet loss, pagbaba ng latency, at pagpapalakas ng throughput. Ito ay humahantong sa isang mas mahusay na karanasan ng user at mas mabilis na tugon ng system.
Bilang default, ito ay pinagana sa karamihan ng mga operating system ng Linux. Upang suriin ang default na halaga:
sysctl net.core.netdev_max_backlog
Ang maximum na halaga para sa netdev_max_backlog ay maaaring mag-iba depende sa mga salik tulad ng bersyon ng kernel, hardware, memorya, at workload. Sa maraming mga kaso, ang 8192 ay nakikita bilang isang magandang halaga. sysctl -w net.core.netdev_max_backlog=8192
5.9 Mga Configuration at Pag-tune na Partikular sa Platform
5.9.1 4th Generation Intel® Xeon® Scalable Processor
Ang power management ng Intel® 4th Generation Intel® Xeon® Scalable processor ay lubhang agresibo kumpara sa 3rd Generation Intel® Xeon® Scalable processors. Upang maiwasang makapasok ang mga core sa mga low-power na estado, subukang bawasan ang bilang ng mga core na ginagamit upang panatilihing gising ang mga ito nang mas matagal.
Inirerekomendang Mga Setting ng Bios para sa Pinakamataas na Pagganap
- I-enable/disable ang hyper-threading (batay sa kinakailangan sa workload at mga layunin sa pagganap) sa CPU.
- Itakda ang system profile sa Pagganap para sa pinakamataas na pagganap.
TANDAAN
Nagreresulta ito sa mas mataas na pagkonsumo ng kuryente - Itakda ang CPU power management sa Maximum Performance para unahin ang maximum na performance ng CPU kaysa power efficiency.
- Paganahin ang Turbo Boost. Ang hindi pagpapagana ng Turbo Boost sa mga setting ng BIOS ng system ay karaniwang pinipigilan ang CPU mula sa dynamic na pagtaas ng bilis ng orasan nito nang higit sa base frequency nito.
- TANDAAN
Ang hindi pagpapagana ng Turbo Boost ay maaaring angkop para sa ilang partikular na sitwasyon ng paggamit kung saan ang pare-parehong performance, power efficiency, o thermal management ay inuuna kaysa sa maximum na performance. - I-off ang tampok na Single Root I/O Virtualization (SR-IOV), kung ang system ay hindi gumagamit ng mga teknolohiya ng virtualization.
- Huwag paganahin ang mga C-state upang turuan ang CPU na manatiling aktibo at maiwasan ang pagpasok ng mas malalim na mga idle state.
- Huwag paganahin ang C1E, upang matiyak na ang CPU ay nananatiling aktibo at hindi pumasok sa C1E na idle state.
- Itakda ang uncore frequency sa maximum para turuan ang system na gumana sa pinakamataas na available na frequency.
- Sa mga platform ng Dell, itakda ang Multiple APIC Description Table (MADT) core emulation sa Linear (o Round-Robin depende sa BIOS) para magbigay ng malinaw at predictable na pagmamapa ng mga CPU core.
Inirerekomendang OS Level Tunings para sa Optimized Performance
- Itakda ang CPU frequency scaling governor sa performance. cpupower frequency-set -g performance cpupower frequency-info
- Huwag paganahin ang C-States. cpupower idle-set -D0
- Itakda ang mga buffer ng core Rx (rmem) at Tx (wmem) sa maximum na halaga. sysctl -w net.core.rmem_max=16777216 sysctl -w net.core.wmem_max=16777216
- Itakda ang backlog ng network device. sysctl -w net.core.netdev_max_backlog=8192
- Itakda ang nakatutok profile (nakadepende ang workload para sa throughput/latency).
tuned-adm profile network-throughput
Mga Inirerekomendang Pag-tune ng Antas ng Adapter para sa Na-optimize na Pagganap
- Limitahan ang bilang ng mga pila na gagamitin para sa trapiko ng application. Gamitin ang pinakamababang bilang ng mga pila na kinakailangan upang mapanatiling aktibo ang nauugnay na mga core ng CPU upang maiwasan ang mga ito na makapasok sa mas malalalim na idle states (adjust para sa workload): ethtool -L pinagsama 32
- Itakda ang mga rate ng interrupt moderation. ethtool -C adaptive-rx off adaptive-tx off rx-usecs-high 50 rx-usecs 50 tx-usecs 50
Subukang isaayos ang transmit/receive/high-priority coalescing timer nang mas mataas (80/100/150/200) o mas mababa (25/20/10/5) para mahanap ang pinakamainam na halaga para sa workload. - Itakda ang mga laki ng singsing na Rx/Tx. ethtool -G rx 4096 tx 4096
TANDAAN
Kung nakikita mo ang Rx packet na bumaba na may ethtool -S| grep drop, subukang bawasan ang laki ng singsing sa <4096. Subukang hanapin ang pinakamainam na halaga para sa workload kung saan hindi nahuhulog ang mga packet. - Itakda ang IRQ Affinity. Gumamit ng mga core na lokal sa NIC, o partikular na core mapping (kung saan ang # core ay katumbas ng bilang ng mga queues na itinakda sa 1 sa pahina 26. systemctl stop irqbalance set_irq_affinity -X local O set_irq_affinity -X
5.9.2 AMD EPYC
Ang mga processor ng AMD EPYC ay makapangyarihang mga CPU na ginawa para sa mga server at data center, na binuo sa Zen architecture ng AMD. Ang mga setting sa ibaba ay mula sa ika-4 na henerasyong serye ng EPYC ng AMD.
Inirerekomendang Mga Setting ng BIOS para sa Pinakamataas na Pagganap
- Paganahin ang custom na mode upang payagan ang mga user na ayusin ang pagganap ng CPU, pagkonsumo ng kuryente, at iba pang mga setting. Nakakatulong ito sa pag-fine-tune ng system para sa pinakamahusay na balanse sa pagitan ng performance at energy efficiency.
- Paganahin ang pagpapalakas ng pangunahing pagganap upang payagan ang CPU na awtomatikong pataasin ang bilis nito upang mahawakan ang mas masinsinang mga gawain, pagpapabuti ng pangkalahatang pagganap.
- Huwag paganahin ang pandaigdigang kontrol ng C-state, upang pigilan ang CPU na pumasok sa mas malalim na power saving states na kilala bilang C-states, na maaaring mapanatili ang pagiging tumutugon.
TANDAAN
Ang hindi pagpapagana sa mga C-state ay maaaring magdulot ng karagdagang pagkonsumo ng kuryente at magpapataas ng thermal temperature. Subaybayan ang pareho para sa workload. - I-enable/i-disable ang Simultaneous Multithreading (SMT) sa CPU, batay sa kinakailangan sa workload at mga layunin sa performance. Ang SMT ay katumbas ng Hyper Threading sa mga Intel CPU.
TANDAAN
Para sa na-optimize na pagganap, sumangguni sa Pag-tune ng i40e Driver Settings sa pahina 13 at Platform Tuning (i40e Non-Specific) sa pahina 19 para sa inirerekomendang OS at adapter level tuning.
Adapter Bonding
Ang Linux bonding ay isang makapangyarihang feature na maaaring makabuluhang mapabuti ang pagganap ng network, redundancy, at fault tolerance sa mga kapaligiran ng server. Gayunpaman, mahalagang tandaan na nangangailangan ito ng katugmang hardware ng network at wastong pagsasaayos sa parehong server at switch upang gumana nang maayos.
Binibigyang-daan ka ng bonding driver sa Linux na pagsama-samahin ang maramihang mga pisikal na interface ng network sa isang bonded na interface. Lumilitaw ang bonded interface na ito bilang isang solong virtual network interface sa operating system at mga application.
TANDAAN
Ang bono ay isang lohikal na interface, kaya hindi posibleng direktang itakda ang affinity ng CPU sa interface ng bono (para sa halample, bond0). Ibig sabihin, wala itong direktang kontrol sa interrupt handling o CPU affinity. Dapat na i-configure ang affinity ng CPU para sa mga pinagbabatayan na interface na bahagi ng bond.
Ang pagbubuklod ay nagbibigay ng ilang mga mode ng operasyon, bawat isa ay may sariling katangian.
Mode | Uri |
0 | Round Robin |
1 | Aktibong Backup |
2 | XOR |
3 | I-broadcast |
4 | LACP |
5 | Ipadala ang Load Balance |
6 | Adaptive Load Balance |
Mayroong iba't ibang mga paraan upang lumikha ng isang bonding sa Linux. Ang isa sa mga pinakakaraniwang pamamaraan ay ang paggamit ng pagsasaayos ng network files (para sa halample, /etc/network/ interface o /etc/sysconfig/network-scripts/ifcfg-bondX).
Configuration Gamit ang Network Configuration Files
Ang mga sumusunod na hakbang ay lumilikha ng pagbubuklod sa pamamagitan ng pagsasaayos ng network files.
- Pumili ng dalawa o higit pang NIC port para sa bonding (para sa halample, ethX at ethY)
- Buksan ang NIC Configuration Files sa ilalim ng /etc/sysconfig/network-scripts/ para sa kinakailangang NIC Interface (para sa example, vi ifcfg-ethX at vi ifcfg-ethY) at idugtong ang sumusunod na teksto:
MASTER=bondN [Tandaan: Ang N ay isang integer upang banggitin ang numero ng bono.] SLAVE=oo - Gumawa ng script ng bond network file gamit ang vi /etc/sysconfig/networkscripts/ifcfg-bondN at ipasok ang sumusunod na text:
DEVICE=bondN [Tandaan: Ang N ay isang integer upang banggitin ang numero ng bono] ONBOOT=oo USERCTL=no BOOTPROTO=dhcp (o) wala
IPADDR=200.20.2.4 [kinakailangan kung BOOTPROTO=wala] NETMASK=255.255.255.0 [kinakailangan kung BOOTPROTO=wala] NETWORK=200.20.2.0 [kinakailangan kung BOOTPROTO=wala] BROADCAST=200.20.2.255. BONDING_OPTS=”mode=1 miimon=100″
TANDAAN
Ang mode ay maaaring maging anumang integer mula 0 hanggang 6 batay sa kinakailangan. - I-restart ang network services gamit ang service network restart o systemctl restart NetworkManager.service
Pag-troubleshoot ng Performance
7.1 Paggamit ng CPU
Suriin ang paggamit ng CPU sa bawat core habang tumatakbo ang workload.
Tandaan na ang paggamit sa bawat core ay mas may kaugnayan sa pagganap kaysa sa pangkalahatang paggamit ng CPU dahil nagbibigay ito ng ideya ng paggamit ng CPU sa bawat network queue. Kung mayroon ka lamang ilang mga thread na nagpapatakbo ng trapiko sa network, maaaring mayroon ka lamang ng ilang mga core na ginagamit. Gayunpaman, kung nasa 100% ang mga core na iyon, malamang na limitado ang throughput ng iyong network ng paggamit ng CPU at oras na para gawin ang sumusunod:
- I-tune ang IRQ moderation/laki ng singsing bilang nakadetalye sa Interrupt Moderation.
- Palakihin ang bilang ng mga thread ng application upang maikalat ang pag-load ng CPU sa higit pang mga core. Kung ang lahat ng mga core ay tumatakbo sa 100% kung gayon ang iyong application ay maaaring nakatali sa CPU sa halip na nakagapos sa network.
Mga karaniwang magagamit na tool:
- itaas
— Pindutin ang 1 upang palawakin ang listahan ng mga CPU at tingnan kung alin ang mga ginagamit.
— Pansinin ang antas ng paggamit.
— Pansinin kung aling mga proseso ang nakalista bilang pinakaaktibo (itaas ng listahan). - mpstat
Ang sumusunod na exampAng command line ay sinubukan sa Red Hat Enterprise Linux 7.x.
Ipinapakita nito ang paggamit ng CPU sa bawat core (sa pamamagitan ng paghahanap ng kabuuang porsyento na walang ginagawa at pagbabawas mula sa 100) at hina-highlight ang mga halagang higit sa 80% sa pula. mpstat -P LAHAT 1 1 | grep -v Karaniwan | buntot -n +5 | ulo -n -1 | awk '{ print (100-$13)}' | egrep -color=always '[^\.][8-9][0-9][\.]?.*|^[8-9][0-9][\.]?.*| 100|' | hanay - perf top Hanapin kung saan ginugugol ang mga cycle.
7.2 i40e Counter
Ang i40e driver ay nagbibigay ng mahabang listahan ng mga counter para sa interface debug at pagsubaybay sa pamamagitan ng ethtool -S ethX command. Makakatulong na panoorin ang output habang tumatakbo ang workload at/o ihambing ang mga counter value bago at pagkatapos ng workload run.
- Upang makakuha ng buong dump ng mga i40e counter: ethtool -S ethX
- Para manood lang ng mga hindi zero na counter: watch -d (ethtool -S ethX) | egrep -v :\ 0 | hanay
Ilang bagay na hahanapin: - Ang ibig sabihin ng rx_dropped ay hindi sapat na mabilis ang pagseserbisyo ng CPU sa mga buffer.
- Ang ibig sabihin ng port.rx_dropped ay may hindi sapat na mabilis sa slot/memory/ system.
7.3 Mga Network Counter
Suriin ang netstat -s bago/pagkatapos ng workload run.
Kinokolekta ng Netstat ang impormasyon ng network mula sa lahat ng network device sa system. Samakatuwid, maaaring maapektuhan ang mga resulta mula sa mga network maliban sa network na nasa ilalim ng pagsubok. Ang output mula sa netstat -s ay maaaring maging isang mahusay na tagapagpahiwatig ng mga isyu sa pagganap sa Linux operating system o kernel. Kumonsulta sa mga gabay sa pag-tune ng operating system, gaya ng Red Hat Enterprise Linux Network Performance Tuning Guide, para sa higit pang insight sa pangkalahatang pag-tune ng operating system.
7.4 Mga Log ng System
Suriin ang mga log ng system para sa mga error at babala (/var/log/messages, dmesg).
7.5 Intel svr-info Tool
Nagbibigay ang Intel ng svr-info tool (tingnan https://github.com/intel/svr-info) para sa Linux na kumukuha ng mga nauugnay na detalye ng hardware at software mula sa isang server. Ang output ng svr-info ay maaaring maging lubhang kapaki-pakinabang upang matukoy ang mga bottleneck ng system o mga setting/tuning na hindi na-optimize para sa workload. Kapag nagbubukas ng support case sa Intel para sa mga isyu sa pagganap na nauugnay sa Ethernet, tiyaking isama ang svr-info output (text file) para sa bawat server ng Linux sa pagsasaayos ng pagsubok.
- I-download at i-install ang svr-info:
wget -qO- https://github.com/intel/svr-info/releases/latest/download/svrinfo.tgz| tar xvz cd svr-info
./svr-info
> hostname.txt - Kolektahin ang output:
./svr-info > hostname.txt - Mag-attach ng isang text (.txt) file para sa bawat server sa iyong Intel support case para sa pagsusuri.
Mga Rekomendasyon para sa Mga Karaniwang Sitwasyon ng Pagganap
8.1 IP Forwarding
- I-update ang kernel.
Ang ilang kamakailang in-distro kernel ay nagpasama sa pagganap ng pagruruta dahil sa mga pagbabago sa kernel sa routing code simula sa pagtanggal ng routing cache dahil sa seguridad. Ang mga kamakailang out-of-distro kernel ay dapat may mga patch na nagpapagaan sa epekto ng performance ng mga pagbabagong ito at maaaring magbigay ng pinahusay na performance. - Huwag paganahin ang hyper-threading (mga lohikal na core).
- I-edit ang mga parameter ng kernel boot.
— Pilitin ang iommu off (intel_iommu=off o iommu=off) mula sa kernel boot line maliban kung kinakailangan para sa virtualization
— I-off ang power management: processor.max_cstates=1 idle=poll pcie_aspm=off - Limitahan ang bilang ng mga pila upang maging katumbas ng bilang ng mga core sa lokal na socket (12 sa ex na itoample). ethtool -L ethX pinagsama 12
- Pin interrupts sa lokal na socket lamang. set_irq_affinity -X lokal na ethX O set_irq_affinity -X lokal na ethX
TANDAAN
-X o -x ay maaaring gamitin depende sa workload. - Baguhin ang Tx at Rx na laki ng singsing kung kinakailangan. Ang isang mas malaking halaga ay nangangailangan ng mas maraming mapagkukunan ngunit maaaring magbigay ng mas mahusay na mga rate ng pagpapasa. ethtool -G ethX rx 4096 tx 4096
- Huwag paganahin ang GRO kapag nagruruta.
Dahil sa isang kilalang isyu sa kernel, dapat na naka-off ang GRO kapag nagruruta/nagpapasa. ethtool -K ethX gro off kung saan ang ethX ay ang Ethernet interface na babaguhin. - Huwag paganahin ang adaptive interrupt moderation at magtakda ng static na halaga. ethtool -C ethX adaptive-rx off adaptive-tx off ethtool -C ethX rx-usecs 64 tx-usecs 64
TANDAAN
Depende sa uri ng processor at workload, ang mga parameter ng coalescing para sa RX at TX ay maaaring isaayos para sa pinahusay na performance (o mas kaunting pagkawala ng frame).
- Huwag paganahin ang firewall. sudo systemctl huwag paganahin ang firewalld sudo systemctl ihinto ang firewalld
- Paganahin ang pagpapasa ng IP. sysctl -w net.ipv4.ip_forward=1
- I-configure ang maximum na mga halaga para sa pagtanggap at pagpapadala ng mga laki ng buffer ng socket. sysctl -w net.core.rmem_max=16777216 sysctl -w net.core.wmem_max=16777216
TANDAAN
Depende sa workload o kinakailangan, ang mga value na ito ay maaaring baguhin mula sa default.
8.2 Mababang Latency
- I-OFF ang hyper-threading (mga lohikal na core).
- Tiyaking lokal ang network device sa numa core 0.
- I-pin ang benchmark sa core 0 gamit ang taskset -c 0.
- I-off ang irqbalance gamit ang systemctl stop irqbalance o systemctl i-disable ang irqbalance
- Patakbuhin ang affinity script para kumalat sa mga core. Subukan ang alinman sa lokal o lahat.
- I-off ang interrupt moderation. ethtool -C ethX rx-usecs 0 tx-usecs 0 adaptive-rx off adaptive-tx off rxusecs- mataas 0
- Limitahan ang bilang ng mga pila upang maging katumbas ng bilang ng mga core sa lokal na socket (32 sa ex na itoample). ethtool -L ethX pinagsama 32
- Pin interrupts sa lokal na socket lamang (script na nakabalot sa i40e driver source). set_irq_affinity -X lokal na ethX
- Gumamit ng itinatag na benchmark tulad ng netperf -t TCP_RR, netperf -t UDP_RR, o NetPipe. netperf -t TCP_RR o netperf -t UDP_RR
- I-pin ang benchmark sa iisang core sa lokal na NUMA node. set ng gawain -c
Intel ® Ethernet 700 Series
Gabay sa Pag-tune ng Pagganap ng Linux
Disyembre 2024
Dok. No.: 334019, Rev.: 1.2
Mga Dokumento / Mga Mapagkukunan
![]() |
Intel Ethernet 700 Series Linux Performance Tuning [pdf] Gabay sa Gumagamit 334019, Ethernet 700 Series Linux Performance Tuning, Ethernet 700 Series, Linux Performance Tuning, Performance Tuning, Tuning |