Intel လိုဂိုIntel ® Ethernet 700 စီးရီး
Linux Performance Tuning လမ်းညွှန်
NEX Cloud Networking Group (NCNG)
ဗျာ ၁.၂
ဒီဇင်ဘာလ 2024

ပြန်လည်ပြင်ဆင်မှုမှတ်တမ်း

ပြန်လည်ပြင်ဆင်ခြင်း။ ရက်စွဲ မှတ်ချက်များ
1.2 ဒီဇင်ဘာလ 2024 · ထပ်လောင်းပါဝါစီမံခန့်ခွဲမှုလမ်းညွှန်ချက်။
· Intel* Turbo Boost ကို ထည့်သွင်းခဲ့သည်။
· ထည့်သွင်းထားသော ကွန်ရက်စက်ပစ္စည်း နောက်ခံမှတ်တမ်း။
· ထည့်သွင်းထားသော ပလပ်ဖောင်း-သတ်မှတ်ဖွဲ့စည်းပုံများနှင့် ချိန်ညှိခြင်း။
· 4th Generation Intel* %eon* Scalable Processors များကို ပေါင်းထည့်ထားသည်။
· AMD EPYC ကိုထည့်သွင်းခဲ့သည်။
· မွမ်းမံထားသော စနစ်ဟာ့ဒ်ဝဲစွမ်းရည်များကို စစ်ဆေးပါ။
· iPerf2 ကို အပ်ဒိတ်လုပ်ထားသည်။
· iPerf3 ကို အပ်ဒိတ်လုပ်ထားသည်။
· Tx/Rx တန်းစီများကို အပ်ဒိတ်လုပ်ထားသည်။
· အနှောက်အယှက် ထိန်းညှိမှုကို အပ်ဒိတ်လုပ်ထားသည်။
· လက်စွပ်အရွယ်အစားကို အပ်ဒိတ်လုပ်ထားသည်။
· မွမ်းမံထားသော ပလပ်ဖောင်း ချိန်ညှိခြင်း (i40e အတိအကျမဟုတ်)။
· BIOS ဆက်တင်များကို အပ်ဒိတ်လုပ်ထားသည်။
· အပ်ဒိတ်လုပ်ထားသော C-State ထိန်းချုပ်မှု။
· အပ်ဒိတ်လုပ်ထားသော CPU Frequency Scaling။
· အပ်ဒိတ်လုပ်ထားသော အပလီကေးရှင်း ဆက်တင်များ။
· မွမ်းမံထားသော Operating System/Kernel ဆက်တင်များ။
· အပ်ဒိတ်လုပ်ထားသော IP ထပ်ဆင့်ပို့ခြင်း။
· Low Latency ကို အပ်ဒိတ်လုပ်ထားသည်။
သြဂုတ် 2023 ဤစာတမ်းအတွက် အပြောင်းအလဲများသည်-
· ဆက်စပ်ကိုးကားချက်များ ထည့်ထားသည်။
· Added DDP Package ကို မှန်ကန်စွာ Loading ပြုလုပ်ကြောင်း သေချာပါစေ။
· iPerf2 ကို ထည့်ထားသည်။
· iPerf3 ကို ထည့်ထားသည်။
· netperf ထည့်ထားသည်။
· IRQ Affinity ကို အပ်ဒိတ်လုပ်ထားသည်။
· Tx/Rx တန်းစီများ ထည့်ထားသည်။
· လက်စွပ်အရွယ်အစားကို အပ်ဒိတ်လုပ်ထားသည်။
· Jumbo Frames များထည့်ထားသည်။
· Adapter Bonding ကို ပေါင်းထည့်ထားသည်။
· Intel svr-info Tool ကို ထည့်သွင်းထားသည်။
1.0 မတ်လ 2016 ကနဦးဖြန့်ချိမှု (Intel Public)။

နိဒါန်း

ဤလမ်းညွှန်သည် Linux ပတ်၀န်းကျင်ရှိ Intel ® Ethernet 700 Series NICs ကို အသုံးပြု၍ အကောင်းဆုံးသော ကွန်ရက်ချိတ်ဆက်မှုစွမ်းဆောင်ရည်အတွက် ချိန်ညှိသည့်ပတ်ဝန်းကျင်များအတွက် လမ်းညွှန်ချက်ပေးရန် ရည်ရွယ်ပါသည်။ ၎င်းသည် ကွန်ရက်စွမ်းဆောင်ရည်ကို မြှင့်တင်ပေးနိုင်သော ဟာ့ဒ်ဝဲ၊ ယာဉ်မောင်းနှင့် လည်ပတ်မှုစနစ် အခြေအနေများနှင့် ဆက်တင်များကို အာရုံစိုက်သည်။ ကွန်ရက်ချိတ်ဆက်ခြင်းစွမ်းဆောင်ရည်သည် ပြင်ပသြဇာလွှမ်းမိုးမှု အများအပြားကြောင့် ထိခိုက်နိုင်သည်ကို သတိပြုသင့်သည်၊ ၎င်းတို့အနက်မှ အဖြစ်အများဆုံးနှင့် သိသိသာသာကိုသာ ဤလမ်းညွှန်တွင် အကျုံးဝင်ပါသည်။
1.1 ဆက်စပ်ကိုးကားချက်များ

ကနဦးစစ်ဆေးစာရင်း

2.1 Driver/ Firmware ဗားရှင်းများကို အပ်ဒိတ်လုပ်ပါ။
ethtool -i ethx ကို အသုံးပြု၍ driver/firmware ဗားရှင်းများကို စစ်ဆေးပါ။
အောက်ပါတို့ကို လိုအပ်သလို အပ်ဒိတ်လုပ်ပါ။

2.2 README ကိုဖတ်ပါ။
သိထားသောပြဿနာများကို စစ်ဆေးပြီး README မှ နောက်ဆုံးဖွဲ့စည်းပုံလမ်းညွှန်ချက်များကို ရယူပါ။ file i40e အရင်းအမြစ်ပက်ကေ့ချ်တွင် ပါဝင်သည်။
2.3 သင်၏ PCI Express (PCIe) အပေါက်သည် x8 ရှိမရှိစစ်ဆေးပါ။
အချို့သော PCIe x8 slot များကို x4 slots များအဖြစ် အမှန်တကယ်သတ်မှတ်ထားပါသည်။ ဤ slot များသည် dual port နှင့် quad port စက်များပါရှိသော full line rate အတွက် bandwidth မလုံလောက်ပါ။ ထို့အပြင်၊ သင်သည် PCIe v3.0-capable adapter ကို PCIe v2.x slot တွင် ထည့်ပါက၊ bandwidth အပြည့်မရနိုင်ပါ။ ဆော့ဖ်ဝဲစက်ပစ္စည်းဒရိုင်ဘာသည် ဤအခြေအနေကိုသိရှိပြီး စနစ်မှတ်တမ်းတွင် အောက်ပါမက်ဆေ့ချ်ကို ရေးသားသည်-
ဤကတ်အတွက် ရရှိနိုင်သော PCI-Express ဘန်းဝဒ်သည် အကောင်းဆုံးစွမ်းဆောင်ရည်အတွက် မလုံလောက်ပါ။ အကောင်းဆုံးစွမ်းဆောင်ရည်အတွက် x8 PCI-Express slot တစ်ခု လိုအပ်သည်။
ဤအမှားအယွင်းဖြစ်ပေါ်ပါက ပြဿနာကိုဖြေရှင်းရန် သင့် adapter ကို စစ်မှန်သော PCIe v3.0 x8 slot သို့ ရွှေ့ပါ။
2.4 စနစ် ဟာ့ဒ်ဝဲ စွမ်းဆောင်ရည်ကို စစ်ဆေးပါ။
10 Gbps၊ 25 Gbps နှင့် 40 Gbps Ethernet တွင်၊ အနည်းဆုံး CPU နှင့် စနစ်လိုအပ်ချက်အချို့ရှိပါသည်။ ယေဘူယျအားဖြင့်၊ သင့်ပလပ်ဖောင်းအတွက် ခေတ်မီသော ဆာဗာအတန်းအစား ပရိုဆက်ဆာနှင့် သင့်ပလပ်ဖောင်းအတွက် အကောင်းဆုံးမှတ်ဉာဏ်ဖွဲ့စည်းမှုပုံစံသည် လုံလောက်မှုရှိသင့်သော်လည်း သင့်လုပ်ငန်းတာဝန်ပေါ်မူတည်၍ လိုအပ်ချက်များ ကွဲပြားသည်။ မမ်မိုရီချန်နယ်များအားလုံးကို ပြည့်စေသင့်ပြီး မန်မိုရီစွမ်းဆောင်ရည်မုဒ်ကို BIOS တွင် ဖွင့်ထားသင့်သည်။ သင်၏ CPU နှင့် memory configuration သည် သင့်အလုပ်တာဝန်အတွက် သင်လိုအပ်သော ကွန်ရက်စွမ်းဆောင်ရည်အဆင့်ကို ပံ့ပိုးပေးနိုင်ကြောင်း အတည်ပြုပါ။
မှတ်ချက်
XL710 သည် 40 GbE ထိန်းချုပ်ကိရိယာဖြစ်သည်။ ဤထိန်းချုပ်ကိရိယာကိုအသုံးပြုသည့် 2 x 40 GbE အဒက်တာသည် 2 x 40 GbE ဖြစ်ရန် ရည်ရွယ်ခြင်းမဟုတ်သော်လည်း တက်ကြွသောအရန်ပေါက်ပေါက်ပါရှိသော 1 x 40 GbE ဖြစ်သည်။ ဆိပ်ကမ်းနှစ်ခုလုံးပါရှိသော လိုင်းနှုန်းအသွားအလာကို အသုံးပြုရန် ကြိုးပမ်းသောအခါ၊ အတွင်းခလုတ်သည် ပြည့်နှက်နေပြီး ဆိပ်ကမ်းနှစ်ခုကြားတွင် ပေါင်းစပ်လှိုင်းနှုန်းကို စုစုပေါင်း SO Gbps အထိ ကန့်သတ်ထားသည်။
2.4.1 Kernel Boot Parameters
Intel® Virtualization Technology for Directed I/O (Intel® VT-d) ကို BIOS တွင် ဖွင့်ထားပါက၊ Intel မှ အကောင်းဆုံးသော လက်ခံကွန်ရက် စွမ်းဆောင်ရည်အတွက် IOMMU ကို pass-through mode တွင် ရှိနေရန် အကြံပြုပါသည်။ ၎င်းသည် Intel® VT-d ၏ အကျိုးကျေးဇူးများ ဆက်လက်ရရှိနေစေရန် Virtual Machines (VMs) ကို ဖွင့်ထားစဉ်တွင် host traffic ရှိ DMA overhead ကို ဖယ်ရှားပေးပါသည်။ kernel boot parameters များသို့ အောက်ပါစာကြောင်းကို ပေါင်းထည့်ခြင်းဖြင့် ပြီးမြောက်သည်- fommu-pt.
2.5 DDP Package ကို မှန်ကန်စွာ Loading ပြုလုပ်ကြောင်း သေချာပါစေ။
140ea နှင့် 140eb အခြေခံဒရိုက်ဗာများသည် Dynamic Device Personalization (DDP) အတွက် တိုက်ရိုက်ပံ့ပိုးမှု မရှိပါ။ 700 စီးရီးစက်ပစ္စည်းများနှင့် DDP ကိုအသုံးပြုရန်file testpmd အက်ပ်ဖြင့် လျှောက်ထားနိုင်သည်။
DDP pro ၏အသေးစိတ်အချက်အလက်များအတွက်files၊ နှင့် DDP pro ကို မည်သို့ အသုံးချရမည်နည်း။file 700 Series စက်များတွင် testpmd ဖြင့် Intel® Ethernet 700 Series Dynamic Device Personalization (DDP) Technology Guide ကို ကိုးကားပါ။
DDP ထောက်ခံသူဟုတ်မဟုတ် အတည်ပြုရန်file အောင်မြင်စွာ တင်ပေးခဲ့သည်-
testpmd > ddp get list 0 Profile နံပါတ်က ၁
မှတ်ချက်
လိုလားသူရှိရင်file နံပါတ်သည် 0 ဖြစ်ပြီး၊ DDP ပက်ကေ့ခ်ျကို မတင်ပါ။ DDP ပက်ကေ့ဂျ်တင်ရာတွင် အမှားအယွင်းတစ်ခုဖြစ်ပွားသောအခါ၊ စက်သည် ဘေးကင်းသောမုဒ်သို့ ပုံသေသတ်မှတ်ထားပြီး စွမ်းဆောင်ရည်အင်္ဂါရပ်များစွာကို မရနိုင်ပါ။ DDP ပက်ကေ့ချ်ကို ဖွင့်ခြင်းနှင့် ပတ်သက်သော အမှားအယွင်းများရှိပါက၊ ၎င်းသည် စွမ်းဆောင်ရည်ဆိုင်ရာ ပြဿနာများကို ဖြစ်စေသည်။ ပြဿနာဖြေရှင်းခြင်းအဆင့်များအတွက် Inte/* Ethernet 700 Series Dynamic Device Personalization (DDP) Technology Guide ကို ကိုးကားပါ။

အခြေခံစွမ်းဆောင်ရည် တိုင်းတာမှုများနှင့် ညှိယူခြင်းနည်းလမ်း

3.1 ကွန်ရက်စွမ်းဆောင်ရည် စံသတ်မှတ်ချက်များ
ချိန်ညှိခြင်းလေ့ကျင့်ခန်းကို မစတင်မီ၊ သင်၏ကွန်ရက်စွမ်းဆောင်ရည်ကို အခြေခံတိုင်းတာမှုကောင်းရှိရန် အရေးကြီးပါသည်။ ပုံမှန်အားဖြင့် သင်၏ သီးခြား application/workload ၏ စွမ်းဆောင်ရည်ကို ကနဦး တိုင်းတာခြင်းအပြင်၊ သင်၏ ကွန်ရက် စက်ပစ္စည်းသည် ကောင်းမွန်ကြောင်း စစ်ဆေးရန် စံကွန်ရက် စွမ်းဆောင်ရည် စံညွှန်းတစ်ခုကိုလည်း အသုံးပြုရန် စိတ်ကူးကောင်းပါသည်။
စနစ်တစ်ခုတည်း ပိုမိုကောင်းမွန်အောင်ပြုလုပ်ခြင်းအတွက်၊ netperf သို့မဟုတ် iperf နှင့် NetPIPE တို့သည် သင့်အား ချိတ်ဆက်မှုအား ဖိစီးစေပြီး စွမ်းဆောင်ရည်ဆိုင်ရာ ပြဿနာများကို ရှာဖွေဖော်ထုတ်နိုင်စေမည့် ခိုင်မာသော opensource အခမဲ့တူးလ်များဖြစ်သည်။
Netperf သည် throughput နှင့် latency test နှစ်မျိုးလုံးအတွက် အားကောင်းသည်။ NetPIPE သည် latency-တိကျသောကိရိယာတစ်ခုဖြစ်သော်လည်း မည်သည့်ပတ်ဝန်းကျင်အမျိုးအစားအတွက်မဆို စုစည်းနိုင်ပါသည်။
မှတ်ချက်
netperf ရှိ TCP_RR စမ်းသပ်မှုသည် ငွေပေးငွေယူ/စက္ကန့်တန်ဖိုးတစ်ခုအတွင်း latency ကို ပြန်ပေးသည်။ ဒါက အသွားအပြန် နံပါတ်ပါ။ အောက်ဖော်ပြပါ ညီမျှခြင်းကို အသုံးပြု၍ တစ်လမ်းသွား latency ကို တွက်ချက်နိုင်သည်။
Latency(usec) = (1⁄2) / [Transactions/sec] * 1,000,000
3.1.1 iPerf2
Intel သည် အပလီကေးရှင်းတစ်ခုတည်းတွင် အပ်ပလီကေးရှင်းတစ်ခုတွင် thread အများအပြားအသုံးပြုရလွယ်ကူခြင်းနှင့် ပံ့ပိုးပေးခြင်းကြောင့် စံသတ်မှတ်ချက်အများစုအတွက် iperf2 ကို အကြံပြုထားသည်။ Intel သည် 3G ချိတ်ဆက်မှုများအတွက် 2-4 threads နှင့် 25G ချိတ်ဆက်မှုအတွက် 4-6 threads ဖြင့် လုပ်ဆောင်ရန် အကြံပြုထားသည်။

  • client မှ server သို့ uni-directional traffic ကို run ရန်- Server command example: iperf2 -s
    Client command example: iperf2 -c -P
  • ကလိုင်းယင့်မှ ဆာဗာသို့ နှစ်လမ်းညွန် လမ်းကြောင်းအသွားအလာကို လုပ်ဆောင်ရန် (နှင့် အပြန်အလှန်အားဖြင့်)- ဆာဗာ အမိန့်ပေးချက် example: iperf2 –s –p
    Client command example-
    iperf2 -c -p -P -- full-duplex OR
    iperf2 -c -p -P –d

မှတ်ချက်
iperf2 ရှိ –full-duplex နှင့် -d ရွေးချယ်မှုများ နှစ်ခုစလုံးသည် သုံးစွဲသူအား နှစ်လမ်းညွန်စမ်းသပ်မှုကို လုပ်ဆောင်ရန် ခွင့်ပြုသည်။ သို့သော်၊ -full-duplex option သည် full duplex စမ်းသပ်ခြင်းအပေါ် အထူးအာရုံစိုက်သည်။
မှတ်ချက်
iperf2 ကို server port အများအပြားတွင် စမ်းသပ်သောအခါ၊ တူညီသော terminal window မှ နောက်ခံရှိ server sessions အားလုံးကို run ရန်အတွက် -d အလံကို server command သို့ ထည့်သွင်းနိုင်သည်။ script တစ်ခုရှိ for-loop တစ်ခုအတွင်း ဆာဗာ command ကို ထည့်သွင်းသည့်အခါ -d အလံကိုလည်း အသုံးပြုနိုင်သည်။
မှတ်ချက်
တစ်ခုတည်းသော stream/thread ဖြင့် network throughput test ကို run သောအခါ (ဥပမာample- P1)၊ AMD ပရိုဆက်ဆာများသည် မျှော်မှန်းထားသော ဖြတ်တောက်မှုကို ပေးစွမ်းနိုင်မည်မဟုတ်ပါ၊ အထူးသဖြင့် မြင့်မားသော bandwidth NICs (အမြန်နှုန်းသည် >= 25G bandwidth) ဖြစ်သည်။ ရလဒ်အနေဖြင့် ပိုမိုမြင့်မားသောဖြတ်သန်းမှုရရှိစေရန်အတွက် တိကျသော cores များသို့ အပလီကေးရှင်းကို ပင်ထိုးရန် လိုအပ်ပါသည်။ စာမျက်နှာ 22 ရှိ အပလီကေးရှင်း ဆက်တင်များကို ကြည့်ပါ။
3.1.2 iPerf3
iperf3 ကိုအသုံးပြုပါက၊ အက်ပလီကေးရှင်း၏ဥပမာများစွာသည် advan ကိုယူရန်လိုအပ်သည်။tagMulti-threads၊ RSS နှင့် hardware တန်းစီခြင်း၏ e။ Intel သည် 2G ချိတ်ဆက်မှုအတွက် 4-25 အပလီကေးရှင်းစက်ရှင်များနှင့် 4G ချိတ်ဆက်မှုအတွက် 6-40 ဆက်ရှင်များနှင့်အတူ လုပ်ဆောင်ရန် အကြံပြုထားသည်။ စက်ရှင်တစ်ခုစီသည် -p ရွေးချယ်မှုကို အသုံးပြု၍ သီးခြား TCP ဆိပ်ကမ်းတန်ဖိုးကို သတ်မှတ်သင့်သည်။

  • client မှ server သို့ uni-directional traffic ကို run ရန်-
    Server command example-
    iperf3 -s -p
    Client command example-
    iperf3 -c -p
  • ကလိုင်းယင့်မှ ဆာဗာသို့ နှစ်လမ်းသွားလမ်းကြောင်းအသွားအလာကို လုပ်ဆောင်ရန် (နှင့် အပြန်အလှန်အားဖြင့်)
    Server command example-
    iperf3 –s –p
    Client command example: iperf3 -c -p -P --bidir
  • iperf3 ၏ များပြားသော ဥပမာများ (threads) ကို စတင်ရန်အတွက်၊ အကြံပြုချက်မှာ လုပ်ငန်းစဉ်များစွာကို အပြိုင်ဖန်တီးရန်အတွက် TCP ဆိပ်ကမ်းများသို့ စာတွဲများကို မြေပုံဆွဲရန် for-loop ကိုအသုံးပြုရန်နှင့် နောက်ခံတွင် iperf3 ကို run ရန် အကြံပြုချက်ဖြစ်သည်။
    Server command example၊ စာတွဲ ၄ ခုကို စတင်ပါ- port=””; ငါအတွက် {4..0}; do port=3$i; bash -c “iperf520 -s -p $port &”; ပြီးပြီ; Client command example၊ စာတွဲ ၄ ခုကို စတင်ပါ – Transmit test port =””; ငါအတွက် {4..0}; do port=3$i; bash -c “iperf520 -c $serverIP -p $port &”; ပြီးပြီ; Client command example၊ စာတွဲ 4 ခုကို စတင်ပါ – စမ်းသပ်မှုဆိပ်ကမ်းကို လက်ခံပါ =””; ငါအတွက် {0..3}; do port=520$i; bash -c “iperf3 -R -c $serverIP -p $port &”; ပြီးပြီ; 40G ချိတ်ဆက်မှုများအတွက်၊ instances/threads 6 ခုအထိဖန်တီးရန် for-loop ကို တိုးမြှင့်ပါ။

မှတ်ချက်
တစ်ခုတည်းသော stream/thread ဖြင့် network throughput test ကို run သောအခါ (ဥပမာample: P1)၊ AMD ပရိုဆက်ဆာများသည် မျှော်မှန်းထားသော ဖြတ်သန်းမှုအား ပေးစွမ်းနိုင်မည်မဟုတ်ပါ၊ အထူးသဖြင့် မြင့်မားသော bandwidth
NICs (အမြန်နှုန်းသည် >= 25G bandwidth ဖြစ်လျှင်)။ ရလဒ်အနေဖြင့် ပိုမိုမြင့်မားသောဖြတ်သန်းမှုရရှိစေရန်အတွက် တိကျသော cores များသို့ အပလီကေးရှင်းကို ပင်ထိုးရန် လိုအပ်ပါသည်။ စာမျက်နှာ 22 ရှိ အက်ပ်ဆက်တင်များနှင့် AMD EPYC စာမျက်နှာ 26 တွင် ကြည့်ပါ။
3.1.3 netperf
netperf tool သည် throughput နှင့် latency test နှစ်မျိုးလုံးအတွက် ခိုင်မာသောရွေးချယ်မှုဖြစ်သည်။

  • netperf ရှိ TCP_STREAM စမ်းသပ်မှုသည် စက်ပစ္စည်း၏ ဖြတ်သန်းနိုင်မှုကို တိုင်းတာသည်။ Server command example: netserver Client command example: netperf -t TCP_STREAM -l 30 -H
  • netperf ရှိ TCP_RR စမ်းသပ်မှုသည် ငွေပေးငွေယူ/စက္ကန့်တန်ဖိုးတွင် latency ကို ပြန်ပေးသည်။ ဒါက အသွားအပြန် နံပါတ်ပါ။ -T x,x ရွေးချယ်ခွင့်၊ x သည် စက်ပစ္စည်းအတွက် CPU စက်အတွင်းရှိ ဖြစ်ခဲ့သည်ကို အသုံးပြုရန် အကြံပြုထားသည်။ latency(usec)=(1⁄2)/ [Transactions/sec]*1,000၊\Server command ex ကိုသုံးပြီး တွက်ချက်နိုင်သည်ample: netserver
    Client command example: netperf -t TCP_RR -l 30 -H -T x၊x
  • netperf ၏ များပြားသော ဥပမာများ (threads) ကို စတင်ရန်၊ အကြံပြုချက်မှာ လုပ်ငန်းစဉ်များစွာကို အပြိုင်ဖန်တီးရန်အတွက် TCP အပေါက်များနှင့် တွဲများကို မြေပုံဆွဲရန် for-loop ကိုအသုံးပြုရန်နှင့် နောက်ခံတွင် netperf ကို run ရန် အကြံပြုချက်ဖြစ်သည်။
    Server command example၊ စာတွဲ ၈ ခုကို စတင်ပါ။
    port=””; ငါအတွက် {0..7}; do port=520$i; bash -c “netserver -L $serverIP -p $port &”; ပြီးပြီ;
    Client command example၊ စတင်ရန် 8 threads: port=””; ငါအတွက် {0..7}; do port=520$i; bash -c “netperf -H $serverIP -p $port -t TCP_STREAM -l 30 &”; ပြီးပြီ;

3.2 Tuning Methodology
ပြောင်းလဲမှုတစ်ခုစီသည် သင့်စမ်းသပ်မှုအတွက် အကျိုးသက်ရောက်မှုကို သိရှိရန် တစ်ကြိမ်လျှင် ချိန်ညှိပြောင်းလဲမှုတစ်ခုကို အာရုံစိုက်ပါ။ ချိန်ညှိခြင်းလုပ်ငန်းစဉ်တွင် သင်ပိုမိုနည်းစနစ်ကျလေလေ၊ စွမ်းဆောင်ရည် ပိတ်ဆို့မှုများ၏ အကြောင်းရင်းများကို ရှာဖွေဖော်ထုတ်ရန်နှင့် ဖြေရှင်းရန် လွယ်ကူလေဖြစ်သည်။

i40e Driver ဆက်တင်များကို ချိန်ညှိခြင်း။

4.1 IRQ Affinity
မတူညီသော ကွန်ရက်တန်းစီခြင်းများအတွက် အနှောင့်အယှက်များကို မတူညီသော CPU cores များနှင့် ဆက်စပ်မှုရှိစေရန်အတွက် IRQ ဆက်စပ်မှုပုံစံကို သတ်မှတ်ခြင်းသည် စွမ်းဆောင်ရည်အပေါ် ကြီးမားသောအကျိုးသက်ရောက်မှုဖြစ်စေနိုင်သည်၊ အထူးသဖြင့် multithread throughput tests။
IRQ ဆက်စပ်မှုကို သတ်မှတ်ရန်၊ irqbalance ကိုရပ်ပြီး i40e အရင်းအမြစ်ပက်ကေ့ချ်မှ set_irq_affinity script ကိုသုံးပါ သို့မဟုတ် pin တန်းစီခြင်းကို ကိုယ်တိုင်လုပ်ပါ။ တန်းစီချိတ်ခြင်းကို ဖွင့်ရန်အတွက် အသုံးပြုသူ-အာကာသ IRQ လက်ကျန်ကို ပိတ်ပါ-

  • systemctl irqbalance ကိုပိတ်ပါ။
  • systemctl သည် irqbalance ကိုရပ်တန့်သည်။
    i40e အရင်းအမြစ် ပက်ကေ့ဂျ်မှ set_irq_affinity script ကို အသုံးပြုခြင်း (အကြံပြုထားသည်)
  • cores အားလုံးကို အသုံးပြုရန်-
    [path-to-i40epackage]/scripts/set_irq_affinity -X အားလုံး ethX
  • ဒေသတွင်း NUMA ဆော့ဝဲလ်တွင် cores များကိုသာ အသုံးပြုရန်- [path-to-i40epackage]/scripts/set_irq_affinity -X local ethX
  • core အကွာအဝေးကိုလည်း သင်ရွေးချယ်နိုင်သည်။ ၎င်းသည် timer လုပ်ဆောင်ချက်များကို လုပ်ဆောင်သောကြောင့် cpu0 ကို ရှောင်ပါ။ [path-to-i40epackage]/scripts/set_irq_affinity 1-2 ethX

မှတ်ချက်
-x ရွေးချယ်မှုကို သတ်မှတ်သောအခါ ချိတ်ဆက်မှုလုပ်ငန်းစဉ်၏ တစ်စိတ်တစ်ပိုင်းအနေဖြင့် ဆက်စပ်မှု script သည် Transmit Packet Steering (XPS) ကို ဖွင့်ပေးသည်။ XPS ကိုဖွင့်ထားသောအခါတွင်၊ Intel မှ XPS နှင့် kernel balancer သည် ခန့်မှန်းမရနိုင်သောစွမ်းဆောင်ရည်ကိုဖြစ်ပေါ်စေသောကြောင့် irqbalance ကိုပိတ်ရန်သင့်အားအကြံပြုပါသည်။ -X ရွေးချယ်မှုကို သတ်မှတ်သောအခါတွင် ဆက်စပ်မှုရှိသော script သည် XPS ကို ပိတ်သည်။ XPS ကိုပိတ်ခြင်းနှင့် စီမက်ထရစ်စီတန်းများကိုဖွင့်ခြင်းသည် Tx နှင့် Rx အသွားအလာများကို တူညီသောတန်းစီတွဲ(များ)တွင် ဝန်ဆောင်မှုပေးသောအခါ အကောင်းဆုံးစွမ်းဆောင်ရည်ကိုရရှိသည့် အလုပ်များများအတွက် အကျိုးရှိသည်။
Linux တွင် အချိုးညီသော စီတန်းများကို ပြင်ဆင်သတ်မှတ်ခြင်းတွင် ပံ့ပိုးထားသော ကွန်ရက်အဒက်တာများအတွက် symmetric receive queues (Rx) နှင့် symmetric transmit queues (Tx) ကိုဖွင့်ရန်အတွက် ကွန်ရက်ကြားခံ ဒရိုင်ဘာ ဘောင်များကို ချိန်ညှိခြင်း ပါဝင်သည်။
မှတ်ချက်

  • စီမက်ထရစ်စီတန်းများသည် အဆင့်မြင့်ကွန်ရက်ချိတ်ဆက်ခြင်းအင်္ဂါရပ်တစ်ခုဖြစ်ပြီး 700 စီးရီးကွန်ရက်အဒက်တာများ သို့မဟုတ် ဒရိုက်ဗာများအားလုံး ၎င်းတို့ကို ပံ့ပိုးပေးမည်မဟုတ်ပါ။
  • အချိုးညီသော စီတန်းများကို ပြင်ဆင်သတ်မှတ်ရန် မကြိုးစားမီ သင့်တွင် လိုအပ်သော ဒရိုက်ဗာနှင့် ဟာ့ဒ်ဝဲ ပံ့ပိုးမှုရှိကြောင်း သေချာပါစေ။

အချိုးညီသော တန်းစီများကို ပြင်ဆင်သတ်မှတ်ရန်၊ ဤအထွေထွေအဆင့်များကို လိုက်နာပါ-

  1. Network Interface ဖွဲ့စည်းမှုပုံစံကို တည်းဖြတ်ပါ။ File: စာသားတည်းဖြတ်သူကို အသုံးပြုပါ (ဥပမာample, vi, nano, or gedit) network interface configuration ကိုတည်းဖြတ်ပါ။ file. ဟိ file ပုံမှန်အားဖြင့် /etc/sysconfig/network-scripts/ directory အောက်တွင် တည်ရှိပြီး ifcfg-ethX ကဲ့သို့ အမည်တစ်ခု ရှိပြီး ethX သည် သင့်ကွန်ရက် ချိတ်ဆက်မှု၏ အမည်ဖြစ်သည်။
  2. Symmetric Queue Parameters များထည့်ပါ။ ကွန်ရက်အင်တာဖေ့စ်ဖွဲ့စည်းပုံတွင် အောက်ပါလိုင်းများကို ပေါင်းထည့်ပါ။ file: ETHTOOL_OPTS=”rx-queues 8 tx-queues 8″
  3. ကွန်ရက်ဝန်ဆောင်မှုကို ပြန်လည်စတင်ပါ။
    အပြောင်းအလဲများ ပြုလုပ်ပြီးနောက်၊ ဖွဲ့စည်းမှုအသစ်ကို အသုံးပြုရန် ကွန်ရက်ဝန်ဆောင်မှုကို ပြန်လည်စတင်ပါ။ sudo systemctl ကွန်ရက်ကို ပြန်လည်စတင်ပါ။

ကိုယ်တိုင်-

  • numactl –hardware lscpu ကို အသုံးပြု၍ node တစ်ခုစီနှင့် ချိတ်ဆက်ထားသော ပရိုဆက်ဆာများကို ရှာပါ။
  • ပရိုဆက်ဆာတစ်ခုစီအတွက် ဘစ်မျက်နှာဖုံးများကို ရှာပါ-
  • node 0 အတွက် core 11-0 ဟု ယူဆသည်- [1,2,4,8,10,20,40,80,100,200,400,800]
  • သတ်မှတ်ပေးထားသည့် port တွင်သတ်မှတ်ပေးထားသော IRQs များကိုရှာပါ- grep ethX /proc/interrupts နှင့် ex အတွက် IRQ တန်ဖိုးများကိုမှတ်သားပါ။ampတင်ထားသော 181 vector အတွက် le၊ 192-12။
  • သက်ဆိုင်ရာ IRQ ထည့်သွင်းမှုသို့ SMP ရင်းနှီးမှုတန်ဖိုးကို သံယောင်လိုက်ခြင်း။ IRQ ထည့်သွင်းမှု တစ်ခုစီအတွက် ၎င်းကို လုပ်ဆောင်ရန် လိုအပ်သည်- ပဲ့တင်သံ 1 > /proc/irq/181/smp_affinity echo 2 > /proc/irq/182/smp_affinity echo 4 > /proc/irq/183/smp_affinity IRQ ရင်းနှီးမှုကို ပြပါ-
  • cores အားလုံးအတွက် IRQ ရင်းနှီးမှုကို ပြသရန်- /scripts/set_irq_affinity -s ethX
  • local NUMA socket တွင် cores များကိုသာပြသရန်- /scripts/set_irq_affinity -s ဒေသဆိုင်ရာ ethX
  • core အကွာအဝေးကိုလည်း သင်ရွေးချယ်နိုင်သည်- /scripts/set_irq_affinity -s 40-0-8,16 ethX

မှတ်ချက်
set_irq_affinity script သည် i40e ဒရိုက်ဘာဗားရှင်း 2.16.11 နှင့် နောက်ပိုင်းတွင် -s အလံကို ပံ့ပိုးပေးသည်။
4.2 Tx/Rx တန်းစီများ
စတင်ခြင်းတွင် ဒရိုက်ဘာမှ Ethernet အပေါက်တစ်ခုစီအတွက် ဖွင့်ထားသော စီတန်းနံပါတ်၏ မူရင်းအရေအတွက်သည် ပလပ်ဖောင်းတွင်ရရှိနိုင်သည့် စုစုပေါင်း CPU အရေအတွက်နှင့် ညီမျှသည်။ ၎င်းသည် ပလပ်ဖောင်းများစွာနှင့် အလုပ်ချိန်ဖွဲ့စည်းမှုများအတွက် ကောင်းစွာအလုပ်လုပ်သည်။ သို့သော်၊ မြင့်မားသော core အရေအတွက်နှင့်/သို့မဟုတ် Ethernet port သိပ်သည်းဆမြင့်မားသော ပလပ်ဖောင်းများတွင်၊ ဤဖွဲ့စည်းပုံသည် အရင်းအမြစ် အငြင်းပွားမှုကို ဖြစ်စေနိုင်သည်။ ထို့ကြောင့်၊ စနစ်ရှိ port တစ်ခုစီအတွက် ပုံသေကို မွမ်းမံရန် အချို့ကိစ္စများတွင် လိုအပ်နိုင်သည်။
Tx/Rx တန်းစီခြင်း၏ မူရင်းနံပါတ်သည် သတ်မှတ်ထားသော မော်ဒယ်နှင့် ယာဉ်မောင်းဗားရှင်းပေါ်မူတည်၍ ကွဲပြားနိုင်သည်။ အောက်တွင်ဖော်ပြထားသော ethtool -L command ကိုအသုံးပြု၍ တန်းစီအရေအတွက်ကို ချိန်ညှိနိုင်သည်။
မှတ်ချက်
ဤကိစ္စများတွင်၊ Intel သည် adapter port သို့ NUMA node local တွင်ရရှိနိုင်သော CPU အရေအတွက်ထက်မပိုစေရန် port တစ်ခုစီအတွက် default queue count ကို လျှော့ချရန် အကြံပြုထားသည်။ အချို့ကိစ္စများတွင်၊ မြင့်မားသော port count အကောင်အထည်ဖော်မှုများတွင် အရင်းအမြစ်များကို ချိန်ခွင်လျှာညှိရန် ကြိုးစားသောအခါ၊ ဤအရေအတွက်ကို ပိုမိုလျှော့ချရန် လိုအပ်ပေမည်။
တန်းစီဇယားဖွဲ့စည်းပုံကို ပြင်ဆင်ရန်-
အောက်ပါ example သည် port ကို 32 Tx/Rx တန်းစီရန် သတ်မှတ်သည်- ethtool -L ethX ပေါင်းစပ် 32
Example အထွက်-
ethtool -l ethX
ethX အတွက် ချန်နယ်ဘောင်များ- အမြင့်ဆုံး သတ်မှတ်ချက်များ-
RX: 96
TX: 96
အခြား: 1
ပေါင်းစပ်: 96
လက်ရှိ ဟာ့ဒ်ဝဲ ဆက်တင်များ
RX: 0
TX: 0
အခြား: 1
ပေါင်းစပ်: 32
4.3 နှောင့်ယှက် ထိန်းညှိမှု
အလိုက်သင့် အနှောက်အယှက်ဖြစ်စေသော ထိန်းညှိပေးခြင်းကို မူရင်းအတိုင်းဖွင့်ထားပြီး CPU အသုံးပြုမှုနည်းပါးခြင်းနှင့် မြင့်မားသောစွမ်းဆောင်ရည်တို့ကြား မျှတသောချဉ်းကပ်မှုကို ပေးဆောင်ရန် ဒီဇိုင်းထုတ်ထားသည်။ သို့သော်၊ သင်၏အသုံးပြုမှုကိစ္စနှင့် ကိုက်ညီရန် ကြားဖြတ်ဆက်တင်များကို ကိုယ်တိုင်ချိန်ညှိရန် သင်ကြိုးစားနိုင်သည်။
0-235 မိုက်ခရိုစက္ကန့်အကွာအဝေးသည် တစ်စက္ကန့်လျှင် နှောက်ယှက်မှု 4,310 မှ 250,000 ထိထိရောက်သောအကွာအဝေးကိုပေးသည်။ rx-μsecs-high ၏တန်ဖိုးကို တူညီသော ethtool command တွင် rx-μsecs နှင့် tx-μsecs တို့မှ သီးခြားသတ်မှတ်နိုင်ပြီး adaptive interrupt moderation algorithm နှင့်လည်း သီးခြားဖြစ်သည်။ အရင်းခံဟာ့ဒ်ဝဲသည် 2microsecond ကြားကာလများတွင် အသေးစိပ်အချက်အလက်များကို ပံ့ပိုးပေးသောကြောင့် ကပ်လျက်တန်ဖိုးများသည် တူညီသောအနှောင့်အယှက်နှုန်းကို ဖြစ်ပေါ်စေနိုင်သည်။

  • adaptive interrupt moderation ကိုပိတ်ရန်- ethtool -C ethX adaptive-rx off adaptive-tx ကိုပိတ်ရန်
  • adaptive interrupt moderation ကိုဖွင့်ရန်- ethtool -C ethX adaptive-rx on adaptive-tx ကိုဖွင့်ပါ

ယေဘုယျ ချိန်ညှိခြင်းအတွက် စတင်ရန် နေရာကောင်းမှာ 84 μs သို့မဟုတ် ~12000 interrupts/s ဖြစ်သည်။ rx_dropped ကောင်တာများသည် အသွားအလာအတွင်း (ethtool -S ethX ကိုသုံး၍) လည်ပတ်နေပါက သင့်တွင် CPU ၏နှေးကွေးလွန်းသည်၊၊ 84 μs အတွက် packet များကို ထိန်းထားရန် adapter ၏ ring size (ethtool -G) မှ လုံလောက်သော buffers များမရှိနိုင်ပါ။

  • အနှောက်အယှက်များကြားတွင် ပုံသေအနှောက်အယှက်ဖြစ်စေသည့်နှုန်း 84 μs သို့ သတ်မှတ်ရန် (12000 interrupts/s): ethtool -C ethX adaptive-rx off adaptive-tx off rx-usecs 84 tx-usecs 84 CPU အသုံးချမှုတွင် အမြင့်ဆုံးမထည့်ပါက စမ်းကြည့်ရန် နောက်ထပ်တန်ဖိုးမှာ 62 μs ဖြစ်သည်။ ၎င်းသည် CPU ကိုပိုမိုအသုံးပြုသော်လည်း ၎င်းသည် ဝန်ဆောင်မှုကြားခံများပိုမိုမြန်ဆန်ပြီး ဖော်ပြချက်အနည်းငယ်သာလိုအပ်သည် (ring size, ethtool -G)။
  • အနှောင့်အယှက်များကြားတွင် 62 usecs (16000 interrupts/s) ၏ ပုံသေကြားဖြတ်နှုန်းသို့ ကြားဖြတ်ထိန်းချုပ်မှုအား သတ်မှတ်ရန်။ ethtool -C ethX adaptive-rx off adaptive-tx off rx-usecs 62 tx-usecs 62
    အသွားအလာအတွင်း rx_dropped ကောင်တာများ တိုးလာပါက (ethtool -S ethX ကိုအသုံးပြုသည်)၊ သင့်တွင် CPU နှေးလွန်းခြင်း၊ adapter ၏ ring size (ethtool -G) မှ လုံလောက်သော ကြားခံစနစ်မရှိခြင်း သို့မဟုတ် ကြားဖြတ်နှုန်း အလွန်နည်းပါသည်။ CPU အသုံးချမှုတွင် သင့်အား တိုးမြှင့်ခြင်းမပြုပါက၊ ITR တန်ဖိုးကို လျှော့ချခြင်းဖြင့် ကြားဖြတ်နှုန်းကို တိုးမြှင့်နိုင်သည်။ ၎င်းသည် CPU ကိုပိုမိုအသုံးပြုသော်လည်း ဝန်ဆောင်မှုများသည် ကြားခံများပိုမိုမြန်ဆန်လာပြီး ဖော်ပြချက်အနည်းငယ်သာလိုအပ်သည် (ring size၊ ethtool -G)။
    အကယ်၍ သင့် CPU သည် 100% တွင်ရှိနေပါက ကြားဖြတ်နှုန်းကို တိုးမြှင့်ရန် အကြံပြုမည်မဟုတ်ပါ။ CPU ချိတ်ထားသော အလုပ်ဝန်ကဲ့သို့ အချို့သောအခြေအနေများတွင်၊ သင်သည် အခြားအပလီကေးရှင်းများအတွက် CPU အချိန်ပိုဖွင့်ရန် μs တန်ဖိုးကို တိုးမြှင့်လိုပေမည်။
    သင့်တွင် latency နည်းပါးသော စွမ်းဆောင်ရည်နှင့်/သို့မဟုတ် ကွန်ရက်လုပ်ဆောင်ခြင်းအတွက် မြှုပ်နှံရန် CPU အများအပြား လိုအပ်ပါက၊ အနှောင့်အယှက်များကို တတ်နိုင်သမျှ မြန်ဆန်စွာ ပစ်ခတ်နိုင်စေမည့် အနှောက်အယှက်များကို လုံးလုံးလျားလျား ပိတ်နိုင်သည်။
  • interrupt moderation ethtool ကိုပိတ်ရန် -C ethX adaptive-rx off adaptive-tx off rx-usecs 0 tx-usecs 0

မှတ်ချက်
အနှောက်အယှက်ဖြစ်စေသော ထိန်းချုပ်မှုဖြင့် လုပ်ဆောင်ခြင်းကို ပိတ်ထားသောအခါ၊ တန်းစီတစ်ခုစီရှိ ကြားဖြတ်နှုန်းသည် အလွန်မြင့်မားနိုင်သည်။ ကြားဖြတ်နှုန်းအပေါ် ကန့်သတ်ချက်တစ်ခု သတ်မှတ်ရန် rx-usec-high ပါရာမီတာကို ထည့်သွင်းစဉ်းစားပါ။ အောက်ပါ command သည် adaptive interrupt moderation ကို ပိတ်ပြီး လက်ခံခြင်း သို့မဟုတ် ပို့လွှတ်မှု ပြီးမြောက်ကြောင်း ညွှန်ပြခြင်းမပြုမီ အများဆုံး 5 မိုက်ခရိုစက္ကန့်ကို ခွင့်ပြုသည်။ တစ်စက္ကန့်လျှင် နှောင့်ယှက်မှုများ 200,000 အထိ ဖြစ်ပေါ်စေမည့်အစား rx-usec-high parameter မှတစ်ဆင့် စုစုပေါင်း interrupts တစ်စက္ကန့်ကို 50,000 မှ ကန့်သတ်ထားသည်။ # ethtool -C ethX adaptive-rx off adaptive-tx off rx-usecs-high 20 rx-usecs 5 txusecs 5 transmit/receive/high-priority coalescing timer ကို ပိုမြင့်သော (80/100/150/200) သို့မဟုတ် ပိုနိမ့်သော (25/20/10/5 အတွက် အလုပ်ရှာရန်) တန်ဖိုးကို ချိန်ညှိကြည့်ပါ။
4.4 လက်စွပ်အရွယ်အစား
သင်သည် ethtool -S ethX (rx_dropped, rx_dropped.nic) တွင် rx_dropped ကောင်တာများကို မြင်နေရပါက သို့မဟုတ် တန်းစီအများအပြားတွင် ကက်ရှ်ဖိအားကို တက်ကြွစွာလုပ်ဆောင်နေသည်ဟု သံသယရှိပါက၊ သင်သည် မူရင်းတန်ဖိုးမှ လက်စွပ်အရွယ်အစားကို ချိန်ညှိရန် ကြိုးစားနိုင်သည်။ မူရင်းတန်ဖိုးမှာ 512 ဖြစ်ပြီး အမြင့်ဆုံးမှာ 4096 ဖြစ်သည်။

  • လက်ရှိတန်ဖိုးများကို စစ်ဆေးရန်- ethtool -g ethX
    buffering မရှိခြင်းက လက်ရှိနှောင့်ယှက်မှုနှုန်းတွင် ကျဆင်းသွားသည်ဟု သံသယရှိပါက အမြင့်ဆုံးကို ဦးစွာကြိုးစားနိုင်ပြီး အနိမ့်ဆုံး၊ ထို့နောက် အကောင်းဆုံးစွမ်းဆောင်ရည်ကို သင်မတွေ့မချင်း binary ရှာဖွေမှုတွင် ဆက်လက်လုပ်ဆောင်နိုင်သည်။
    ကက်ရှ်ဖိအားကို သံသယဖြစ်လျှင် (စီတန်းအများအပြား တက်ကြွနေသည်) သည် မူရင်းမှ ကြားခံများကို လျှော့ချခြင်းဖြင့် Intel ® Data Direct I/O (Intel ® DDIO) ပိုမိုကောင်းမွန်စွာ လုပ်ဆောင်နိုင်စေရန် ကူညီပေးနိုင်ပါသည်။ Intel က rx_dropped တိုးလာမှုကို ရှောင်ရှားရန် ethtool -C မှတစ်ဆင့် ကြားဖြတ်နှုန်း တိုးလာမည်ကို သိရှိထားခြင်းဖြင့် တန်းစီတစ်ခုလျှင် 128 သို့မဟုတ် 256 ကို ကြိုးစားရန် အကြံပြုထားသည်။
  • လက်စွပ်အရွယ်အစားကို ပုံသေတန်ဖိုးအဖြစ် သတ်မှတ်ရန်- ethtool -G eth12 rx 256 tx 256

မှတ်ချက်
ethtool -S ethX|grep drop ဖြင့်တွေ့ရှိရသော Rx ပက်ကတ်အစက်များကို ပြုပြင်ရန်၊ လက်စွပ်အရွယ်အစားကို 4096 သို့ တိုးမြှင့်ရန် စဉ်းစားပါ။ အလုပ်တာဝန်အတွက် အကောင်းဆုံးဆက်တင်ကို ရှာဖွေရန် စမ်းသပ်ပါ၊ သို့သော် တန်ဖိုးများမြင့်သော မှတ်ဉာဏ်အလွန်အကျွံအသုံးပြုမှုကို သတိထားပါ။
4.5 Flow ထိန်းချုပ်မှု
Layer 2 flow control သည် TCP စွမ်းဆောင်ရည်ကို သိသိသာသာ သက်ရောက်မှုရှိနိုင်ပြီး အလုပ်တာဝန်အများစုအတွက် ပိတ်ထားရန် အကြံပြုထားသည်။ ဖြစ်နိုင်ချေရှိသောခြွင်းချက်တစ်ခုမှာ ဆက်တိုက်ပေါက်ကွဲသည့်ကြာချိန်မဟုတ်သည့် ဆက်တိုက်အသွားအလာဖြစ်သည်။
စီးဆင်းမှု ထိန်းချုပ်မှုကို မူရင်းအတိုင်း ပိတ်ထားသည်။

  • flow control ကိုဖွင့်ရန်- ethtool -A ethX rx on tx on
  • စီးဆင်းမှုထိန်းချုပ်မှုကို ပိတ်ရန်- ethtool -A ethX rx off tx off

မှတ်ချက်
စီးဆင်းမှုထိန်းချုပ်မှုကို အောင်မြင်စွာဖွင့်ရန် သင့်တွင် စီးဆင်းမှုထိန်းချုပ်နိုင်သည့် လင့်ခ်ပါတနာတစ်ခု ရှိရပါမည်။
4.6 ဂျမ်ဘိုဘောင်များ
မျှော်လင့်ထားသည့် လမ်းကြောင်းပတ်ဝန်းကျင်တွင် ဒေတာအတုံးကြီးများ လွှဲပြောင်းပေးသည့်အခါ၊ jumbo frame အင်္ဂါရပ်ကို ဖွင့်ရန် အကျိုးရှိနိုင်သည်။ Jumbo Frames ပံ့ပိုးမှုအား Maximum Transmission Unit (MTU) ကို မူရင်းတန်ဖိုး 1500 ထက် ပိုကြီးသော တန်ဖိုးသို့ ပြောင်းလဲခြင်းဖြင့် ဖွင့်ထားသည်။ ၎င်းသည် စက်အား ကွန်ရက်ပတ်ဝန်းကျင်အတွင်းရှိ ပိုကြီးသော packet များတွင် ဒေတာလွှဲပြောင်းနိုင်စေပါသည်။ ဤဆက်တင်သည် ကြီးမားသော I/O အလုပ်တာဝန်များအတွက် CPU အသုံးပြုမှုကို လျှော့ချနိုင်ပြီး ဖြတ်သန်းမှုကို တိုးတက်စေနိုင်သည်။ သို့သော်၊ ၎င်းသည် သေးငယ်သော packet သို့မဟုတ် latency-sensitive workloads များအပေါ် သက်ရောက်မှုရှိနိုင်သည်။
မှတ်ချက်
Jumbo frames သို့မဟုတ် ပိုကြီးသော MTU ဆက်တင်များကို သင့်ကွန်ရက်ပတ်ဝန်းကျင်တစ်လျှောက်တွင် ကောင်းစွာပြင်ဆင်သတ်မှတ်ရပါမည်။
MTU အရွယ်အစားကို တိုးမြှင့်ရန် ifconfig အမိန့်ကို အသုံးပြုပါ။ ဟောင်းအတွက်ample၊ နေရာတွင် အောက်ပါအတိုင်း ရိုက်ထည့်ပါ။ အင်တာဖေ့စ်နံပါတ်သည် ifconfig ဖြစ်သည်။ mtu 9000 အထက်
တနည်းအားဖြင့် သင်သည် အောက်ပါအတိုင်း ip command ကိုသုံးနိုင်သည်- ip link set mtu 9000 dev ip လင့်ခ်ကို dev စနစ်ထည့်သွင်းပါ။

ပလပ်ဖောင်း ချိန်ညှိခြင်း (i40e အတိအကျမဟုတ်)

5.1 BIOS ဆက်တင်များ

  • virtualization workloads အတွက် Intel® VT-d ကို ဖွင့်ပါ။
  • Hyper-threading (logical ပရိုဆက်ဆာ) သည် စွမ်းဆောင်ရည်ကို ထိခိုက်စေနိုင်သည်။ သင့်အလုပ်တာဝန်အတွက် ၎င်းကို အဖွင့်အပိတ် စမ်းသပ်ပါ။
  • Intel® Turbo Boost သည် CPU Core များကို CPU ၏ အခြေခံကြိမ်နှုန်းထက် ပိုမိုမြင့်မားသော ကြိမ်နှုန်းဖြင့် လုပ်ဆောင်နိုင်စေပါသည်။ Intel® Turbo Boost ကိုဖွင့်ထားခြင်းဖြင့် အလုပ်များစွာအတွက် စွမ်းဆောင်ရည်ကို မြှင့်တင်ပေးနိုင်သော်လည်း cores များကို ပိုမိုမြင့်မားသော ကြိမ်နှုန်းဖြင့် ထိန်းသိမ်းထားရန် ပါဝါပိုမိုသုံးစွဲသည်။ သင့်အလုပ်တာဝန်အတွက် Turbo Boost off/on ဖြင့် စမ်းသပ်ပါ။

မှတ်ချက်
ပလပ်ဖောင်းသည် အလုံးစုံ CPU အသုံးပြုမှု မြင့်မားနေပါက Turbo ကြိမ်နှုန်းများကို အာမခံမည်မဟုတ်ပါ။ CPU အသုံးပြုမှု တိုးလာသည်နှင့်အမျှ ပိုမိုမြင့်မားသော core turbo frequencies များကို လျှော့ချထားသည်။
5.2 ပါဝါစီမံခန့်ခွဲမှု
ပါဝါစီမံခန့်ခွဲမှုသည် အထူးသဖြင့် latency နည်းပါးသော အလုပ်များတွင် စွမ်းဆောင်ရည်အပေါ် သက်ရောက်မှုရှိနိုင်သည်။ စွမ်းဆောင်ရည်သည် ပါဝါသုံးစွဲမှုကို လျှော့ချခြင်းထက် ပိုမိုဦးစားပေးမည်ဆိုပါက၊ ပါဝါစီမံခန့်ခွဲမှု၏ အကျိုးသက်ရောက်မှုများကို ကန့်သတ်ခြင်းဖြင့် စမ်းသပ်ရန် Intel မှ အကြံပြုထားသည်။ လည်ပတ်မှုစနစ်တူးလ်များ၊ BIOS ဆက်တင်များနှင့် kernel boot ကန့်သတ်ချက်များမှတဆင့် ပါဝါစီမံခန့်ခွဲမှုကို ကန့်သတ်ရန် မတူညီသောနည်းလမ်းများစွာရှိသည်။ သင့်ပတ်ဝန်းကျင်အတွက် အကောင်းဆုံးနည်းလမ်းနှင့် အဆင့်ကိုရွေးချယ်ပါ။
5.2.1 C-State ထိန်းချုပ်မှု
CO သို့မဟုတ် C1 သို့ C-state ဝင်ရောက်မှုကို ကန့်သတ်ခြင်းသည် စွမ်းဆောင်ရည်ကို ပိုမိုကောင်းမွန်စေပြီး ပါဝါအသုံးပြုမှုကို တိုးစေသည်။
CPU Package C6 state entry ကိုပိတ်ထားခြင်းဖြင့် ကွန်ရက်စွမ်းဆောင်ရည်ကို မြှင့်တင်နိုင်ပါသည်။ သို့သော် ၎င်းသည် ပါဝါအသုံးပြုမှုကို တိုးစေသည်။
အောက်ပါရွေးချယ်စရာများကို ရနိုင်သည်-

  • C-state entry ကို ဒိုင်းနမစ်ဖြင့် ထိန်းချုပ်သည်-
    ဖွင့်သည်။
    /dev/cpu_dma_latency နှင့် ၎င်းတွင် အများဆုံးခွင့်ပြုနိုင်သော latency ကိုရေးပါ။

မှတ်ချက်
၎င်းကိုအတိအကျလုပ်ဆောင်ရန် cpudmalatency.c ဟုခေါ်သော ပရိုဂရမ်ငယ်တစ်ခုရှိပြီး ၎င်းကို open source အသိုင်းအဝိုင်းမှ ဒေါင်းလုဒ်လုပ်ကာ စုစည်းကာ command line မှ လုပ်ဆောင်နိုင်သည်။
အောက်ပါ example သည် နိုးချိန်ငါး μs ကို ခွင့်ပြုထားပြီး၊ ထို့ကြောင့် C1 ဝင်ရောက်မှုကို ခွင့်ပြုသည်- cpudmalatency 5 &

  • kernel boot ဆက်တင်များတွင် အများဆုံး C-state ကို ကန့်သတ်ပါ-
    Intel CPU များအတွက်- intel_idle.max_cstates=1
    Intel မဟုတ်သော CPU များအတွက်- processor.max_cstates=1
  • CPU C6 အခြေအနေကို စစ်ဆေးရန်နှင့် ပိတ်ရန် cpupower အမိန့်ကို သုံးပါ- စစ်ဆေးပါ- cpupower မော်နီတာ သို့မဟုတ် cpupower idle-info
    C6 ကိုပိတ်ပါ- cpupower idle-set -d3 သို့မဟုတ်
    C-States ကိုပိတ်ပါ- cpupower idle-set -D0

မှတ်စုများ-

  1. ဆာဗာတွင် Intel® 4th Gen Intel® Xeon® Scalable Processor(များ) ပါရှိပါက CPU တွင် C-states များကို ပိတ်ပါ။ Hyper Threading ကို ဖွင့်ထားသည် သို့မဟုတ် ပိတ်ထားသည့်အခါ၊ idle states (-D0) ကိုပိတ်ထားခြင်းသည် idle ကာလများအတွင်း cores များကို ပါဝါနိမ့်သောအခြေအနေများထဲသို့မ၀င်ရောက်အောင်တားဆီးပြီး CPU အတွက် latency ကို idle နှင့် active state များအကြား ကူးပြောင်းသွားစေသည်။
  2. Intel® 4th Gen Intel® Xeon® Scalable Processor ၏ ပါဝါစီမံခန့်ခွဲမှုသည် အလွန်ပြင်းထန်သည်။ cores များသည် ပါဝါနိမ့်သောပြည်နယ်များအတွင်းသို့မ၀င်ရောက်ခြင်းမှရှောင်ရှားရန်၊ ၎င်းတို့ကိုကြာကြာနိုးနေစေရန်အတွက် အသုံးပြုနေသော Core အရေအတွက်ကို လျှော့ချကြည့်ပါ (ethtool -L ပေါင်းစပ် ) ထို့အပြင်၊ set irq affinity (အများစုမှာ -x local သို့မဟုတ် CPU cores များစာရင်း) ကို အသုံးပြု၍ သီးခြား cores များနှင့် interrupts များကို ချည်နှောင်ပြီး taskset သို့မဟုတ် numactl ဖြင့် ထိုတူညီသော cores များတွင် workload လည်ပတ်ကြောင်း သေချာပါစေ။ ၎င်းသည် cores များကို တက်ကြွစွာထားရှိကာ ကြားဖြတ်ကိုင်တွယ်မှုကို ပိုကောင်းအောင်ပြုလုပ်ခြင်းဖြင့် စွမ်းဆောင်ရည်ကို မြှင့်တင်ပေးပါသည်။

C6 ကိုဖွင့်ပါ
cpupower idle-set -d3
C-States ကိုဖွင့်ပါ-
cpupower idle-set -E

  • အခြားနည်းလမ်းမှာ စွမ်းဆောင်ရည်ကို လိုလားသူတစ်ဦးအဖြစ် သတ်မှတ်ရန် (Linux ဖြန့်ဝေမှုများစွာ အပါအဝင်) ချိန်ညှိထားသော ကိရိယာကို အသုံးပြုရန်ဖြစ်သည်။file. ဒါတွေကို လိုလားတယ်။files သည် အပလီကေးရှင်းများစွာတွင် စွမ်းဆောင်ရည်ကို ထိခိုက်စေနိုင်သော OS ဆက်တင်များစွာကို မွမ်းမံပြင်ဆင်ပါ။ network-throughput pro ကို တွေ့ရှိထားပါတယ်။file အလုပ်တာဝန်အများစုကို မြှင့်တင်ပေးသည်။
    စစ်ဆေးရန်-
    tuned-adm တက်ကြွသည်။
    သတ်မှတ်သည်-
    tuned-adm profile ကွန်ရက်ဖြတ်သန်းမှု
    မှတ်ချက်
    ချိန်ညှိထားသော ဝန်ဆောင်မှုသည် အထက်ဖော်ပြပါ အမိန့်များအတွက် လုပ်ဆောင်နေရပါမည်။ စစ်ဆေးရန်/ပြန်လည်စတင်ရန်၊ tuned- systemctl အခြေအနေကို tuned systemctl restart tuned
    အောက်ပါတို့ကို kernel boot line သို့ထည့်ခြင်းဖြင့် သင်သည် မည်သည့် C-state entry ကိုမဆို တားမြစ်နိုင်သည်။
    idle=စစ်တမ်း
  • စွမ်းဆောင်ရည် လိုလားသည့် စနစ်၏ BIOS ပါဝါ စီမံခန့်ခွဲမှု ဆက်တင်များမှတစ်ဆင့် C-state ကို ကန့်သတ်ပါ။file ရရှိနိုင်
    turbostat သို့မဟုတ် x86_energy_perf_policy ကဲ့သို့သော ကိရိယာများကို ပါဝါစီမံခန့်ခွဲမှုဆက်တင်များကို စစ်ဆေးရန် သို့မဟုတ် သတ်မှတ်ရန် အသုံးပြုနိုင်သည်။

5.2.2 PCIe ပါဝါစီမံခန့်ခွဲမှု
Active-State Power Management (ASPM) သည် PCIe လင့်ခ်များကို တက်ကြွစွာအသုံးမပြုသောအခါတွင် ပါဝါနိမ့်သောအခြေအနေအား ဖွင့်ပေးသည်။ ၎င်းသည် PCIe ကွန်ရက်စက်ပစ္စည်းများတွင် ကြာမြင့်ချိန်ကို ဖြစ်ပေါ်စေနိုင်သောကြောင့် latency-sensitive workloads အတွက် ASPM ကို ပိတ်ရန် Intel မှ အကြံပြုထားသည်။ kernel boot line သို့ အောက်ပါတို့ကို ပေါင်းထည့်ခြင်းဖြင့် ASPM ကို ပိတ်ပါ- pcie_aspm=off
5.2.3 CPU ကြိမ်နှုန်းကို ချိန်ညှိခြင်း။
CPU frequency scaling (သို့မဟုတ် CPU speed scaling) သည် ပါဝါနှင့် အပူသက်သာရန် system clock speed ကို အချိန်နှင့်တပြေးညီ ချိန်ညှိပေးသည့် Linux ပါဝါစီမံခန့်ခွဲမှုနည်းပညာတစ်ခုဖြစ်သည်။ C-states များကဲ့သို့ပင်၊ ၎င်းသည် ကွန်ရက်ချိတ်ဆက်မှုများတွင် မလိုလားအပ်သော latency ကို ဖြစ်စေနိုင်သည်။
CPU စွမ်းဆောင်ရည် ပုံသေများနှင့် ကန့်သတ်ချက်များကို စစ်ဆေးရန်နှင့် ပြင်ဆင်ရန် cpupower tool ကိုလည်း အသုံးပြုနိုင်ပါသည်။

  • cpupower monitor သို့မဟုတ် စစ်ဆေးပါ။
  • CPU များကို စွမ်းဆောင်ရည်မုဒ်သို့ သတ်မှတ်ပါ- cpupower ကြိမ်နှုန်း-သတ်မှတ်-g စွမ်းဆောင်ရည်

မှတ်ချက်
CPU ကြိမ်နှုန်းကန့်သတ်ချက်များကို ပြုပြင်မွမ်းမံခြင်းသည် အလုပ်တာဝန်များစွာအတွက် အကျိုးသက်ရောက်နိုင်ပြီး CPU turbo မုဒ်ကဲ့သို့သော အခြားအင်္ဂါရပ်များကို ပိတ်နိုင်သည်။
CPU ကြိမ်နှုန်းကို ချဲ့ထွင်ခြင်းကို ပိတ်ရန်၊ အောက်ပါ ညွှန်ကြားချက်များဖြင့် CPU ပါဝါဝန်ဆောင်မှုကို ပိတ်ပါ-
systemctl သည် cpupower.service ကို ရပ်တန့်လိုက်သည်။
systemctl cpupower.service ကို ပိတ်ပါ။
5.2.4 ထပ်လောင်းပါဝါစီမံခန့်ခွဲမှုလမ်းညွှန်
နောက်ထပ်အသေးစိတ်အချက်အလက်များကို ဤအထက်တန်းအဆင့်တွင် ဖော်ပြထားပါသည်။view 3rd Generation Intel® Xeon® Scalable ပရိုဆက်ဆာများရှိ ပါဝါစီမံခန့်ခွဲမှုအင်္ဂါရပ်များစွာ၏ လမ်းညွှန်ချက်အပြင် ဤအင်္ဂါရပ်များကို ပလပ်ဖောင်းအဆင့်တွင် ပေါင်းစပ်နိုင်ပုံ- https://networkbuilders.intel.com/solutionslibrary/power-management-technologyoverview-technology-guide
5.3 Intel® Turbo Boost
Intel® Turbo Boost သည် လိုအပ်သည့်အခါ ပရိုဆက်ဆာကို ပိုမြန်စေသော်လည်း အပိုပါဝါကို စားသုံးနိုင်သည်။ Turbo Boost ကိုပိတ်ခြင်းဖြင့် ပရိုဆက်ဆာကို တည်ငြိမ်သောအမြန်နှုန်းဖြင့် ထိန်းပေးကာ သတ်သတ်မှတ်မှတ်အလုပ်တာဝန်များအတွက် တသမတ်တည်း စွမ်းဆောင်ရည်အဆင့်ကို ပေးသည်။
5.4 Firewalls
Firewall များသည် စွမ်းဆောင်ရည်၊ အထူးသဖြင့် latency လုပ်ဆောင်မှုကို သက်ရောက်မှုရှိနိုင်သည်။
မလိုအပ်ပါက iptables/firewalld ကို ပိတ်ပါ။
5.5 အပလီကေးရှင်း ဆက်တင်များ
မကြာခဏဆိုသလို လိုင်းတစ်ခု (ကွန်ရက်တစ်ခုစီနှင့် ကိုက်ညီသော) bandwidth အများဆုံးရရှိရန် မလုံလောက်ပါ။ AMD ကဲ့သို့ အချို့သော ပလပ်ဖောင်းဗိသုကာများသည် Intel-based ပရိုဆက်ဆာများနှင့် နှိုင်းယှဉ်ပါက တစ်ခုတည်းသောချည်မျှင်ဖြင့် Rx packet များကို ပိုမိုချပေးလေ့ရှိသည်။
အပလီကေးရှင်းများကို NUMA node သို့မဟုတ် CPU cores များတွင် ကွန်ရက်စက်ပစ္စည်းသို့ ချိတ်ဆက်ရန်အတွက် taskset သို့မဟုတ် numactl ကဲ့သို့သော ကိရိယာများကို အသုံးပြုရန် စဉ်းစားပါ။ သိုလှောင်မှု I/O ကဲ့သို့သော အချို့သော အလုပ်တာဝန်များအတွက်၊ အပလီကေးရှင်းကို စက်တွင်းမဟုတ်သော node တစ်ခုသို့ ရွှေ့ခြင်းသည် အကျိုးရှိစေသည်။
ဖြစ်နိုင်ပါက သင့်အပလီကေးရှင်းမှ အသုံးပြုသည့် thread အရေအတွက်ကို တိုးမြှင့်ခြင်းဖြင့် စမ်းသပ်ပါ။
5.6 Kernel ဗားရှင်း
ခေတ်မီ ဘောက်စ်အတွင်းပိုင်း kernel အများစုသည် စွမ်းဆောင်ရည်အတွက် ကောင်းမွန်စွာ ပြုပြင်ထားသော်လည်း သင့်အသုံးပြုမှုအခြေအနေပေါ်မူတည်၍ kernel ကို အပ်ဒိတ်လုပ်ခြင်းသည် ပိုမိုကောင်းမွန်သော စွမ်းဆောင်ရည်ကို ပေးစွမ်းနိုင်ပါသည်။ အရင်းအမြစ်ကို ဒေါင်းလုဒ်လုပ်ခြင်းသည် kernel မတည်ဆောက်မီ အချို့သောအင်္ဂါရပ်များကို ဖွင့်/ပိတ်နိုင်စေပါသည်။
5.7 Operating System/Kernel ဆက်တင်များ
အထွေထွေလည်ပတ်မှုစနစ် ချိန်ညှိခြင်းဆိုင်ရာ ပိုမိုထိုးထွင်းသိမြင်နိုင်စေရန်အတွက် Red Hat Enterprise Linux Network Performance Tuning Guide ကဲ့သို့သော လည်ပတ်မှုစနစ် ချိန်ညှိခြင်းလမ်းညွှန်များကို ဖတ်ရှုပါ။
အသံညှိရန် ဘုံဘောင်အချို့ကို အောက်ပါဇယားတွင် ဖော်ပြထားပါသည်။ ၎င်းတို့သည် အကြံပြုထားသည့် အစမှတ်များသာဖြစ်ကြောင်း သတိပြုပါ၊ ၎င်းကို ပုံသေများမှ ပြောင်းလဲခြင်းဖြင့် စနစ်တွင် အသုံးပြုသည့် အရင်းအမြစ်များကို တိုးမြင့်လာစေနိုင်ပါသည်။ တန်ဖိုးများကို တိုးမြှင့်ခြင်းသည် စွမ်းဆောင်ရည်ကို မြှင့်တင်ရာတွင် အထောက်အကူဖြစ်စေသော်လည်း ပေးထားသည့်စနစ်၊ အလုပ်ပမာဏနှင့် ယာဉ်အသွားအလာ အမျိုးအစားအတွက် မည်သည့်အရာက အကောင်းဆုံးဖြစ်ကြောင်း ဆုံးဖြတ်ရန် မတူညီသော တန်ဖိုးများကို စမ်းသပ်ရန် လိုအပ်ပါသည်။
kernel parameters များသည် အောက်တွင်ဖော်ပြထားသည့်အတိုင်း Linux ရှိ sysctl utility ကိုအသုံးပြု၍ configure လုပ်နိုင်ပါသည်။
ရန် view စနစ်ရှိ rmem နှင့် wmem အတွက် မူရင်းတန်ဖိုးများ-
sysctl net.core.rmem_default
sysctl net.core.wmem_default
တန်ဖိုးများကို အများဆုံး (16 MB) သို့ သတ်မှတ်ပါ-
sysctl -w net.core.rmem_max=16777216
sysctl -w net.core.wmem_max=16777216
လက်ခံကြားခံ (rmem) နှင့် transmit buffer (wmem) ဟုလည်းသိကြသော ပေါက်ပေါက်ကြားခံအရွယ်အစားများသည် အဝင်နှင့်အထွက်ကွန်ရက်အသွားအလာအတွက် သီးသန့်ထားရှိသော မှတ်ဉာဏ်ပမာဏကို သတ်မှတ်ပေးသည့် စနစ်ဘောင်များဖြစ်သည်။
-w အငြင်းအခုံမပါဘဲ sysctl ကိုလုပ်ဆောင်ခြင်းသည် ၎င်း၏လက်ရှိဆက်တင်ဖြင့် ပါရာမီတာကို ဖော်ပြသည်။

Stack ဆက်တင် ဖော်ပြချက်
net.core.rmem_default မူရင်း လက်ခံ Window Size
net.core.wmem_default မူရင်း Transmit Window Size
net.core.rmem_max အများဆုံး လက်ခံ Window Size
net.core.wmem_max အများဆုံး Transmit Window Size
net.core.optmem_max အများဆုံးရွေးချယ်စရာ Memory Buffers
net.core.netdev_max_backlog kernel မကျဆင်းမီ မလုပ်ဆောင်ရသေးသော ပက်ကတ်များ၏ နောက်ခံမှတ်တမ်း
net.ipv4.tcp_rmem TCP read buffers အတွက် Memory reserver
net.ipv4.tcp_wmem TCP အတွက် Memory reserver သည် ကြားခံများ ပေးပို့သည်။

Kernel၊ network stack, memory handler, CPU speed, and power management parameters များသည် network performance အပေါ် ကြီးမားသော အကျိုးသက်ရောက်မှုရှိနိုင်ပါသည်။ အများအားဖြင့် အကြံပြုချက်မှာ network throughput pro သို့ အသုံးချရန်ဖြစ်သည်။file tuned command ကို အသုံးပြု. ၎င်းသည် ကွန်ရက်ချိတ်ဆက်ခြင်းဆိုင်ရာ အပလီကေးရှင်းများကို ဦးစားပေးရန် OS ဆက်တင်အချို့ကို ပြင်ဆင်ပေးသည်။
စစ်ဆေးရန်-
tuned-adm တက်ကြွသည်။
သတ်မှတ်သည်-
tuned-adm profile ကွန်ရက်ဖြတ်သန်းမှု
5.8 ကွန်ရက် ကိရိယာ နောက်ခံမှတ်တမ်း
ဤအင်္ဂါရပ်သည် အဝင်အသွားအလာများကို ထိရောက်စွာ စီမံခန့်ခွဲခြင်း၊ ပက်ကတ်ဆုံးရှုံးမှုကို လျှော့ချခြင်း၊ latency ကို လျှော့ချခြင်းနှင့် ဖြတ်သန်းမှုကို မြှင့်တင်ခြင်းဖြင့် ကွန်ရက်စွမ်းဆောင်ရည်ကို မြှင့်တင်ပေးပါသည်။ ၎င်းသည် အသုံးပြုသူအတွေ့အကြုံနှင့် ပိုမိုမြန်ဆန်သော စနစ်တုံ့ပြန်မှုကို ဖြစ်စေသည်။
မူရင်းအားဖြင့်၊ ၎င်းကို Linux လည်ပတ်မှုစနစ်အများစုတွင် ဖွင့်ထားသည်။ မူရင်းတန်ဖိုးကို စစ်ဆေးရန်-
sysctl net.core.netdev_max_backlog
netdev_max_backlog အတွက် အမြင့်ဆုံးတန်ဖိုးသည် kernel ဗားရှင်း၊ ဟာ့ဒ်ဝဲ၊ မမ်မိုရီနှင့် အလုပ်တာဝန်တို့ကဲ့သို့သော အချက်များပေါ်မူတည်၍ ကွဲပြားနိုင်သည်။ များစွာသောကိစ္စများတွင် 8192 ကို ကောင်းသောတန်ဖိုးအဖြစ် ရှုမြင်သည်။ sysctl -w net.core.netdev_max_backlog=8192
5.9 ပလပ်ဖောင်း-သီးသန့်ဖွဲ့စည်းပုံများနှင့် ချိန်ညှိခြင်း။
5.9.1 4th Generation Intel® Xeon® Scalable ပရိုဆက်ဆာများ

Intel® 4th Generation Intel® Xeon® Scalable ပရိုဆက်ဆာ၏ ပါဝါစီမံခန့်ခွဲမှုသည် 3rd Generation Intel® Xeon® Scalable ပရိုဆက်ဆာများနှင့် နှိုင်းယှဉ်ပါက အလွန်ပြင်းထန်သည်။ cores များသည် ပါဝါနိမ့်သောပြည်နယ်များထဲသို့ မဝင်စေရန် ၊ ၎င်းတို့ကို ကြာကြာနိုးနေစေရန်အတွက် အသုံးပြုနေသော Core အရေအတွက်ကို လျှော့ချကြည့်ပါ။
အမြင့်ဆုံးစွမ်းဆောင်ရည်အတွက် Bios ဆက်တင်များကို အကြံပြုထားသည်။

  1. CPU ပေါ်ရှိ Hyper-threading (အလုပ်လိုအပ်ချက်နှင့် စွမ်းဆောင်ရည်ပန်းတိုင်များပေါ်အခြေခံ၍) ဖွင့်/ပိတ်ပါ။
  2. စနစ်လိုလားသူကို သတ်မှတ်ပါ။file အမြင့်ဆုံးစွမ်းဆောင်ရည်အတွက် စွမ်းဆောင်ရည်။
    မှတ်ချက်
    ၎င်းသည် ပါဝါသုံးစွဲမှု မြင့်မားစေသည်။
  3. ပါဝါထိရောက်မှုထက် အမြင့်ဆုံး CPU စွမ်းဆောင်ရည်ကို ဦးစားပေးရန် CPU ပါဝါစီမံခန့်ခွဲမှုကို အမြင့်ဆုံးစွမ်းဆောင်ရည်အဖြစ် သတ်မှတ်ပါ။
  4. Turbo Boost ကိုဖွင့်ပါ။ System BIOS ဆက်တင်များတွင် Turbo Boost ကိုပိတ်ထားခြင်းသည် ပုံမှန်အားဖြင့် CPU သည် ၎င်း၏အခြေခံကြိမ်နှုန်းထက် ၎င်း၏နာရီအမြန်နှုန်းကို ဒိုင်းနမစ်ဖြင့် တိုးမြှင့်ခြင်းမှ တားဆီးပေးသည်။
  5. မှတ်ချက်
    Turbo Boost ကိုပိတ်ထားခြင်းသည် တသမတ်တည်းစွမ်းဆောင်ရည်၊ ပါဝါထိရောက်မှု၊ သို့မဟုတ် အပူပိုင်းစီမံခန့်ခွဲမှုကို အများဆုံးစွမ်းဆောင်ရည်ထက် ဦးစားပေးလုပ်ဆောင်သည့် အချို့သောအသုံးပြုမှုကိစ္စများတွင် သင့်လျော်ပါသည်။
  6. စနစ်သည် virtualization နည်းပညာများကို အသုံးမပြုပါက Single Root I/O Virtualization (SR-IOV) ဝန်ဆောင်မှုကို ပိတ်ပါ။
  7. CPU အား တက်ကြွနေစေရန် ညွှန်ကြားရန်နှင့် ပိုမိုနက်နဲသော idle state များအတွင်းသို့ ဝင်ရောက်ခြင်းကို တားဆီးရန် C-states များကို ပိတ်ပါ။
  8. CPU သည် အသက်ဝင်နေပြီး C1E idle အခြေအနေသို့ မဝင်ကြောင်းသေချာစေရန် C1E ကို ပိတ်ပါ။
  9. စနစ်အား အမြင့်ဆုံးရရှိနိုင်သည့် ကြိမ်နှုန်းဖြင့် လုပ်ဆောင်ရန် ညွှန်ကြားရန်အတွက် uncore ကြိမ်နှုန်းကို အမြင့်ဆုံးသို့ သတ်မှတ်ပါ။
  10. Dell ပလပ်ဖောင်းများတွင်၊ Multiple APIC ဖော်ပြချက် Table (MADT) core emulation ကို Linear (သို့မဟုတ် BIOS ပေါ်မူတည်၍ Round-Robin) သို့ CPU cores များ၏ ရှင်းလင်းပြီး ခန့်မှန်းနိုင်သော မြေပုံထုတ်ခြင်းကို ပံ့ပိုးပေးပါသည်။

အကောင်းဆုံးစွမ်းဆောင်ရည်အတွက် အကြံပြုထားသော OS Level Tunings

  1. CPU ကြိမ်နှုန်းကို ချဲ့ထွင်ခြင်းဝန်ကို စွမ်းဆောင်ရည်အဖြစ် သတ်မှတ်ပါ။ cpupower ကြိမ်နှုန်း-အစုံ-g စွမ်းဆောင်ရည် cpupower ကြိမ်နှုန်း-အင်ဖို
  2. C-States ကို ပိတ်ပါ။ cpupower idle-set -D0
  3. Core Rx (rmem) နှင့် Tx (wmem) ကြားခံများကို အမြင့်ဆုံးတန်ဖိုးအဖြစ် သတ်မှတ်ပါ။ sysctl -w net.core.rmem_max=16777216 sysctl -w net.core.wmem_max=16777216
  4. ကွန်ရက်စက်ပစ္စည်း နောက်ကျကျန်မှုကို သတ်မှတ်ပါ။ sysctl -w net.core.netdev_max_backlog=8192
  5. စောင့်မျှော်နေသော လိုလားသူများကို သတ်မှတ်ပါ။file (ဖြတ်သန်းမှု/latency အတွက် အလုပ်ဝန်မူတည်သည်)။
    tuned-adm profile ကွန်ရက်ဖြတ်သန်းမှု

အကောင်းဆုံးစွမ်းဆောင်ရည်အတွက် အကြံပြုထားသော Adapter Level Tunings

  1. အပလီကေးရှင်းအသွားအလာအတွက် အသုံးပြုရန် တန်းစီအရေအတွက်ကို ကန့်သတ်ပါ။ ဆက်စပ် CPU cores များကို ပိုမိုနက်ရှိုင်းသော idle state များမဝင်စေရန် (အလုပ်ချိန်အတွက် ပြင်ဆင်ခြင်း)- ethtool -L ကို ထိန်းသိမ်းထားရန် လိုအပ်သော တန်းစီမှုအနည်းဆုံးအရေအတွက်ကို အသုံးပြုပါ။ ပေါင်းစပ် ၃၂
  2. ကြားဖြတ် ထိန်းညှိမှုနှုန်းများ သတ်မှတ်ပါ။ ethtool -C adaptive-rx off adaptive-tx rx-usecs-high 50 rx-usecs 50 tx-usecs 50
    အလုပ်တာဝန်အတွက် အကောင်းဆုံးတန်ဖိုးကိုရှာရန် ပို့လွှတ်/လက်ခံ/ဦးစားပေး ပေါင်းစပ်ချိန်စက်ကို ချိန်ညှိကြည့်ပါ (80/100/150/200) သို့မဟုတ် အောက် (25/20/10/5) ကို ချိန်ညှိကြည့်ပါ။
  3. Rx/Tx လက်စွပ်အရွယ်အစားများကို သတ်မှတ်ပါ။ ethtool -G rx 4096 tx 4096
    မှတ်ချက်
    Rx packet သည် ethtool -S| ဖြင့် ကျဆင်းသွားသည်ကို တွေ့ပါက grep drop၊ လက်စွပ်အရွယ်အစားကို <4096 သို့ လျှော့ချကြည့်ပါ။ ပက်ကေ့ချ်များ ကျဆင်းသွားသည့် အလုပ်ဝန်အတွက် အကောင်းဆုံးတန်ဖိုးကို ရှာကြည့်ပါ။
  4. IRQ Affinity ကို သတ်မှတ်ပါ။ NIC မှ cores များကို ဒေသန္တရ cores ကိုသုံးပါ သို့မဟုတ် တိကျသော core mapping (# cores သည် စာမျက်နှာ 1 တွင် 26 တွင်သတ်မှတ်ထားသော တန်းစီခြင်းအရေအတွက်နှင့်ညီမျှပါသည်။ systemctl ရပ်တန့်ထားသော irqbalance set_irq_affinity -X စက်တွင်း သို့မဟုတ် set_irq_affinity -X

5.9.2 AMD EPYC
AMD EPYC ပရိုဆက်ဆာများသည် AMD ၏ Zen ဗိသုကာဖြင့်တည်ဆောက်ထားသော ဆာဗာများနှင့် ဒေတာစင်တာများအတွက် အားကောင်းသော CPU များဖြစ်သည်။ အောက်ပါဆက်တင်များသည် AMD ၏ 4th မျိုးဆက် EPYC စီးရီးမှဖြစ်သည်။
အမြင့်ဆုံးစွမ်းဆောင်ရည်အတွက် BIOS ဆက်တင်များကို အကြံပြုထားသည်။

  1. CPU စွမ်းဆောင်ရည်၊ ပါဝါသုံးစွဲမှုနှင့် အခြားဆက်တင်များကို ချိန်ညှိရန် အသုံးပြုသူများကို ခွင့်ပြုရန် စိတ်ကြိုက်မုဒ်ကို ဖွင့်ပါ။ ၎င်းသည် စွမ်းဆောင်ရည်နှင့် စွမ်းအင်ထိရောက်မှုကြား အကောင်းဆုံးချိန်ခွင်လျှာအတွက် စနစ်ကို ကောင်းစွာချိန်ညှိရာတွင် ကူညီပေးသည်။
  2. ပိုမိုပြင်းထန်သောလုပ်ဆောင်မှုများကိုကိုင်တွယ်ရန်၊ အလုံးစုံစွမ်းဆောင်ရည်ကိုတိုးတက်ကောင်းမွန်လာစေရန်အတွက် CPU သည် ၎င်း၏အမြန်နှုန်းကိုအလိုအလျောက်တိုးမြှင့်နိုင်စေရန် core စွမ်းဆောင်ရည်မြှင့်တင်ခြင်းကိုဖွင့်ပါ။
  3. တုံ့ပြန်မှုကိုထိန်းသိမ်းထားနိုင်သည့် C-states ဟုလူသိများသောပိုမိုနက်ရှိုင်းသောပါဝါချွေတာသည့်ပြည်နယ်များထဲသို့ CPU မှဝင်ရောက်ခြင်းမှတားဆီးရန်အတွက် global C-state ထိန်းချုပ်မှုကိုပိတ်ထားပါ။
    မှတ်ချက်
    C-states များကို ပိတ်ထားခြင်းသည် ပါဝါသုံးစွဲမှုနှင့် အပူအပူချိန်များ တိုးလာစေနိုင်သည်။ အလုပ်တာဝန်အတွက်ရော စောင့်ကြည့်ပါ။
  4. အလုပ်ချိန်လိုအပ်ချက်နှင့် စွမ်းဆောင်ရည်ပန်းတိုင်များကို အခြေခံ၍ CPU ပေါ်တွင် တစ်ပြိုင်နက်တည်း Multithreading (SMT) ကို ဖွင့်/ပိတ်ပါ။ SMT သည် Intel CPU များတွင် Hyper Threading နှင့် ညီမျှသည်။
    မှတ်ချက်
    အကောင်းဆုံးစွမ်းဆောင်ရည်အတွက်၊ အကြံပြုထားသော OS နှင့် အဒက်တာအဆင့်ညှိခြင်းအတွက် စာမျက်နှာ 40 ရှိ Tuning i13e Driver ဆက်တင်များနှင့် စာမျက်နှာ 40 ရှိ ပလပ်ဖောင်းချိန်ညှိခြင်း (i19e သီးသန့်မဟုတ်သော) ကို ကိုးကားပါ။

Adapter Bonding

Linux Bonding သည် ဆာဗာပတ်၀န်းကျင်များရှိ ကွန်ရက်စွမ်းဆောင်ရည်၊ မလိုအပ်ခြင်းနှင့် အမှားအယွင်းများကို သိသိသာသာ မြှင့်တင်ပေးနိုင်သည့် အစွမ်းထက်သောအင်္ဂါရပ်တစ်ခုဖြစ်သည်။ သို့သော်၊ ၎င်းသည် တွဲဖက်အသုံးပြုနိုင်သော ကွန်ရက် ဟာ့ဒ်ဝဲနှင့် ဆာဗာနှင့် ခလုတ်နှစ်ခုလုံးတွင် သင့်လျော်သော ဖွဲ့စည်းမှုစနစ် လိုအပ်ကြောင်း သတိပြုရန် အရေးကြီးပါသည်။
Linux ရှိ bonding driver သည် သင့်အား ချိတ်ဆက်ထားသော အင်တာဖေ့စ်တစ်ခုသို့ ရုပ်ပိုင်းဆိုင်ရာကွန်ရက်အင်တာဖေ့စ်များစွာကို စုစည်းနိုင်စေပါသည်။ ဤချိတ်ဆက်ထားသော မျက်နှာပြင်သည် လည်ပတ်မှုစနစ်နှင့် အက်ပ်လီကေးရှင်းများအတွက် တစ်ခုတည်းသော virtual network interface တစ်ခုအဖြစ် ပေါ်လာသည်။
မှတ်ချက်
နှောင်ကြိုးသည် ယုတ္တိရှိသော အင်တာဖေ့စ်တစ်ခုဖြစ်သောကြောင့် CPU ရင်းနှီးမှုကို ဘွန်းအင်တာဖေ့စ်တွင် တိုက်ရိုက်သတ်မှတ်ရန် မဖြစ်နိုင်ပါ (ဥပမာ၊ample၊ bond0)။ ဆိုလိုသည်မှာ၊ ၎င်းတွင် ကြားဖြတ်ကိုင်တွယ်ခြင်း သို့မဟုတ် CPU ဆက်စပ်မှုအပေါ် တိုက်ရိုက်ထိန်းချုပ်မှု မရှိပါ။ နှောင်ကြိုး၏တစ်စိတ်တစ်ပိုင်းဖြစ်သော အရင်းခံအင်တာဖေ့စ်များအတွက် CPU Affinity ကို ပြင်ဆင်သတ်မှတ်ရပါမည်။
Bonding သည် လုပ်ဆောင်ချက်များစွာကို ပံ့ပိုးပေးသည်၊ တစ်ခုစီသည် ၎င်း၏ကိုယ်ပိုင်လက္ခဏာများရှိသည်။

မုဒ်  ရိုက်ပါ။
0 ရော်ဘင်ဝိုင်း
1 Active Backup
2 XOR
3 ထုတ်လွှင့်သည်။
4 LACP
5 Load Balance ကို ပို့ပါ။
6 Adaptive Load Balance

Linux တွင် ချိတ်ဆက်မှုတစ်ခုဖန်တီးရန် မတူညီသောနည်းလမ်းများရှိသည်။ အသုံးအများဆုံးနည်းလမ်းများထဲမှတစ်ခုမှာ network configuration ကိုအသုံးပြုခြင်းဖြင့်ဖြစ်သည်။ files (ဥပမာample၊ /etc/network/ interfaces သို့မဟုတ် /etc/sysconfig/network-scripts/ifcfg-bondX)။
Network Configuration ကိုအသုံးပြု၍ ဖွဲ့စည်းမှုပုံစံ Files
အောက်ပါအဆင့်များသည် ကွန်ရက်ဖွဲ့စည်းမှုစနစ်တစ်လျှောက် ချိတ်ဆက်မှုကို ဖန်တီးပေးသည်။ files.

  1. ချိတ်ဆက်ခြင်းအတွက် NIC port နှစ်ခု သို့မဟုတ် ထို့ထက်ပို၍ ရွေးပါ (ဥပမာample၊ ethX နှင့် ethY)
  2. NIC Configuration ကိုဖွင့်ပါ။ Fileလိုအပ်သော NIC Interface အတွက် /etc/sysconfig/network-scripts/ အောက်တွင် s (ex forample, vi ifcfg-ethX နှင့် vi ifcfg-ethY) နှင့် အောက်ပါစာသားကို ဖြည့်စွက်ပါ။
    MASTER=bondN [မှတ်ချက်- N သည် ငွေချေးစာချုပ်နံပါတ်ကို ဖော်ပြရန် ကိန်းပြည့်ဖြစ်သည်။] SLAVE=yes
  3. နှောင်ကြိုးကွန်ရက် script ကိုဖန်တီးပါ။ file vi /etc/sysconfig/networkscripts/ifcfg-bondN ကိုအသုံးပြု၍ အောက်ပါစာသားကို ရိုက်ထည့်ပါ။
    DEVICE=bondN [မှတ်ချက်- N သည် ငွေချေးစာချုပ်နံပါတ်ကို ဖော်ပြရန် ကိန်းပြည့်ဖြစ်သည်] ONBOOT=yes USERCTL=no BOOTPROTO=dhcp (သို့မဟုတ်) none
    IPADDR=200.20.2.4 [လိုအပ်ပါက BOOTPROTO=none] NETMASK=255.255.255.0 [လိုအပ်ပါက BOOTPROTO=none] NETWORK=200.20.2.0 [လိုအပ်ပါက BOOTPROTO=none] [လိုအပ်ပါက BROADCAST200.20.2.255 BOOTPROTO=none] BONDING_OPTS=”မုဒ်=1 miimon=100″
    မှတ်ချက်
    မုဒ်သည် လိုအပ်ချက်အပေါ်အခြေခံ၍ 0 မှ 6 အထိ မည်သည့်ကိန်းပြည့်မဆို ဖြစ်နိုင်သည်။
  4. ဝန်ဆောင်မှုကွန်ရက်ပြန်လည်စတင်ခြင်း သို့မဟုတ် systemctl NetworkManager.service ကိုအသုံးပြုပြီး ကွန်ရက်ဝန်ဆောင်မှုများကို ပြန်လည်စတင်ပါ။

စွမ်းဆောင်ရည် ပြဿနာဖြေရှင်းခြင်း။

7.1 CPU အသုံးပြုမှု
အလုပ်ဝန်လုပ်နေချိန်မှာ CPU အသုံးချမှုကို စစ်ဆေးပါ။
ကွန်ရက်တစ်ခုစီတိုင်းတွင် CPU အသုံးချခြင်းဆိုင်ရာ အကြံဥာဏ်ကိုပေးသောကြောင့် core တစ်ခုစီကို အသုံးပြုခြင်းသည် အလုံးစုံ CPU အသုံးချခြင်းထက် စွမ်းဆောင်ရည်နှင့် ပိုမိုသက်ဆိုင်ကြောင်း သတိပြုပါ။ သင့်တွင် ကွန်ရက်အသွားအလာကို လုပ်ဆောင်နေသည့် စာတွဲအနည်းငယ်သာ ရှိပါက၊ သင်သည် core အချို့ကိုသာ အသုံးပြုနိုင်သည်။ သို့သော်လည်း အဆိုပါ cores များသည် 100% တွင်ရှိနေပါက၊ သင်၏ network throughput ကို CPU အသုံးချခြင်းဖြင့် ကန့်သတ်နိုင်ဖွယ်ရှိပြီး အောက်ပါတို့ကို လုပ်ဆောင်ရန် အချိန်တန်ပြီ-

  1. Interrupt Moderation တွင်အသေးစိတ်အတိုင်း IRQ ထိန်းညှိခြင်း/လက်စွပ်အရွယ်အစားကို ချိန်ညှိပါ။
  2. cores များထက် CPU load ကိုဖြန့်ကျက်ရန် application thread အရေအတွက်ကို တိုးပါ။ cores အားလုံး 100% လည်ပတ်နေပါက၊ သင်၏ application သည် network bound မဟုတ်ဘဲ CPU ကို ချည်နှောင်ထားနိုင်သည်။

အသုံးများသောကိရိယာများ-

  • ထိပ်တန်း
    — CPU များစာရင်းကို ချဲ့ထွင်ရန် 1 ကို နှိပ်ပြီး မည်သည့်အရာများကို အသုံးပြုနေကြောင်း စစ်ဆေးပါ။
    - အသုံးပြုမှုအဆင့်ကိုသတိပြုပါ။
    — မည်သည့်လုပ်ငန်းစဉ်များကို အတက်ကြွဆုံး (စာရင်း၏ထိပ်ဆုံး) အဖြစ် ဖော်ပြထားကြောင်း သတိပြုပါ။
  • mpstat
    အောက်ပါ example command line ကို Red Hat Enterprise Linux 7.x တွင် စမ်းသပ်ခဲ့သည်။
    ၎င်းသည် core တစ်ခုစီအတွက် CPU အသုံးချမှုကို ပြသသည် (စုစုပေါင်း ရာခိုင်နှုန်းကို ပျင်းရိမှုကို ရှာဖွေပြီး 100 မှ နုတ်ခြင်းဖြင့်) ပြသပြီး 80% အထက်တန်ဖိုးများကို အနီရောင်ဖြင့် မီးမောင်းထိုးပြသည်။ mpstat -P ALL 1 1 | grep -v ပျမ်းမျှ | အမြီး -n +5 | ဦးခေါင်း -n -1| awk '{ print (100-$13)}' | egreg -color=အမြဲတမ်း '[^\.][8-9][0-9][\.]?.*|^[8-9][0-9][\.]?.*| 100|' | ကော်လံ
  • perf top သံသရာများအသုံးပြုနေသည့်နေရာကို ရှာကြည့်ပါ။

7.2 i40e ကောင်တာများ
i40e ဒရိုက်ဘာသည် ethtool -S ethX အမိန့်ဖြင့် အင်တာဖေ့စ် အမှားရှာခြင်းနှင့် စောင့်ကြည့်ခြင်းအတွက် ကောင်တာများ၏ စာရင်းရှည်ကို ပေးသည်။ အလုပ်ဝန်တစ်ခုလည်ပတ်နေချိန်တွင် အထွက်ကိုကြည့်ရှုရန်နှင့်/သို့မဟုတ် အလုပ်ပမာဏမလုပ်ဆောင်မီနှင့် ပြီးနောက် တန်ပြန်တန်ဖိုးများကို နှိုင်းယှဉ်ကြည့်ရန် အထောက်အကူဖြစ်နိုင်သည်။

  • i40e ကောင်တာများ၏ အမှိုက်ပုံကြီးကို ရယူရန်- ethtool -S ethX
  • သုညမဟုတ်သောကောင်တာများကိုကြည့်ရှုရန်-d (ethtool -S ethX) | egrep -v :\ 0 | ကော်လံ
    ရှာဖွေရန် အချို့အရာများ-
  • rx_dropped ဆိုသည်မှာ CPU သည် buffers များကို လုံလောက်အောင် မြန်ဆန်စွာ ဆောင်ရွက်ပေးခြင်းမရှိပါ။
  • port.rx_dropped ဆိုသည်မှာ slot/memory/ system တွင် တစ်စုံတစ်ခု လျင်မြန်မှု မရှိဟု ဆိုလိုသည်။

7.3 ကွန်ရက်ကောင်တာများ
netstat -s ကို အလုပ်မလုပ်နိုင်မီ/ပြီးနောက် စစ်ဆေးပါ။
Netstat သည် စနစ်အတွင်းရှိ ကွန်ရက်စက်ပစ္စည်းများအားလုံးမှ ကွန်ရက်အချက်အလက်ကို စုဆောင်းသည်။ ထို့ကြောင့်၊ စမ်းသပ်ဆဲကွန်ရက်မှလွဲ၍ အခြားကွန်ရက်များမှ ရလဒ်များကို သက်ရောက်မှုရှိနိုင်သည်။ netstat -s မှထွက်ရှိမှုသည် Linux လည်ပတ်မှုစနစ် သို့မဟုတ် kernel ရှိ စွမ်းဆောင်ရည်ပြဿနာများအတွက် ကောင်းမွန်သောညွှန်ပြချက်တစ်ခုဖြစ်သည်။ အထွေထွေလည်ပတ်မှုစနစ် ချိန်ညှိခြင်းဆိုင်ရာ ပိုမိုထိုးထွင်းသိမြင်နိုင်စေရန်အတွက် Red Hat Enterprise Linux Network Performance Tuning Guide ကဲ့သို့သော လည်ပတ်မှုစနစ် ချိန်ညှိခြင်းလမ်းညွှန်များကို ဖတ်ရှုပါ။
7.4 စနစ်မှတ်တမ်းများ
အမှားများနှင့် သတိပေးချက်များ (/var/log/messages, dmesg) အတွက် စနစ်မှတ်တမ်းများကို စစ်ဆေးပါ။
7.5 Intel svr-info တူးလ်
Intel သည် svr-info tool ကို ပံ့ပိုးပေးသည် (ကြည့်ပါ။ https://github.com/intel/svr-info) ဆာဗာတစ်ခုမှ သက်ဆိုင်ရာ ဟာ့ဒ်ဝဲနှင့် ဆော့ဖ်ဝဲအသေးစိတ်များကို ဖမ်းယူသည့် Linux အတွက်။ svr-info output သည် အလုပ်တာဝန်အတွက် အကောင်းဆုံးမဟုတ်သော စနစ်ပိတ်ဆို့မှုများ သို့မဟုတ် ဆက်တင်များ/ ချိန်ညှိမှုများကို ဖော်ထုတ်ရန် အလွန်အထောက်အကူဖြစ်စေပါသည်။ Ethernet နှင့်ပတ်သက်သော စွမ်းဆောင်ရည်ဆိုင်ရာ ပြဿနာများအတွက် Intel ဖြင့် ပံ့ပိုးမှုကိစ္စရပ်ကို ဖွင့်သောအခါ၊ svr-info output ကို ထည့်သွင်းရန် သေချာစေပါ (စာသား file) စမ်းသပ်ဖွဲ့စည်းမှုတွင် Linux ဆာဗာတစ်ခုစီအတွက်။

  1. svr-info ကိုဒေါင်းလုဒ်လုပ်ပြီး ထည့်သွင်းပါ-
    wget -qO- https://github.com/intel/svr-info/releases/latest/download/svrinfo.tgz| tar xvz cd svr-အင်ဖို
    ./svr-info
    > hostname.txt
  2. အထွက်ကို စုဆောင်းပါ
    ./svr-info > hostname.txt
  3. စာသားတစ်ခု (.txt) ပူးတွဲပါ file ဆာဗာတစ်ခုစီအတွက် သင်၏ Intel ပံ့ပိုးမှုကိစ္စအား ခွဲခြမ်းစိတ်ဖြာရန်။

အသုံးများသော လုပ်ဆောင်မှုအခြေအနေများအတွက် အကြံပြုချက်များ

8.1 IP ထပ်ဆင့်ပို့ခြင်း။

  • kernel ကို အပ်ဒိတ်လုပ်ပါ။
    လုံခြုံရေးကြောင့် လမ်းကြောင်းတင်ကုဒ်ကို ဖယ်ရှားပြီးနောက် အချို့သော မကြာသေးမီက စက်တွင်းရှိ kernel များသည် လမ်းကြောင်းပြကုဒ်ရှိ kernel အပြောင်းအလဲများကြောင့် လမ်းကြောင်းတင်ခြင်းစွမ်းဆောင်ရည် ကျဆင်းသွားပါသည်။ မကြာသေးမီက distro kernels များတွင် အဆိုပါပြောင်းလဲမှုများ၏ စွမ်းဆောင်ရည်သက်ရောက်မှုကို သက်သာစေပြီး ပိုမိုကောင်းမွန်သော စွမ်းဆောင်ရည်ကို ပေးစွမ်းနိုင်သည့် ဖာထေးမှုများ ရှိသင့်သည်။
  • hyper-threading (logical cores) ကို ပိတ်ပါ။
  • kernel boot ဘောင်များကို တည်းဖြတ်ပါ။
    — virtualization အတွက် မလိုအပ်ဘဲ kernel boot line မှ iommu (intel_iommu=off သို့မဟုတ် iommu=off) ကို အတင်းပိတ်ပါ။
    — ပါဝါစီမံခန့်ခွဲမှုကို ပိတ်ပါ- processor.max_cstates=1 idle=poll pcie_aspm=off
  • local socket ရှိ cores အရေအတွက်နှင့် ညီမျှစေရန် တန်းစီအရေအတွက်ကို ကန့်သတ်ပါ (ဤ ex တွင် 12ample) ethtool -L ethX ပေါင်းစပ် ၁၂
  • စက်တွင်း socket တွင်သာ ကြားဖြတ်များကို ပင်ထိုးပါ။ set_irq_affinity -X ဒေသဆိုင်ရာ ethX သို့မဟုတ် set_irq_affinity -X ဒေသဆိုင်ရာ ethX
    မှတ်ချက်
    -X သို့မဟုတ် -x သည် လုပ်ငန်းတာဝန်ပေါ်မူတည်၍ အသုံးပြုနိုင်သည်။
  • Tx နှင့် Rx လက်စွပ်အရွယ်အစားများကို လိုအပ်သလို ပြောင်းလဲပါ။ ပိုကြီးသောတန်ဖိုးတစ်ခုသည် အရင်းအမြစ်ပိုယူသော်လည်း ပိုမိုကောင်းမွန်သော ထပ်ဆင့်ပို့နှုန်းများကို ပေးစွမ်းနိုင်သည်။ ethtool -G ethX rx 4096 tx 4096
  • လမ်းကြောင်းပြသည့်အခါ GRO ကိုပိတ်ပါ။
    သိပြီးသား kernel ပြဿနာကြောင့်၊ လမ်းကြောင်းတင်ခြင်း/ထပ်ဆင့်ပို့သည့်အခါ GRO ကို ပိတ်ရပါမည်။ ethtool -K ethX gro off နေရာတွင် ethX သည် ပြုပြင်ရမည့် Ethernet interface ဖြစ်သည်။
  • လိုက်လျောညီထွေရှိသော ကြားဖြတ်ထိန်းချုပ်မှုကို ပိတ်ပြီး တည်ငြိမ်တန်ဖိုးတစ်ခု သတ်မှတ်ပါ။ ethtool -C ethX adaptive-rx off adaptive-tx off ethtool -C ethX rx-usecs 64 tx-usecs 64

မှတ်ချက်
ပရိုဆက်ဆာအမျိုးအစားနှင့် လုပ်ငန်းပမာဏပေါ်မူတည်၍ RX နှင့် TX အတွက် ပေါင်းစပ်ဘောင်များကို ပိုမိုကောင်းမွန်အောင် လုပ်ဆောင်နိုင်သည် (သို့မဟုတ် ဘောင်ဆုံးရှုံးမှုနည်း) အတွက် ချိန်ညှိနိုင်ပါသည်။

  • Firewall ကိုပိတ်ထားပါ။ sudo systemctl firewalld ကို disable sudo systemctl firewalld ကို ရပ်တန့်ပါ။
  • IP ထပ်ဆင့်ပို့ခြင်းကို ဖွင့်ပါ။ sysctl -w net.ipv4.ip_forward=1
  • လက်ခံခြင်းနှင့် ပေးပို့သည့် socket ကြားခံအရွယ်အစားများအတွက် အမြင့်ဆုံးတန်ဖိုးများကို စီစဉ်သတ်မှတ်ပါ။ sysctl -w net.core.rmem_max=16777216 sysctl -w net.core.wmem_max=16777216

မှတ်ချက်
အလုပ်ပမာဏ သို့မဟုတ် လိုအပ်ချက်ပေါ်မူတည်၍ ဤတန်ဖိုးများကို မူရင်းအတိုင်း ပြောင်းလဲနိုင်သည်။
8.2 Low Latency

  • hyper-threading (logical cores) ကို ပိတ်ပါ။
  • ကွန်ရက်စက်ပစ္စည်းသည် စက်အတွင်းမှ numa core 0 သို့ဖြစ်ကြောင်း သေချာပါစေ။
  • Taskset -c 0 ကို အသုံးပြု၍ အခြေခံ 0 သို့ စံမှတ်ကို ပင်ထိုးပါ။
  • systemctl stop irqbalance ကိုအသုံးပြု၍ irqbalance ကိုပိတ်ပါ သို့မဟုတ် systemctl irqbalance ကိုပိတ်ပါ
  • cores များကိုဖြန့်ကျက်ရန် affinity script ကိုဖွင့်ပါ။ ပြည်တွင်း သို့မဟုတ် အားလုံးကို စမ်းကြည့်ပါ။
  • အနှောက်အယှက်ဖြစ်စေသော စိစစ်မှုကို ပိတ်ပါ။ ethtool -C ethX rx-usecs 0 tx-usecs 0 adaptive-rx off adaptive-tx off rxusecs- မြင့်မားသော 0
  • local socket ရှိ cores အရေအတွက်နှင့် ညီမျှစေရန် တန်းစီအရေအတွက်ကို ကန့်သတ်ပါ (ဤ ex တွင် 32ample) ethtool -L ethX ပေါင်းစပ် ၁၂
  • စက်တွင်း ပေါက်ပေါက်တွင် ကြားဖြတ်များကို ပင်ထိုးပါ (i40e ဒရိုက်ဘာရင်းမြစ်ဖြင့် ထုပ်ပိုးထားသော ဇာတ်ညွှန်းများ)။ set_irq_affinity -X ဒေသဆိုင်ရာ ethX
  • netperf -t TCP_RR၊ netperf -t UDP_RR၊ သို့မဟုတ် NetPipe ကဲ့သို့ သတ်မှတ်ထားသော စံအမှတ်အသားကို အသုံးပြုပါ။ netperf -t TCP_RR သို့မဟုတ် netperf -t UDP_RR
  • ဒေသတွင်း NUMA node တွင် တစ်ခုတည်းသော core တွင် အခြေခံစံနှုန်းကို ပင်ထိုးပါ။ အလုပ်အစုံ -c

Intel ® Ethernet 700 စီးရီး
Linux Performance Tuning လမ်းညွှန်
ဒီဇင်ဘာလ 2024
ဒေါက်တာ နံပါတ်- 334019၊ ဗျာ- ၁.၂

စာရွက်စာတမ်းများ / အရင်းအမြစ်များ

Intel Ethernet 700 Series Linux Performance Tuning [pdf] အသုံးပြုသူလမ်းညွှန်
334019၊ Ethernet 700 Series Linux Performance Tuning၊ Ethernet 700 Series၊ Linux Performance Tuning၊ Performance Tuning၊ Tuning

ကိုးကား

မှတ်ချက်တစ်ခုချန်ထားပါ။

သင့်အီးမေးလ်လိပ်စာကို ထုတ်ပြန်မည်မဟုတ်ပါ။ လိုအပ်သောအကွက်များကို အမှတ်အသားပြုထားသည်။ *