इंटेल लोगोइंटेल ® ईथरनेट 700 सीरीज
लिनक्स प्रदर्शन ट्यूनिंग गाइड
नेक्स क्लाउड नेटवर्किंग ग्रुप (एनसीएनजी)
रेव. 1.2
दिसंबर 2024

संशोधन इतिहास

दोहराव तारीख टिप्पणियाँ
1.2 दिसंबर 2024 · अतिरिक्त पावर प्रबंधन मार्गदर्शन जोड़ा गया.
· इंटेल* टर्बो बूस्ट जोड़ा गया.
· नेटवर्क डिवाइस बैकलॉग जोड़ा गया.
· प्लेटफ़ॉर्म-विशिष्ट कॉन्फ़िगरेशन और ट्यूनिंग जोड़ा गया.
· 4th जनरेशन इंटेल* %eon* स्केलेबल प्रोसेसर जोड़ा गया।
· AMD EPYC जोड़ा गया.
· सिस्टम हार्डवेयर क्षमताओं की अद्यतन जाँच।
· iPerf2 अपडेट किया गया.
· iPerf3 अपडेट किया गया.
· अद्यतन Tx/Rx कतारें.
· अद्यतन इंटरप्ट मॉडरेशन.
· अद्यतन अंगूठी का आकार.
· अद्यतन प्लेटफार्म ट्यूनिंग (i40e गैर-विशिष्ट)।
· BIOS सेटिंग्स अद्यतन.
· अद्यतन सी-स्टेट नियंत्रण.
· अद्यतन सीपीयू आवृत्ति स्केलिंग.
· अद्यतन अनुप्रयोग सेटिंग्स.
· ऑपरेटिंग सिस्टम/कर्नेल सेटिंग्स अद्यतन.
· अद्यतन आईपी अग्रेषण.
· अद्यतन कम विलंबता.
अगस्त 2023 इस दस्तावेज़ में निम्नलिखित परिवर्तन शामिल हैं:
· संबंधित संदर्भ जोड़े गए.
· यह सुनिश्चित करना कि डीडीपी पैकेज ठीक से लोड हो रहा है, जोड़ा गया।
· iPerf2 जोड़ा गया.
· iPerf3 जोड़ा गया.
· नेटपरफ जोड़ा गया.
· अद्यतन IRQ आत्मीयता.
· Tx/Rx कतारें जोड़ी गईं.
· अद्यतन अंगूठी का आकार.
· जंबो फ्रेम्स जोड़ा गया.
· एडाप्टर बॉन्डिंग जोड़ा गया.
· इंटेल svr-info टूल जोड़ा गया.
1.0 मार्च 2016 प्रारंभिक रिलीज़ (इंटेल पब्लिक)।

परिचय

इस गाइड का उद्देश्य लिनक्स वातावरण में इंटेल ® ईथरनेट 700 सीरीज एनआईसी का उपयोग करके इष्टतम नेटवर्किंग प्रदर्शन के लिए वातावरण को ट्यून करने के लिए मार्गदर्शन प्रदान करना है। यह हार्डवेयर, ड्राइवर और ऑपरेटिंग सिस्टम की स्थितियों और सेटिंग्स पर ध्यान केंद्रित करता है जो नेटवर्क प्रदर्शन को बेहतर बना सकते हैं। यह ध्यान दिया जाना चाहिए कि नेटवर्किंग प्रदर्शन किसी भी बाहरी प्रभाव से प्रभावित हो सकता है, इस गाइड में इनमें से केवल सबसे आम और नाटकीय को ही शामिल किया गया है।
1.1 संबंधित संदर्भ

प्रारंभिक चेकलिस्ट

2.1 ड्राइवर/फर्मवेयर संस्करण अपडेट करें
ethtool -i ethx का उपयोग करके ड्राइवर/फर्मवेयर संस्करण की जाँच करें।
आवश्यकतानुसार निम्नलिखित को अद्यतन करें:

2.2 README पढ़ें
ज्ञात समस्याओं की जाँच करें और README से नवीनतम कॉन्फ़िगरेशन निर्देश प्राप्त करें file i40e स्रोत पैकेज में शामिल है।
2.3 जाँचें कि आपका PCI एक्सप्रेस (PCIe) स्लॉट x8 है
कुछ PCIe x8 स्लॉट वास्तव में x4 स्लॉट के रूप में कॉन्फ़िगर किए गए हैं। इन स्लॉट में डुअल पोर्ट और क्वाड पोर्ट डिवाइस के साथ फुल लाइन रेट के लिए अपर्याप्त बैंडविड्थ है। इसके अलावा, यदि आप PCIe v3.0-सक्षम एडाप्टर को PCIe v2.x स्लॉट में डालते हैं, तो आपको पूर्ण बैंडविड्थ नहीं मिल सकती है। सॉफ़्टवेयर डिवाइस ड्राइवर इस स्थिति का पता लगाता है और सिस्टम लॉग में निम्न संदेश लिखता है:
इस कार्ड के लिए उपलब्ध PCI-Express बैंडविड्थ इष्टतम प्रदर्शन के लिए पर्याप्त नहीं है। इष्टतम प्रदर्शन के लिए x8 PCI-Express स्लॉट की आवश्यकता है।
यदि यह त्रुटि उत्पन्न होती है, तो समस्या को हल करने के लिए अपने एडाप्टर को ट्रू PCIe v3.0 x8 स्लॉट पर ले जाएं।
2.4 सिस्टम हार्डवेयर क्षमताओं की जाँच करें
10 Gbps, 25 Gbps और 40 Gbps ईथरनेट पर, कुछ न्यूनतम CPU और सिस्टम आवश्यकताएँ हैं। सामान्य तौर पर, आपके प्लेटफ़ॉर्म के लिए एक आधुनिक सर्वर क्लास प्रोसेसर और इष्टतम मेमोरी कॉन्फ़िगरेशन पर्याप्त होना चाहिए, लेकिन ज़रूरतें आपके कार्यभार के आधार पर अलग-अलग होती हैं। सभी मेमोरी चैनल पॉपुलेट होने चाहिए और BIOS में मेमोरी परफ़ॉर्मेंस मोड सक्षम होना चाहिए। सत्यापित करें कि आपका CPU और मेमोरी कॉन्फ़िगरेशन आपके कार्यभार के लिए आवश्यक नेटवर्क प्रदर्शन के स्तर का समर्थन करने में सक्षम है।
टिप्पणी
XL710 एक 40 GbE नियंत्रक है। इस नियंत्रक का उपयोग करने वाला 2 x 40 GbE एडाप्टर 2 x 40 GbE नहीं बल्कि एक सक्रिय बैक-अप पोर्ट के साथ 1 x 40 GbE होना चाहिए। जब ​​दोनों पोर्ट को शामिल करते हुए लाइन-रेट ट्रैफ़िक का उपयोग करने का प्रयास किया जाता है, तो आंतरिक स्विच संतृप्त हो जाता है और दोनों पोर्ट के बीच संयुक्त बैंडविड्थ कुल SO Gbps तक सीमित हो जाती है।
2.4.1 कर्नेल बूट पैरामीटर
यदि BIOS में Intel® Virtualization Technology for Directed I/O (Intel® VT-d) सक्षम है, तो Intel अनुशंसा करता है कि इष्टतम होस्ट नेटवर्क प्रदर्शन के लिए IOMMU को पास-थ्रू मोड में रखा जाए। यह होस्ट ट्रैफ़िक पर DMA ओवरहेड को समाप्त करता है जबकि वर्चुअल मशीन (VM) को अभी भी Intel® VT-d के लाभ प्राप्त करने में सक्षम बनाता है। यह कर्नेल बूट पैरामीटर में निम्न पंक्ति जोड़कर पूरा किया जाता है: fommu-pt.
2.5 सुनिश्चित करें कि DDP पैकेज ठीक से लोड हो रहा है
140ea और 140eb बेस ड्राइवर्स में डायनेमिक डिवाइस पर्सनलाइजेशन (DDP) के लिए सीधा समर्थन नहीं है। 700 सीरीज डिवाइस के साथ DDP का उपयोग करने के लिए, एक DDP प्रोfile testpmd अनुप्रयोग के साथ लागू किया जा सकता है।
डीडीपी प्रो पर विस्तृत जानकारी के लिएfiles, और कैसे एक डीडीपी प्रो लागू करने के लिएfile 700 श्रृंखला डिवाइसों पर testpmd के साथ, Intel® Ethernet 700 श्रृंखला डायनेमिक डिवाइस पर्सनलाइजेशन (DDP) प्रौद्योगिकी गाइड देखें।
यह सत्यापित करने के लिए कि क्या कोई DDP समर्थकfile सफलतापूर्वक लोड किया गया:
testpmd> ddp सूची प्राप्त करें 0 प्रोfile संख्या है: 1
टिप्पणी
यदि प्रोfile संख्या 0 है, कोई DDP पैकेज लोड नहीं किया गया है। DDP पैकेज लोड त्रुटि की स्थिति में, डिवाइस सुरक्षित मोड में डिफ़ॉल्ट हो जाता है और कई प्रदर्शन सुविधाएँ अनुपलब्ध होती हैं। यदि DDP पैकेज लोड करने से संबंधित त्रुटियाँ हैं, तो यह प्रदर्शन संबंधी समस्याओं का कारण बनेगी। समस्या निवारण चरणों के लिए, Inte/* Ethernet 700 Series Dynamic Device Personalization (DDP) प्रौद्योगिकी गाइड देखें।

बेसलाइन प्रदर्शन माप और ट्यूनिंग पद्धति

3.1 नेटवर्क प्रदर्शन बेंचमार्क
ट्यूनिंग अभ्यास शुरू करने से पहले, आपके नेटवर्क प्रदर्शन का एक अच्छा आधारभूत माप होना महत्वपूर्ण है। आमतौर पर आपके विशिष्ट एप्लिकेशन/वर्कलोड के प्रदर्शन का प्रारंभिक माप प्राप्त करने के अलावा, यह सत्यापित करने के लिए कि आपका नेटवर्क डिवाइस अच्छी स्थिति में है, एक मानक नेटवर्क प्रदर्शन बेंचमार्क का उपयोग करना भी एक अच्छा विचार है।
एकल सिस्टम अनुकूलन के लिए, नेटपर्फ या आईपर्फ और नेटपाइप सभी ठोस मुक्त स्रोत उपकरण हैं जो आपको कनेक्शन पर दबाव डालने और प्रदर्शन संबंधी समस्याओं का निदान करने में सक्षम बनाते हैं।
नेटपरफ थ्रूपुट और लेटेंसी परीक्षण दोनों के लिए मजबूत है। नेटपाइप एक लेटेंसी-विशिष्ट उपकरण है, लेकिन इसे किसी भी तरह के वातावरण के लिए संकलित किया जा सकता है।
टिप्पणी
नेटपरफ में TCP_RR परीक्षण लेनदेन/सेकंड के मान में विलंबता लौटाता है। यह एक राउंड-ट्रिप संख्या है। एकतरफा विलंबता की गणना निम्नलिखित समीकरण का उपयोग करके की जा सकती है:
विलंबता (usec) = (1⁄2) / [लेनदेन/सेकंड] * 1,000,000
3.1.1 आईपर्फ2
इंटेल अधिकांश बेंचमार्किंग स्थितियों के लिए iperf2 की तुलना में iperf3 की अनुशंसा करता है क्योंकि यह उपयोग में आसान है और एक ही एप्लिकेशन इंस्टेंस में कई थ्रेड्स का समर्थन करता है। इंटेल 2G कनेक्शन के लिए 4-25 थ्रेड्स और 4G कनेक्शन के लिए लगभग 6-40 थ्रेड्स के साथ -P विकल्प के साथ चलने की अनुशंसा करता है।

  • क्लाइंट से सर्वर तक एक-दिशात्मक ट्रैफ़िक चलाने के लिए: सर्वर कमांड exampले: iperf2 -s
    क्लाइंट कमांड एक्सampले: iperf2 -c -पी
  • क्लाइंट से सर्वर (और इसके विपरीत) तक द्वि-दिशात्मक ट्रैफ़िक चलाने के लिए: सर्वर कमांड exampले: iperf2 –s –p
    क्लाइंट कमांड एक्सampपर:
    iperf2-सी -पी -पी --पूर्ण-द्वैध या
    iperf2-सी -पी -पी -डी

टिप्पणी
iperf2 में –full-duplex और -d दोनों विकल्प उपयोगकर्ता को द्विदिश परीक्षण करने की अनुमति देते हैं। हालाँकि, –full-duplex विकल्प विशेष रूप से पूर्ण द्वैध परीक्षण पर केंद्रित है।
टिप्पणी
कई सर्वर पोर्ट पर iperf2 का परीक्षण करते समय, -d फ्लैग को सर्वर कमांड में जोड़ा जा सकता है ताकि सभी सर्वर सेशन को एक ही टर्मिनल विंडो से बैकग्राउंड में चलाया जा सके। -d फ्लैग का उपयोग तब भी किया जा सकता है जब सर्वर कमांड को स्क्रिप्ट में फॉर-लूप के अंदर एम्बेड किया गया हो।
टिप्पणी
एकल स्ट्रीम/थ्रेड (उदाहरण के लिए) के साथ नेटवर्क थ्रूपुट परीक्षण चलाते समयampले: P1), AMD प्रोसेसर अपेक्षित थ्रूपुट प्रदान नहीं कर सकते हैं, विशेष रूप से उच्च बैंडविड्थ NIC (यदि गति >= 25G बैंडविड्थ है)। परिणामस्वरूप, उच्च थ्रूपुट प्राप्त करने के लिए विशिष्ट कोर पर एप्लिकेशन पिनिंग की आवश्यकता होती है। पृष्ठ 22 पर एप्लिकेशन सेटिंग देखें।
3.1.2 आईपर्फ3
यदि iperf3 का उपयोग किया जाता है, तो लाभ उठाने के लिए एप्लिकेशन के कई इंस्टेंस की आवश्यकता होती हैtagमल्टी-थ्रेड्स, RSS और हार्डवेयर क्यू का एक सेट। इंटेल 2G कनेक्शन के लिए 4-25 एप्लिकेशन सेशन और 4G कनेक्शन के लिए लगभग 6-40 सेशन चलाने की सलाह देता है। प्रत्येक सेशन को -p विकल्प का उपयोग करके एक अद्वितीय TCP पोर्ट मान निर्दिष्ट करना चाहिए।

  • क्लाइंट से सर्वर तक एक-दिशात्मक ट्रैफ़िक चलाने के लिए:
    सर्वर कमांड exampपर:
    iperf3 -एस -पी
    क्लाइंट कमांड एक्सampपर:
    iperf3-सी -पी
  • क्लाइंट से सर्वर तक (और इसके विपरीत) द्वि-दिशात्मक ट्रैफ़िक चलाने के लिए:
    सर्वर कमांड exampपर:
    iperf3 –एस –पी
    क्लाइंट कमांड एक्सampले: iperf3 -c -पी -पी –-बिदिर
  • iperf3 के कई इंस्टैंस (थ्रेड्स) शुरू करने के लिए, TCP पोर्ट्स पर थ्रेड्स को मैप करने के लिए for-लूप का उपयोग करने और समानांतर में कई प्रक्रियाएं बनाने के लिए & का उपयोग करके पृष्ठभूमि में iperf3 चलाने की सिफारिश की जाती है।
    सर्वर कमांड example, 4 थ्रेड शुरू करें: port=””; for i in {0..3}; do port=520$i; bash -c “iperf3 -s -p $port &”; संपन्न; क्लाइंट कमांड example, 4 थ्रेड शुरू करें – ट्रांसमिट टेस्ट पोर्ट = ""; for i in {0..3}; do port = 520 $ i; bash -c "iperf3 -c $ serverIP -p $ port &"; संपन्न; क्लाइंट कमांड example, 4 थ्रेड्स प्रारंभ करें - परीक्षण प्राप्त करें port=””; for i in {0..3}; do port=520$i; bash -c “iperf3 -R -c $serverIP -p $port &”; संपन्न; 40G कनेक्शन के लिए, 6 इंस्टेंस/थ्रेड्स तक बनाने के लिए for-लूप बढ़ाएँ।

टिप्पणी
एकल स्ट्रीम/थ्रेड (उदाहरण के लिए) के साथ नेटवर्क थ्रूपुट परीक्षण चलाते समयampले: पी1), एएमडी प्रोसेसर अपेक्षित थ्रूपुट, विशेष रूप से उच्च बैंडविड्थ प्रदान नहीं कर सकते हैं
NICs (यदि गति >= 25G बैंडविड्थ है)। परिणामस्वरूप, उच्च थ्रूपुट प्राप्त करने के लिए विशिष्ट कोर पर एप्लिकेशन पिनिंग की आवश्यकता होती है। पृष्ठ 22 पर एप्लिकेशन सेटिंग्स और पृष्ठ 26 पर AMD EPYC देखें।
3.1.3 नेटपरफ
नेटपर्फ टूल थ्रूपुट और विलंबता परीक्षण दोनों के लिए मजबूत विकल्प है।

  • नेटपरफ में TCP_STREAM परीक्षण डिवाइस की थ्रूपुट क्षमताओं को मापता है। सर्वर कमांड एक्सampले: नेटसर्वर क्लाइंट कमांड पूर्वampले: netperf -t TCP_STREAM -l 30 -H
  • नेटपरफ में TCP_RR परीक्षण लेनदेन/सेकंड के मान में विलंबता लौटाता है। यह एक राउंड-ट्रिप संख्या है। -T x,x विकल्प का उपयोग करने की अनुशंसा की जाती है, जहाँ x डिवाइस के लिए CPU स्थानीय है। एकतरफा विलंबता की गणना इस प्रकार की जा सकती है: विलंबता(usec)=(1⁄2)/ [लेनदेन/सेकंड]*1,000,\ सर्वर कमांड exampले: नेटसर्वर
    क्लाइंट कमांड एक्सampले: नेटपरफ -टी टीसीपी_आरआर -एल 30 -एच -टी एक्स,एक्स
  • नेटपरफ के कई इंस्टैंस (थ्रेड्स) शुरू करने के लिए, टीसीपी पोर्ट्स पर थ्रेड्स को मैप करने के लिए फॉर-लूप का उपयोग करने और समानांतर में कई प्रक्रियाएं बनाने के लिए पृष्ठभूमि में नेटपरफ चलाने की सिफारिश की जाती है।
    सर्वर कमांड exampले, 8 धागे शुरू:
    port=""; for i in {0..7}; do port=520$i; bash -c "netserver -L $serverIP -p $port &"; किया;
    क्लाइंट कमांड एक्सample, 8 थ्रेड्स प्रारंभ करें: port=””; for i in {0..7}; do port=520$i; bash -c “netperf -H $serverIP -p $port -t TCP_STREAM -l 30 &”; किया गया;

3.2 ट्यूनिंग पद्धति
एक समय में एक ट्यूनिंग परिवर्तन पर ध्यान केंद्रित करें ताकि आपको पता चले कि प्रत्येक परिवर्तन आपके परीक्षण पर क्या प्रभाव डालता है। ट्यूनिंग प्रक्रिया में आप जितने अधिक व्यवस्थित होंगे, प्रदर्शन बाधाओं के कारणों की पहचान करना और उनका समाधान करना उतना ही आसान होगा।

i40e ड्राइवर सेटिंग्स ट्यूनिंग

4.1 आईआरक्यू एफिनिटी
IRQ एफिनिटी को इस प्रकार कॉन्फ़िगर करना कि विभिन्न नेटवर्क क्यू के लिए इंटरप्ट्स विभिन्न CPU कोर से संबद्ध हों, प्रदर्शन पर बहुत बड़ा प्रभाव डाल सकता है, विशेष रूप से मल्टीथ्रेड थ्रूपुट परीक्षणों पर।
IRQ एफ़िनिटी को कॉन्फ़िगर करने के लिए, irqbalance को रोकें और फिर i40e स्रोत पैकेज से set_irq_affinity स्क्रिप्ट का उपयोग करें या मैन्युअल रूप से क्यू पिन करें। क्यू पिनिंग को सक्षम करने के लिए उपयोगकर्ता-स्थान IRQ बैलेंसर को अक्षम करें:

  • systemctl irqbalance अक्षम करें
  • systemctl रोक irqbalance
    i40e स्रोत पैकेज से set_irq_affinity स्क्रिप्ट का उपयोग करना (अनुशंसित):
  • सभी कोर का उपयोग करने के लिए:
    [पथ-टू-i40epackage]/स्क्रिप्ट/set_irq_affinity -X सभी ethX
  • स्थानीय NUMA सॉकेट पर केवल कोर का उपयोग करने के लिए: [path-to-i40epackage]/scripts/set_irq_affinity -X local ethX
  • आप कोर की एक सीमा भी चुन सकते हैं। cpu0 का उपयोग करने से बचें क्योंकि यह टाइमर कार्य चलाता है। [path-to-i40epackage]/scripts/set_irq_affinity 1-2 ethX

टिप्पणी
जब -x विकल्प निर्दिष्ट किया जाता है, तो एफ़िनिटी स्क्रिप्ट पिनिंग प्रक्रिया के भाग के रूप में ट्रांसमिट पैकेट स्टीयरिंग (XPS) को सक्षम करती है। जब XPS सक्षम होता है, तो Intel अनुशंसा करता है कि आप irqbalance को अक्षम करें, क्योंकि XPS के साथ कर्नेल बैलेंसर अप्रत्याशित प्रदर्शन का कारण बन सकता है। जब -X विकल्प निर्दिष्ट किया जाता है, तो एफ़िनिटी स्क्रिप्ट XPS को अक्षम कर देती है। XPS को अक्षम करना और सममित कतारों को सक्षम करना उन कार्यभारों के लिए फायदेमंद है जहाँ Tx और Rx ट्रैफ़िक को एक ही कतार जोड़ी पर सर्विस किए जाने पर सबसे अच्छा प्रदर्शन प्राप्त होता है।
लिनक्स में सममित कतारों को कॉन्फ़िगर करने में समर्थित नेटवर्क एडाप्टरों के लिए सममित प्राप्त कतारों (Rx) और सममित संचारित कतारों (Tx) को सक्षम करने के लिए नेटवर्क इंटरफ़ेस ड्राइवर मापदंडों को ट्यून करना शामिल है।
टिप्पणी

  • सममित कतारें एक उन्नत नेटवर्किंग सुविधा है, और सभी 700 श्रृंखला नेटवर्क एडाप्टर या ड्राइवर उनका समर्थन नहीं करते हैं।
  • सममित कतारों को कॉन्फ़िगर करने का प्रयास करने से पहले सुनिश्चित करें कि आपके पास आवश्यक ड्राइवर और हार्डवेयर समर्थन है।

सममित कतारों को कॉन्फ़िगर करने के लिए, इन सामान्य चरणों का पालन करें:

  1. नेटवर्क इंटरफ़ेस कॉन्फ़िगरेशन संपादित करें File: एक टेक्स्ट एडिटर का उपयोग करें (उदाहरण के लिएampनेटवर्क इंटरफ़ेस कॉन्फ़िगरेशन को संपादित करने के लिए le, vi, nano, या gedit) का उपयोग करें file. द file यह आमतौर पर /etc/sysconfig/network-scripts/ निर्देशिका के अंतर्गत स्थित होता है और इसका नाम ifcfg-ethX जैसा होता है, जहां ethX आपके नेटवर्क इंटरफ़ेस का नाम है।
  2. सममित कतार पैरामीटर जोड़ें। नेटवर्क इंटरफ़ेस कॉन्फ़िगरेशन में निम्न पंक्तियाँ जोड़ें file: ETHTOOL_OPTS="rx-queues 8 tx-queues 8"
  3. नेटवर्क सेवा पुनः आरंभ करें.
    परिवर्तन करने के बाद, नया कॉन्फ़िगरेशन लागू करने के लिए नेटवर्क सेवा को पुनः आरंभ करें। sudo systemctl restart network

मैन्युअल रूप से:

  • प्रत्येक नोड से जुड़े प्रोसेसर का पता लगाएं: numactl –hardware lscpu
  • प्रत्येक प्रोसेसर के लिए बिट मास्क ढूंढें:
  • नोड 0 के लिए कोर 11-0 मानते हुए: [1,2,4,8,10,20,40,80,100,200,400,800]
  • असाइन किए जा रहे पोर्ट को असाइन किए गए IRQs का पता लगाएं: grep ethX /proc/interrupts और IRQ मानों को नोट करें उदाहरण के लिएampले, 181-192 लोड किए गए 12 वेक्टरों के लिए।
  • SMP एफ़िनिटी मान को संगत IRQ प्रविष्टि में प्रतिध्वनित करें। ध्यान दें कि यह प्रत्येक IRQ प्रविष्टि के लिए किया जाना चाहिए: प्रतिध्वनि 1 > /proc/irq/181/smp_affinity प्रतिध्वनि 2 > /proc/irq/182/smp_affinity प्रतिध्वनि 4 > /proc/irq/183/smp_affinity IRQ एफ़िनिटी दिखाएँ:
  • सभी कोर के लिए IRQ समानता दिखाने के लिए: /स्क्रिप्ट/set_irq_affinity -s ethX
  • स्थानीय NUMA सॉकेट पर केवल कोर दिखाने के लिए: /scripts/set_irq_affinity -s स्थानीय ethX
  • आप कोर की एक श्रृंखला भी चुन सकते हैं: /स्क्रिप्ट/set_irq_affinity -s 40-0-8,16 ethX

टिप्पणी
Set_irq_affinity स्क्रिप्ट i40e ड्राइवर संस्करण 2.16.11 और बाद के संस्करणों में -s ध्वज का समर्थन करती है।
4.2 Tx/Rx कतारें
आरंभीकरण के समय ड्राइवर द्वारा प्रत्येक ईथरनेट पोर्ट के लिए सक्षम की गई कतारों की डिफ़ॉल्ट संख्या प्लेटफ़ॉर्म में उपलब्ध CPU की कुल संख्या के बराबर होती है। यह कई प्लेटफ़ॉर्म और कार्यभार कॉन्फ़िगरेशन के लिए अच्छी तरह से काम करता है। हालाँकि, उच्च कोर गणना और/या उच्च ईथरनेट पोर्ट घनत्व वाले प्लेटफ़ॉर्म में, यह कॉन्फ़िगरेशन संसाधन विवाद का कारण बन सकता है। इसलिए, कुछ मामलों में सिस्टम में प्रत्येक पोर्ट के लिए डिफ़ॉल्ट को संशोधित करना आवश्यक हो सकता है।
Tx/Rx क्यू की डिफ़ॉल्ट संख्या विशिष्ट मॉडल और ड्राइवर संस्करण के आधार पर भिन्न हो सकती है। नीचे सूचीबद्ध ethtool -L कमांड का उपयोग करके क्यू की संख्या को समायोजित किया जा सकता है।
टिप्पणी
इन मामलों में, इंटेल अनुशंसा करता है कि आप प्रत्येक पोर्ट के लिए डिफ़ॉल्ट कतार संख्या को एडाप्टर पोर्ट के स्थानीय NUMA नोड में उपलब्ध CPU की संख्या से अधिक न होने दें। कुछ मामलों में, उच्च पोर्ट संख्या कार्यान्वयन पर संसाधनों को संतुलित करने का प्रयास करते समय, इस संख्या को और भी कम करना आवश्यक हो सकता है।
कतार कॉन्फ़िगरेशन संशोधित करने के लिए:
निम्नलिखित पूर्वample पोर्ट को 32 Tx/Rx कतारों पर सेट करता है: ethtool -L ethX संयुक्त 32
Exampले आउटपुट:
एथटूल -l एथएक्स
ethX के लिए चैनल पैरामीटर: पूर्व-निर्धारित अधिकतम:
आरएक्स: 96
टेक्सास: 96
अन्य: 1
संयुक्त: 96
वर्तमान हार्डवेयर सेटिंग्स:
आरएक्स: 0
टेक्सास: 0
अन्य: 1
संयुक्त: 32
4.3 व्यवधान मॉडरेशन
अनुकूली इंटरप्ट मॉडरेशन डिफ़ॉल्ट रूप से चालू है, और इसे कम CPU उपयोग और उच्च प्रदर्शन के बीच एक संतुलित दृष्टिकोण प्रदान करने के लिए डिज़ाइन किया गया है। हालाँकि, आप अपने उपयोग के मामले में फिट होने के लिए इंटरप्ट सेटिंग्स को मैन्युअल रूप से ट्यून करने का प्रयास कर सकते हैं।
0-235 माइक्रोसेकंड की सीमा प्रति सेकंड 4,310 से 250,000 इंटरप्ट की प्रभावी सीमा प्रदान करती है। rx-μsecs-high का मान उसी ethtool कमांड में rx-μsecs और tx-μsecs से स्वतंत्र रूप से सेट किया जा सकता है, और यह अनुकूली इंटरप्ट मॉडरेशन एल्गोरिदम से भी स्वतंत्र है। अंतर्निहित हार्डवेयर 2 माइक्रोसेकंड अंतराल में ग्रैन्युलैरिटी का समर्थन करता है, इसलिए आसन्न मानों के परिणामस्वरूप समान इंटरप्ट दर हो सकती है।

  • अनुकूली इंटरप्ट मॉडरेशन को बंद करने के लिए: ethtool -C ethX adaptive-rx off adaptive-tx off
  • अनुकूली इंटरप्ट मॉडरेशन चालू करने के लिए: ethtool -C ethX adaptive-rx on adaptive-tx on

सामान्य ट्यूनिंग के लिए शुरुआत करने के लिए एक अच्छी जगह 84 μs, या ~12000 इंटरप्ट/s है। यदि आप देखते हैं कि ट्रैफ़िक के दौरान rx_dropped काउंटर चल रहे हैं (ethtool -S ethX का उपयोग करके) तो संभवतः आपके पास बहुत धीमा CPU है, एडाप्टर के रिंग साइज़ (ethtool -G) से 84 μs या कम इंटरप्ट दर के लिए पैकेट रखने के लिए पर्याप्त बफ़र्स नहीं हैं।

  • इंटरप्ट मॉडरेशन को इंटरप्ट के बीच 84 μs की एक निश्चित इंटरप्ट दर पर सेट करने के लिए (12000 इंटरप्ट/सेकंड): ethtool -C ethX adaptive-rx off adaptive-tx off rx-usecs 84 tx-usecs 84 यदि आप CPU उपयोग पर अधिकतम नहीं हैं, तो अगला मान आजमाने के लिए 62 μs है। यह अधिक CPU का उपयोग करता है, लेकिन यह बफ़र्स को तेज़ी से सर्विस करता है, और कम डिस्क्रिप्टर (रिंग साइज़, ethtool -G) की आवश्यकता होती है।
  • इंटरप्ट मॉडरेशन को इंटरप्ट के बीच 62 यूसेक की निश्चित इंटरप्ट दर पर सेट करने के लिए (16000 इंटरप्ट/सेकेंड)। ethtool -C ethX adaptive-rx off adaptive-tx off rx-usecs 62 tx-usecs 62
    यदि ट्रैफ़िक के दौरान rx_dropped काउंटर बढ़ते हैं (ethtool -S ethX का उपयोग करके), तो संभवतः आपके पास बहुत धीमा CPU है, एडाप्टर के रिंग साइज़ (ethtool -G) से पर्याप्त बफ़र्स नहीं हैं, या इंटरप्ट रेट बहुत कम है। यदि आप CPU उपयोग पर अधिकतम नहीं हैं, तो आप ITR मान को कम करके इंटरप्ट रेट बढ़ा सकते हैं। यह अधिक CPU का उपयोग करता है, लेकिन सेवाएँ तेज़ी से बफ़र करती हैं, और कम डिस्क्रिप्टर (रिंग साइज़, ethtool -G) की आवश्यकता होती है।
    यदि आपका CPU 100% पर है, तो इंटरप्ट दर बढ़ाने की सलाह नहीं दी जाती है। कुछ परिस्थितियों में जैसे कि CPU बाउंड वर्कलोड, आप अन्य अनुप्रयोगों के लिए अधिक CPU समय सक्षम करने के लिए μs मान बढ़ाना चाह सकते हैं।
    यदि आपको कम विलंबता वाला प्रदर्शन चाहिए और/या आपके पास नेटवर्क प्रोसेसिंग के लिए पर्याप्त CPU है, तो आप इंटरप्ट मॉडरेशन को पूरी तरह से अक्षम कर सकते हैं, जिससे इंटरप्ट्स को यथासंभव तेजी से फायर करने में सक्षम बनाया जा सके।
  • इंटरप्ट मॉडरेशन को अक्षम करने के लिए ethtool -C ethX adaptive-rx off adaptive-tx off rx-usecs 0 tx-usecs 0

टिप्पणी
इंटरप्ट मॉडरेशन अक्षम के साथ चलने पर, प्रत्येक कतार पर इंटरप्ट दर बहुत अधिक हो सकती है। इंटरप्ट दर पर ऊपरी सीमा निर्धारित करने के लिए rx-usec-high पैरामीटर को शामिल करने पर विचार करें। निम्न कमांड एडेप्टिव इंटरप्ट मॉडरेशन को अक्षम करता है और प्राप्त या संचारित होने का संकेत देने से पहले अधिकतम 5 माइक्रोसेकंड की अनुमति देता है। प्रति सेकंड 200,000 इंटरप्ट के परिणामस्वरूप होने के बजाय, यह rx-usec-high पैरामीटर के माध्यम से प्रति सेकंड कुल इंटरप्ट को 50,000 तक सीमित करता है। # ethtool -C ethX adaptive-rx off adaptive-tx off rx-usecs-high 20 rx-usecs 5 txusecs 5 कार्यभार के लिए इष्टतम मूल्य खोजने के लिए ट्रांसमिट/रिसीव/हाई-प्राथमिकता कोलेसिंग टाइमर को उच्च (80/100/150/200
4.4 अंगूठी का आकार
यदि आप ethtool -S ethX (rx_dropped, rx_dropped.nic) में rx_dropped काउंटर देख रहे हैं, या कई कतारों के सक्रिय होने पर कैश दबाव का संदेह है, तो आप डिफ़ॉल्ट मान से रिंग आकार को समायोजित करने का प्रयास कर सकते हैं। डिफ़ॉल्ट मान 512 है, अधिकतम 4096 है।

  • वर्तमान मान जाँचने के लिए: ethtool -g ethX
    यदि यह संदेह है कि बफरिंग की कमी वर्तमान इंटरप्ट दर में गिरावट का कारण बन रही है, तो आप पहले अधिकतम, फिर न्यूनतम, फिर बाइनरी खोज में तब तक जारी रख सकते हैं जब तक आपको इष्टतम प्रदर्शन नहीं मिल जाता।
    यदि कैश दबाव संदिग्ध है (कई कतारें सक्रिय हैं) तो डिफ़ॉल्ट से बफ़र्स को कम करने से इंटेल ® डेटा डायरेक्ट I/O (इंटेल ® DDIO) को बेहतर दक्षता के साथ संचालित करने में मदद मिल सकती है। इंटेल प्रति कतार 128 या 256 की कोशिश करने की सलाह देता है, यह जानते हुए कि rx_dropped में वृद्धि से बचने के लिए ethtool -C के माध्यम से इंटरप्ट दर में वृद्धि आवश्यक हो सकती है।
  • रिंग आकार को निश्चित मान पर सेट करने के लिए: ethtool -G eth12 rx 256 tx 256

टिप्पणी
ethtool -S ethX|grep drop के साथ पाए गए Rx पैकेट ड्रॉप को ठीक करने के लिए, रिंग आकार को 4096 तक बढ़ाने पर विचार करें। कार्यभार के लिए सर्वोत्तम सेटिंग खोजने के लिए प्रयोग करें लेकिन उच्च मूल्यों के साथ अत्यधिक मेमोरी उपयोग के लिए सावधान रहें।
4.5 प्रवाह नियंत्रण
लेयर 2 फ्लो कंट्रोल TCP के प्रदर्शन को काफी हद तक प्रभावित कर सकता है और इसे अधिकांश कार्यभार के लिए अक्षम करने की अनुशंसा की जाती है। एक संभावित अपवाद बर्स्टी ट्रैफ़िक है जहाँ बर्स्ट की अवधि लंबी नहीं होती है।
प्रवाह नियंत्रण डिफ़ॉल्ट रूप से अक्षम होता है.

  • प्रवाह नियंत्रण सक्षम करने के लिए: ethtool -A ethX rx on tx on
  • प्रवाह नियंत्रण अक्षम करने के लिए: ethtool -A ethX rx off tx off

टिप्पणी
प्रवाह नियंत्रण को सफलतापूर्वक सक्षम करने के लिए आपके पास प्रवाह नियंत्रण सक्षम लिंक पार्टनर होना चाहिए।
4.6 जंबो फ्रेम्स
जब अपेक्षित ट्रैफ़िक परिवेश में डेटा के बड़े ब्लॉक स्थानांतरित किए जा रहे हों, तो जंबो फ़्रेम सुविधा को सक्षम करना फ़ायदेमंद हो सकता है। अधिकतम ट्रांसमिशन यूनिट (MTU) को 1500 के डिफ़ॉल्ट मान से बड़े मान में बदलकर जंबो फ़्रेम समर्थन सक्षम किया जाता है। यह डिवाइस को नेटवर्क परिवेश में बड़े पैकेट में डेटा स्थानांतरित करने की अनुमति देता है। यह सेटिंग बड़े I/O कार्यभार के लिए थ्रूपुट में सुधार कर सकती है और CPU उपयोग को कम कर सकती है। हालाँकि, यह छोटे पैकेट या विलंबता-संवेदनशील कार्यभार को प्रभावित कर सकता है।
टिप्पणी
जंबो फ्रेम या बड़ी MTU सेटिंग आपके नेटवर्क वातावरण में उचित रूप से कॉन्फ़िगर की जानी चाहिए।
MTU आकार बढ़ाने के लिए ifconfig कमांड का उपयोग करें। उदाहरण के लिएample, निम्नलिखित दर्ज करें, जहाँ इंटरफ़ेस नंबर है: ifconfig एमटीयू 9000 अप
वैकल्पिक रूप से, आप ip कमांड का उपयोग इस प्रकार कर सकते हैं: ip link set mtu 9000 dev आईपी ​​लिंक सेट अप देव

प्लेटफ़ॉर्म ट्यूनिंग (i40e गैर-विशिष्ट)

5.1 BIOS सेटिंग्स

  • वर्चुअलाइजेशन कार्यभार के लिए Intel® VT-d सक्षम करें।
  • हाइपर-थ्रेडिंग (लॉजिकल प्रोसेसर) प्रदर्शन को प्रभावित कर सकता है। अपने कार्यभार के लिए इसे चालू या बंद करके देखें।
  • इंटेल® टर्बो बूस्ट CPU कोर को CPU की बेस फ़्रीक्वेंसी से ज़्यादा फ़्रीक्वेंसी पर काम करने की अनुमति देता है। इंटेल® टर्बो बूस्ट को सक्षम करने से कई वर्कलोड के लिए प्रदर्शन में सुधार हो सकता है, लेकिन कोर को उच्च फ़्रीक्वेंसी पर रखने के लिए ज़्यादा बिजली की खपत होती है। अपने वर्कलोड के लिए टर्बो बूस्ट को बंद/चालू करके देखें।

टिप्पणी
यदि प्लेटफ़ॉर्म पर उच्च समग्र CPU उपयोग हो रहा है तो टर्बो आवृत्तियों की गारंटी नहीं है। समग्र CPU उपयोग बढ़ने पर उच्च कोर टर्बो आवृत्तियों को कम किया जाता है।
5.2 पावर प्रबंधन
पावर प्रबंधन प्रदर्शन को प्रभावित कर सकता है, खासकर कम विलंबता वाले कार्यभार में। यदि प्रदर्शन बिजली की खपत कम करने से अधिक प्राथमिकता है, तो इंटेल अनुशंसा करता है कि आप पावर प्रबंधन के प्रभावों को सीमित करने के साथ प्रयोग करें। ऑपरेटिंग सिस्टम टूल, BIOS सेटिंग्स और कर्नेल बूट पैरामीटर के माध्यम से पावर प्रबंधन को सीमित करने के कई अलग-अलग तरीके हैं। अपने परिवेश के अनुरूप सर्वोत्तम विधि और स्तर चुनें।
5.2.1 सी-स्टेट नियंत्रण
सी-अवस्था के प्रवेश को CO या C1 तक सीमित करने से प्रदर्शन में सुधार होता है तथा ऊर्जा उपयोग में वृद्धि होती है।
CPU पैकेज C6 स्टेट एंट्री को अक्षम करने से नेटवर्क प्रदर्शन में सुधार हो सकता है। हालाँकि, इससे बिजली की खपत बढ़ जाती है।
निम्न विकल्प उपलब्ध हैं:

  • सी-स्टेट प्रविष्टि को गतिशील रूप से नियंत्रित करें:
    खुला
    /dev/cpu_dma_latency पर जाएं और उसमें अधिकतम स्वीकार्य विलंबता लिखें।

टिप्पणी
cpudmalatency.c नामक एक छोटा सा प्रोग्राम है जिसे ओपन सोर्स समुदाय से डाउनलोड किया जा सकता है, संकलित किया जा सकता है, तथा कमांड लाइन से चलाया जा सकता है।
निम्नलिखित पूर्वample पांच μs के वेक टाइम की अनुमति देता है, और इस प्रकार C1 प्रविष्टि की अनुमति देता है: cpudmalatency 5 &

  • कर्नेल बूट सेटिंग्स में अधिकतम C-स्थिति को सीमित करें:
    इंटेल CPU के लिए: intel_idle.max_cstates=1
    गैर-इंटेल CPU के लिए: प्रोसेसर.max_cstates=1
  • CPU C6 स्थिति की जांच और अक्षम करने के लिए cpupower कमांड का उपयोग करें: जाँचें: cpupower मॉनिटर या cpupower निष्क्रिय-सूचना
    C6 अक्षम करें: cpupower idle-set -d3 या
    C-स्टेट्स अक्षम करें: cpupower idle-set -D0

टिप्पणियाँ:

  1. यदि सर्वर में Intel® 4th Gen Intel® Xeon® स्केलेबल प्रोसेसर है, तो CPU पर C-स्टेट्स को अक्षम करें। जब हाइपर थ्रेडिंग सक्षम या अक्षम होती है, तो निष्क्रिय अवस्थाओं (-D0) को अक्षम करने से निष्क्रिय अवधि के दौरान कोर कम-पावर अवस्थाओं में प्रवेश करने से रोकता है और निष्क्रिय और सक्रिय अवस्थाओं के बीच संक्रमण के लिए CPU के लिए विलंबता को कम करता है।
  2. Intel® 4th Gen Intel® Xeon® स्केलेबल प्रोसेसर का पावर प्रबंधन बेहद आक्रामक है। कोर को कम-पावर की स्थिति में जाने से बचाने के लिए, उन्हें लंबे समय तक चालू रखने के लिए उपयोग में आने वाले कोर की संख्या कम करने का प्रयास करें (ethtool -L संयुक्त )। साथ ही, सेट irq affinity (अक्सर -x local या CPU कोर की सूची के साथ) का उपयोग करके विशिष्ट कोर से इंटरप्ट को बांधें, और सुनिश्चित करें कि वर्कलोड टास्कसेट या numactl के साथ उन्हीं कोर पर चलता है। यह कोर को सक्रिय रखकर और इंटरप्ट हैंडलिंग को अनुकूलित करके प्रदर्शन में सुधार करता है।

C6 सक्षम करें:
cpupower निष्क्रिय-सेट -d3
सी-स्टेट्स सक्षम करें:
cpupower निष्क्रिय-सेट -E

  • एक अन्य विधि प्रदर्शन सुधार सेट करने के लिए ट्यून्ड टूल (कई लिनक्स वितरणों के साथ शामिल) का उपयोग करना हैfile. ये प्रोfileकई OS सेटिंग्स को संशोधित करें जो कई अनुप्रयोगों में प्रदर्शन को प्रभावित कर सकते हैं। यह पाया गया है कि नेटवर्क-थ्रूपुट प्रोfile अधिकांश कार्यभार में सुधार प्रदान करता है।
    जाँच करना:
    ट्यून्ड-एडम सक्रिय
    तय करना:
    ट्यून्ड-एडम प्रोfile नेटवर्क-थ्रूपुट
    टिप्पणी
    उपरोक्त कमांड के लिए Tuned सेवा चालू होनी चाहिए। जाँचने/पुनः आरंभ करने के लिए, tuned: systemctl status tuned systemctl restart tuned
    आप कर्नेल बूट लाइन में निम्नलिखित जोड़कर किसी भी C-स्टेट प्रविष्टि को अस्वीकृत कर सकते हैं:
    निष्क्रिय=मतदान
  • सिस्टम की BIOS पावर प्रबंधन सेटिंग्स के माध्यम से C-स्थिति को सीमित करें, जिससे प्रदर्शन पर प्रभाव पड़ सकता हैfile उपलब्ध।
    टर्बोस्टेट या x86_energy_perf_policy जैसे उपकरणों का उपयोग पावर प्रबंधन सेटिंग्स की जांच या सेट करने के लिए किया जा सकता है।

5.2.2 PCIe पावर प्रबंधन
सक्रिय-स्थिति पावर प्रबंधन (ASPM) PCIe लिंक के लिए कम पावर स्थिति सक्षम करता है जब वे सक्रिय उपयोग में नहीं होते हैं। यह PCIe नेटवर्क डिवाइस पर उच्च विलंबता का कारण बन सकता है, इसलिए Intel अनुशंसा करता है कि आप विलंबता-संवेदनशील कार्यभार के लिए ASPM को अक्षम करें। कर्नेल बूट लाइन में निम्न जोड़कर ASPM को अक्षम करें: pcie_aspm=off
5.2.3 सीपीयू आवृत्ति स्केलिंग
CPU फ़्रीक्वेंसी स्केलिंग (या CPU स्पीड स्केलिंग) एक Linux पावर मैनेजमेंट तकनीक है जिसमें सिस्टम क्लॉक स्पीड को पावर और हीट बचाने के लिए तुरंत एडजस्ट किया जाता है। C-स्टेट्स की तरह, यह नेटवर्क कनेक्शन पर अवांछित विलंबता का कारण बन सकता है।
सीपीयूपावर टूल का उपयोग सीपीयू प्रदर्शन डिफ़ॉल्ट और सीमाओं की जांच और संशोधन करने के लिए भी किया जा सकता है:

  • जाँच करें: cpupower मॉनिटर या
  • CPU को प्रदर्शन मोड पर सेट करें: cpupower frequency-set -g performance

टिप्पणी
सीपीयू आवृत्ति सीमा में संशोधन से कई कार्यभारों पर प्रभाव पड़ सकता है और सीपीयू टर्बो मोड जैसी अन्य सुविधाएं भी अक्षम हो सकती हैं।
CPU आवृत्ति स्केलिंग को अक्षम करने के लिए, निम्नलिखित कमांड द्वारा CPU पावर सेवा को अक्षम करें:
systemctl स्टॉप cpupower.service
systemctl cpupower.service अक्षम करें
5.2.4 अतिरिक्त पावर प्रबंधन मार्गदर्शन
इस उच्च-स्तरीय ओवर में अतिरिक्त विवरण प्रदान किए गए हैंview तीसरी पीढ़ी के इंटेल® जिऑन® स्केलेबल प्रोसेसरों में अनेक पावर प्रबंधन सुविधाओं के बारे में जानकारी, साथ ही यह मार्गदर्शन कि किस प्रकार इन सुविधाओं को प्लेटफॉर्म स्तर पर एकीकृत किया जा सकता है: https://networkbuilders.intel.com/solutionslibrary/power-management-technologyoverview-technology-guide
5.3 इंटेल® टर्बो बूस्ट
इंटेल® टर्बो बूस्ट प्रोसेसर को ज़रूरत पड़ने पर तेज़ बनाता है लेकिन अतिरिक्त बिजली की खपत कर सकता है। टर्बो बूस्ट को बंद करने से प्रोसेसर स्थिर गति पर बना रहता है, जिससे आपको विशिष्ट कार्यभार के लिए एक समान प्रदर्शन स्तर मिलता है।
5.4 फ़ायरवॉल
फ़ायरवॉल्स प्रदर्शन को प्रभावित कर सकते हैं, विशेष रूप से विलंबता प्रदर्शन को।
यदि आवश्यक न हो तो iptables/firewalld को अक्षम करें।
5.5 एप्लिकेशन सेटिंग्स
अक्सर एक एकल थ्रेड (जो एकल नेटवर्क कतार से मेल खाता है) अधिकतम बैंडविड्थ प्राप्त करने के लिए पर्याप्त नहीं होता है। AMD जैसे कुछ प्लेटफ़ॉर्म आर्किटेक्चर, Intel-आधारित प्रोसेसर वाले प्लेटफ़ॉर्म की तुलना में एकल थ्रेड के साथ अधिक Rx पैकेट छोड़ते हैं।
एप्लिकेशन को NUMA नोड या नेटवर्क डिवाइस के स्थानीय CPU कोर पर पिन करने के लिए टास्कसेट या numactl जैसे टूल का उपयोग करने पर विचार करें। स्टोरेज I/O जैसे कुछ कार्यभार के लिए, एप्लिकेशन को गैर-स्थानीय नोड पर ले जाना लाभ प्रदान करता है।
यदि संभव हो तो अपने एप्लिकेशन द्वारा उपयोग किए जाने वाले थ्रेड्स की संख्या बढ़ाने का प्रयास करें।
5.6 कर्नेल संस्करण
अधिकांश आधुनिक इन-बॉक्स कर्नेल प्रदर्शन के लिए उचित रूप से अनुकूलित हैं, लेकिन आपके उपयोग के मामले के आधार पर, कर्नेल को अपडेट करने से बेहतर प्रदर्शन मिल सकता है। स्रोत को डाउनलोड करने से आप कर्नेल बनाने से पहले कुछ सुविधाओं को सक्षम/अक्षम भी कर सकते हैं।
5.7 ऑपरेटिंग सिस्टम/कर्नेल सेटिंग्स
सामान्य ऑपरेटिंग सिस्टम ट्यूनिंग पर अधिक जानकारी के लिए ऑपरेटिंग सिस्टम ट्यूनिंग गाइड, जैसे कि Red Hat Enterprise Linux नेटवर्क परफॉरमेंस ट्यूनिंग गाइड, देखें।
ट्यून करने के लिए कुछ सामान्य पैरामीटर निम्न तालिका में सूचीबद्ध हैं। ध्यान दें कि ये केवल सुझाए गए शुरुआती बिंदु हैं, और उन्हें डिफ़ॉल्ट से बदलने से सिस्टम पर उपयोग किए जाने वाले संसाधन बढ़ सकते हैं। हालाँकि मान बढ़ाने से प्रदर्शन में सुधार करने में मदद मिल सकती है, लेकिन यह निर्धारित करने के लिए कि किसी दिए गए सिस्टम, कार्यभार और ट्रैफ़िक प्रकार के लिए सबसे अच्छा क्या काम करता है, विभिन्न मानों के साथ प्रयोग करना आवश्यक है।
कर्नेल पैरामीटर्स को लिनक्स में sysctl उपयोगिता का उपयोग करके कॉन्फ़िगर किया जा सकता है, जैसा कि नीचे दर्शाया गया है।
को 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
सॉकेट बफर आकार, जिसे रिसीव बफर (आरएमईएम) और ट्रांसमिट बफर (डब्लूएमईएम) के रूप में भी जाना जाता है, सिस्टम पैरामीटर हैं जो आने वाले और बाहर जाने वाले नेटवर्क ट्रैफ़िक के लिए आरक्षित मेमोरी की मात्रा निर्दिष्ट करते हैं।
-w तर्क के बिना sysctl चलाने से पैरामीटर को उसकी वर्तमान सेटिंग के साथ सूचीबद्ध किया जाता है।

स्टैक सेटिंग विवरण
net.core.rmem_डिफ़ॉल्ट डिफ़ॉल्ट प्राप्त विंडो आकार
net.core.wmem_डिफ़ॉल्ट डिफ़ॉल्ट ट्रांसमिट विंडो आकार
net.core.rmem_max अधिकतम प्राप्त विंडो आकार
net.core.wmem_मैक्स अधिकतम संचारित विंडो आकार
net.core.optmem_max अधिकतम विकल्प मेमोरी बफ़र्स
net.core.netdev_max_बैकलॉग कर्नेल ड्रॉपिंग शुरू होने से पहले अप्रसंस्कृत पैकेटों का बैकलॉग
net.ipv4.tcp_rmem TCP रीड बफ़र्स के लिए मेमोरी रिज़र्वर
net.ipv4.tcp_wmem TCP सेंड बफर्स ​​के लिए मेमोरी रिजर्वर

कर्नेल, नेटवर्क स्टैक, मेमोरी हैंडलर, सीपीयू स्पीड और पावर मैनेजमेंट पैरामीटर्स का नेटवर्क परफॉरमेंस पर बहुत बड़ा असर हो सकता है। एक आम सिफ़ारिश यह है कि नेटवर्क थ्रूपुट प्रो पर लागू किया जाएfile ट्यून्ड कमांड का उपयोग करके। यह नेटवर्किंग अनुप्रयोगों को प्राथमिकता प्रदान करने के लिए कुछ ओएस सेटिंग्स को संशोधित करता है।
जाँच करना:
ट्यून्ड-एडम सक्रिय
तय करना:
ट्यून्ड-एडम प्रोfile नेटवर्क-थ्रूपुट
5.8 नेटवर्क डिवाइस बैकलॉग
यह सुविधा आने वाले ट्रैफ़िक को प्रभावी ढंग से प्रबंधित करके, पैकेट हानि को कम करके, विलंबता को कम करके और थ्रूपुट को बढ़ाकर नेटवर्क प्रदर्शन को बेहतर बनाने में मदद करती है। इससे बेहतर उपयोगकर्ता अनुभव और तेज़ सिस्टम प्रतिक्रिया मिलती है।
डिफ़ॉल्ट रूप से, यह अधिकांश लिनक्स ऑपरेटिंग सिस्टम में सक्षम होता है। डिफ़ॉल्ट मान जाँचने के लिए:
sysctl net.core.netdev_max_backlog
नेटडेव_मैक्स_बैकलॉग का अधिकतम मान कर्नेल संस्करण, हार्डवेयर, मेमोरी और कार्यभार जैसे कारकों के आधार पर भिन्न हो सकता है। कई मामलों में, 8192 को एक अच्छा मान माना जाता है। sysctl -w net.core.netdev_max_backlog=8192
5.9 प्लेटफ़ॉर्म-विशिष्ट कॉन्फ़िगरेशन और ट्यूनिंग
5.9.1 चौथी पीढ़ी के इंटेल® ज़ीऑन® स्केलेबल प्रोसेसर

इंटेल® 4th जनरेशन इंटेल® Xeon® स्केलेबल प्रोसेसर का पावर मैनेजमेंट 3rd जनरेशन इंटेल® Xeon® स्केलेबल प्रोसेसर की तुलना में बेहद आक्रामक है। कोर को कम-पावर की स्थिति में जाने से बचाने के लिए, उन्हें लंबे समय तक चालू रखने के लिए उपयोग में आने वाले कोर की संख्या कम करने का प्रयास करें।
उच्चतम प्रदर्शन के लिए अनुशंसित BIOS सेटिंग्स

  1. सीपीयू पर हाइपर-थ्रेडिंग सक्षम/अक्षम (कार्यभार आवश्यकता और प्रदर्शन लक्ष्यों के आधार पर)।
  2. सिस्टम प्रो सेट करेंfile अधिकतम प्रदर्शन के लिए प्रदर्शन पर जाएँ।
    टिप्पणी
    इसके परिणामस्वरूप बिजली की खपत अधिक होती है
  3. पावर दक्षता की तुलना में अधिकतम CPU प्रदर्शन को प्राथमिकता देने के लिए CPU पावर प्रबंधन को अधिकतम प्रदर्शन पर सेट करें।
  4. टर्बो बूस्ट सक्षम करें। सिस्टम BIOS सेटिंग्स में टर्बो बूस्ट को अक्षम करना आमतौर पर CPU को इसकी बेस आवृत्ति से परे अपनी क्लॉक स्पीड को गतिशील रूप से बढ़ाने से रोकता है।
  5. टिप्पणी
    टर्बो बूस्ट को अक्षम करना कुछ उपयोग मामलों के लिए उपयुक्त हो सकता है जहां अधिकतम प्रदर्शन की तुलना में लगातार प्रदर्शन, बिजली दक्षता या थर्मल प्रबंधन को प्राथमिकता दी जाती है।
  6. यदि सिस्टम वर्चुअलाइजेशन तकनीक का उपयोग नहीं कर रहा है, तो सिंगल रूट I/O वर्चुअलाइजेशन (SR-IOV) सुविधा को बंद कर दें।
  7. CPU को सक्रिय रहने का निर्देश देने तथा अधिक निष्क्रिय अवस्था में जाने से रोकने के लिए C-स्टेट्स को अक्षम करें।
  8. यह सुनिश्चित करने के लिए कि CPU सक्रिय रहे और C1E निष्क्रिय अवस्था में न जाए, C1E को अक्षम करें।
  9. सिस्टम को उच्चतम उपलब्ध आवृत्ति पर संचालित करने का निर्देश देने के लिए अनकोर आवृत्ति को अधिकतम पर सेट करें।
  10. डेल प्लेटफॉर्म पर, CPU कोर की स्पष्ट और पूर्वानुमानित मैपिंग प्रदान करने के लिए मल्टीपल APIC विवरण तालिका (MADT) कोर इम्यूलेशन को लीनियर (या BIOS के आधार पर राउंड-रॉबिन) पर सेट करें।

अनुकूलित प्रदर्शन के लिए अनुशंसित OS स्तर ट्यूनिंग

  1. CPU आवृत्ति स्केलिंग गवर्नर को प्रदर्शन पर सेट करें। cpupower frequency-set -g performance cpupower frequency-info
  2. C-स्टेट्स अक्षम करें. cpupower idle-set -D0
  3. कोर 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 (कार्यभार थ्रूपुट/विलंबता पर निर्भर करता है)।
    ट्यून्ड-एडम प्रोfile नेटवर्क-थ्रूपुट

अनुकूलित प्रदर्शन के लिए अनुशंसित एडाप्टर स्तर ट्यूनिंग

  1. एप्लिकेशन ट्रैफ़िक के लिए उपयोग की जाने वाली कतारों की संख्या सीमित करें। संबंधित CPU कोर को सक्रिय रखने के लिए आवश्यक कतारों की न्यूनतम संख्या का उपयोग करें ताकि उन्हें अधिक निष्क्रिय अवस्था में जाने से रोका जा सके (कार्यभार के लिए समायोजित करें): ethtool -L संयुक्त 32
  2. इंटरप्ट मॉडरेशन दरें सेट करें. ethtool -C अनुकूली-आरएक्स बंद अनुकूली-टीएक्स बंद आरएक्स-यूसेक्स-उच्च 50 आरएक्स-यूसेक्स 50 टीएक्स-यूसेक्स 50
    कार्यभार के लिए इष्टतम मान ज्ञात करने के लिए संचारण/प्राप्ति/उच्च प्राथमिकता वाले कोलेसिंग टाइमर को उच्चतर (80/100/150/200) या निम्नतर (25/20/10/5) समायोजित करने का प्रयास करें।
  3. Rx/Tx रिंग आकार सेट करें. ethtool -G आरएक्स 4096 टीएक्स 4096
    टिप्पणी
    यदि आप ethtool -S| grep drop के साथ Rx पैकेट ड्रॉप देखते हैं, तो रिंग साइज़ को <4096 तक कम करने का प्रयास करें। उस कार्यभार के लिए इष्टतम मान खोजने का प्रयास करें जहाँ पैकेट ड्रॉप नहीं होते हैं।
  4. IRQ Affinity सेट करें। NIC के लिए स्थानीय कोर या विशिष्ट कोर मैपिंग का उपयोग करें (जहाँ # कोर पृष्ठ 1 पर 26 में सेट की गई कतारों की संख्या के बराबर है। systemctl stop irqbalance set_irq_affinity -X local या set_irq_affinity -X

5.9.2 एएमडी ईपीवाईसी
AMD EPYC प्रोसेसर सर्वर और डेटा सेंटर के लिए बनाए गए शक्तिशाली CPU हैं, जो AMD के Zen आर्किटेक्चर पर बनाए गए हैं। नीचे दी गई सेटिंग्स AMD की चौथी पीढ़ी की EPYC सीरीज़ से हैं।
उच्चतम प्रदर्शन के लिए अनुशंसित BIOS सेटिंग्स

  1. कस्टम मोड सक्षम करें ताकि उपयोगकर्ता CPU प्रदर्शन, बिजली की खपत और अन्य सेटिंग्स को समायोजित कर सकें। यह प्रदर्शन और ऊर्जा दक्षता के बीच सर्वोत्तम संतुलन के लिए सिस्टम को ठीक करने में मदद करता है।
  2. कोर प्रदर्शन को बढ़ावा देने की सुविधा सक्षम करें, जिससे CPU अधिक गहन कार्यों को संभालने के लिए अपनी गति को स्वचालित रूप से बढ़ा सके, जिससे समग्र प्रदर्शन में सुधार हो।
  3. वैश्विक C-स्टेट नियंत्रण को अक्षम करें, जिससे CPU को अधिक ऊर्जा बचत वाली अवस्थाओं में जाने से रोका जा सके, जिन्हें C-स्टेट्स कहा जाता है, जिससे प्रतिक्रियाशीलता बनी रहती है।
    टिप्पणी
    सी-स्टेट्स को अक्षम करने से अतिरिक्त बिजली की खपत हो सकती है और थर्मल तापमान बढ़ सकता है। कार्यभार के लिए दोनों पर नज़र रखें।
  4. कार्यभार की आवश्यकता और प्रदर्शन लक्ष्यों के आधार पर CPU पर एक साथ मल्टीथ्रेडिंग (SMT) को सक्षम/अक्षम करें। SMT इंटेल CPU पर हाइपर थ्रेडिंग के बराबर है।
    टिप्पणी
    अनुकूलित प्रदर्शन के लिए, अनुशंसित OS और एडाप्टर स्तर ट्यूनिंग के लिए पृष्ठ 40 पर i13e ड्राइवर सेटिंग्स ट्यूनिंग और पृष्ठ 40 पर प्लेटफ़ॉर्म ट्यूनिंग (i19e गैर-विशिष्ट) देखें।

एडाप्टर बॉन्डिंग

लिनक्स बॉन्डिंग एक शक्तिशाली विशेषता है जो सर्वर वातावरण में नेटवर्क प्रदर्शन, अतिरेक और दोष सहिष्णुता में उल्लेखनीय सुधार कर सकती है। हालाँकि, यह ध्यान रखना महत्वपूर्ण है कि इसे ठीक से काम करने के लिए सर्वर और स्विच दोनों पर संगत नेटवर्क हार्डवेयर और उचित कॉन्फ़िगरेशन की आवश्यकता होती है।
लिनक्स में बॉन्डिंग ड्राइवर आपको कई भौतिक नेटवर्क इंटरफेस को एक बॉन्डेड इंटरफ़ेस में एकीकृत करने की अनुमति देता है। यह बॉन्डेड इंटरफ़ेस ऑपरेटिंग सिस्टम और अनुप्रयोगों के लिए एकल वर्चुअल नेटवर्क इंटरफ़ेस के रूप में दिखाई देता है।
टिप्पणी
बॉन्ड एक तार्किक इंटरफ़ेस है, इसलिए सीपीयू एफिनिटी को सीधे बॉन्ड इंटरफ़ेस पर सेट करना संभव नहीं है (उदाहरण के लिएampले, बॉन्ड0)। यानी, इसका इंटरप्ट हैंडलिंग या CPU एफ़िनिटी पर कोई सीधा नियंत्रण नहीं है। CPU एफ़िनिटी को अंतर्निहित इंटरफ़ेस के लिए कॉन्फ़िगर किया जाना चाहिए जो बॉन्ड का हिस्सा हैं।
बॉन्डिंग कई प्रकार की कार्यप्रणालियाँ प्रदान करती है, जिनमें से प्रत्येक की अपनी विशेषताएं होती हैं।

तरीका  प्रकार
0 राउंड रोबिन
1 सक्रिय बैकअप
2 एक्सओआर
3 प्रसारण
4 एलएसीपी
5 संचारित लोड संतुलन
6 अनुकूली लोड संतुलन

लिनक्स में बॉन्डिंग बनाने के लिए अलग-अलग तरीके हैं। सबसे आम तरीकों में से एक नेटवर्क कॉन्फ़िगरेशन का उपयोग करना है files (उदाहरण के लिएample, /etc/network/ इंटरफेस या /etc/sysconfig/network-scripts/ifcfg-bondX).
नेटवर्क कॉन्फ़िगरेशन का उपयोग करके कॉन्फ़िगरेशन Files
निम्नलिखित चरण नेटवर्क कॉन्फ़िगरेशन के माध्यम से संबंध बनाते हैं files.

  1. बॉन्डिंग के लिए दो या अधिक NIC पोर्ट का चयन करें (उदाहरण के लिएampले, एथएक्स और एथवाई)
  2. NIC कॉन्फ़िगरेशन खोलें Files /etc/sysconfig/network-scripts/ के अंतर्गत आवश्यक NIC इंटरफ़ेस के लिए (उदाहरण के लिएample, vi ifcfg-ethX और vi ifcfg-ethY) और निम्नलिखित पाठ जोड़ें:
    मास्टर=बॉन्डएन [नोट: बॉन्ड संख्या बताने के लिए N एक पूर्णांक है।] स्लेव=हाँ
  3. बॉन्ड नेटवर्क स्क्रिप्ट बनाएं file vi /etc/sysconfig/networkscripts/ifcfg-bondN का उपयोग करके निम्नलिखित पाठ दर्ज करें:
    डिवाइस=बॉन्डएन [नोट: बॉन्ड संख्या बताने के लिए N एक पूर्णांक है] ONBOOT=हां USERCTL=नहीं BOOTPROTO=dhcp (या) कोई नहीं
    IPADDR=200.20.2.4 [आवश्यक अगर BOOTPROTO=कोई नहीं] NETMASK=255.255.255.0 [आवश्यक अगर BOOTPROTO=कोई नहीं] NETWORK=200.20.2.0 [आवश्यक अगर BOOTPROTO=कोई नहीं] BROADCAST=200.20.2.255 [आवश्यक अगर BOOTPROTO=कोई नहीं] BONDING_OPTS=”mode=1 miimon=100″
    टिप्पणी
    आवश्यकता के आधार पर बहुलक 0 से 6 तक कोई भी पूर्णांक हो सकता है।
  4. service network restart या systemctl restart NetworkManager.service का उपयोग करके नेटवर्क सेवाओं को पुनः आरंभ करें

प्रदर्शन समस्या निवारण

7.1 सीपीयू उपयोग
कार्यभार चलने के दौरान प्रति कोर CPU उपयोग की जाँच करें.
ध्यान दें कि प्रति कोर उपयोग समग्र CPU उपयोग की तुलना में प्रदर्शन के लिए अधिक प्रासंगिक है क्योंकि यह प्रति नेटवर्क कतार CPU उपयोग का एक विचार प्रदान करता है। यदि आपके पास नेटवर्क ट्रैफ़िक चलाने वाले केवल कुछ थ्रेड हैं, तो हो सकता है कि आपके पास केवल कुछ कोर का उपयोग किया जा रहा हो। हालाँकि, यदि वे कोर 100% पर हैं, तो आपका नेटवर्क थ्रूपुट संभवतः CPU उपयोग द्वारा सीमित है और यह निम्नलिखित कार्य करने का समय है:

  1. IRQ मॉडरेशन/रिंग आकार को इंटरप्ट मॉडरेशन में विस्तृत रूप से ट्यून करें।
  2. CPU लोड को ज़्यादा कोर पर फैलाने के लिए एप्लीकेशन थ्रेड की संख्या बढ़ाएँ। अगर सभी कोर 100% पर चल रहे हैं, तो हो सकता है कि आपका एप्लीकेशन नेटवर्क बाउंड के बजाय CPU बाउंड हो।

सामान्यतः उपलब्ध उपकरण:

  • शीर्ष
    — सीपीयू की सूची का विस्तार करने के लिए 1 दबाएं और जांचें कि कौन से उपयोग किए जा रहे हैं।
    — उपयोग के स्तर पर ध्यान दें.
    — ध्यान दें कि कौन सी प्रक्रियाएं सबसे अधिक सक्रिय (सूची में सबसे ऊपर) सूचीबद्ध हैं।
  • एमपीस्टेट
    निम्नलिखित पूर्वampकमांड लाइन का परीक्षण Red Hat Enterprise Linux 7.x पर किया गया।
    यह प्रति कोर CPU उपयोग को प्रदर्शित करता है (कुल निष्क्रिय प्रतिशत का पता लगाकर और 100 से घटाकर) और 80% से ऊपर के मूल्यों को लाल रंग में हाइलाइट करता है।
  • परफ टॉप देखें कि चक्र कहां खर्च किए जा रहे हैं।

7.2 i40e काउंटर
i40e ड्राइवर ethtool -S ethX कमांड के माध्यम से इंटरफ़ेस डीबग और मॉनिटरिंग के लिए काउंटरों की एक लंबी सूची प्रदान करता है। वर्कलोड चलने के दौरान आउटपुट को देखना और/या वर्कलोड चलाने से पहले और बाद में काउंटर मानों की तुलना करना मददगार हो सकता है।

  • i40e काउंटरों का पूर्ण डंप प्राप्त करने के लिए: ethtool -S ethX
  • केवल गैर-शून्य काउंटरों को देखने के लिए: watch -d (ethtool -S ethX) | egrep -v :\ 0 | column
    कुछ बातें जिन पर ध्यान देना चाहिए:
  • rx_dropped का अर्थ है कि CPU पर्याप्त तेजी से बफ़र्स की सर्विसिंग नहीं कर रहा है।
  • port.rx_dropped का अर्थ है कि स्लॉट/मेमोरी/सिस्टम में कुछ पर्याप्त तेज़ नहीं है।

7.3 नेटवर्क काउंटर
कार्यभार चलाने से पहले/बाद में netstat -s की जाँच करें।
नेटस्टैट सिस्टम में सभी नेटवर्क डिवाइस से नेटवर्क जानकारी एकत्र करता है। इसलिए, परीक्षण के तहत नेटवर्क के अलावा अन्य नेटवर्क से परिणाम प्रभावित हो सकते हैं। नेटस्टैट -एस से आउटपुट लिनक्स ऑपरेटिंग सिस्टम या कर्नेल में प्रदर्शन समस्याओं का एक अच्छा संकेतक हो सकता है। सामान्य ऑपरेटिंग सिस्टम ट्यूनिंग पर अधिक जानकारी के लिए Red Hat Enterprise Linux Network Performance Tuning Guide जैसे ऑपरेटिंग सिस्टम ट्यूनिंग गाइड से परामर्श लें।
7.4 सिस्टम लॉग
त्रुटियों और चेतावनियों के लिए सिस्टम लॉग की जाँच करें (/var/log/messages, dmesg).
7.5 इंटेल svr-info टूल
इंटेल एक svr-info टूल प्रदान करता है (देखें https://github.com/intel/svr-info) Linux के लिए जो सर्वर से प्रासंगिक हार्डवेयर और सॉफ़्टवेयर विवरण कैप्चर करता है। svr-info आउटपुट सिस्टम की रुकावटों या सेटिंग्स/ट्यूनिंग की पहचान करने में बेहद मददगार हो सकता है जो कार्यभार के लिए अनुकूलित नहीं हैं। ईथरनेट से संबंधित प्रदर्शन समस्याओं के लिए Intel के साथ समर्थन केस खोलते समय, svr-info आउटपुट (टेक्स्ट) शामिल करना सुनिश्चित करें file) परीक्षण कॉन्फ़िगरेशन में प्रत्येक लिनक्स सर्वर के लिए।

  1. svr-info डाउनलोड और इंस्टॉल करें:
    wget -qO- https://github.com/intel/svr-info/releases/latest/download/svrinfo.tgz| tar xvz सीडी svr-सूचना
    ./svr-सूचना
    > होस्टनाम.txt
  2. आउटपुट एकत्रित करें:
    ./svr-info > होस्टनाम.txt
  3. एक पाठ (.txt) संलग्न करें file विश्लेषण के लिए प्रत्येक सर्वर को अपने इंटेल समर्थन मामले में जोड़ें।

सामान्य प्रदर्शन परिदृश्यों के लिए अनुशंसाएँ

8.1 आईपी अग्रेषण

  • कर्नेल को अद्यतन करें.
    हाल ही में कुछ इन-डिस्ट्रो कर्नेल ने रूटिंग कोड में कर्नेल परिवर्तनों के कारण रूटिंग प्रदर्शन को कम कर दिया है, जिसकी शुरुआत सुरक्षा के कारण रूटिंग कैश को हटाने से होती है। हाल ही में आउट-ऑफ-डिस्ट्रो कर्नेल में ऐसे पैच होने चाहिए जो इन परिवर्तनों के प्रदर्शन प्रभाव को कम करते हैं और बेहतर प्रदर्शन प्रदान कर सकते हैं।
  • हाइपर-थ्रेडिंग (तार्किक कोर) अक्षम करें.
  • कर्नेल बूट पैरामीटर संपादित करें.
    — वर्चुअलाइजेशन के लिए आवश्यक न होने पर कर्नेल बूट लाइन से iommu को बंद करें (intel_iommu=off या iommu=off)
    — पावर प्रबंधन बंद करें: प्रोसेसर.max_cstates=1 निष्क्रिय=मतदान pcie_aspm=बंद
  • कतारों की संख्या को स्थानीय सॉकेट पर कोर की संख्या के बराबर सीमित करें (इस उदाहरण में 12)ampले). एथटूल -एल एथएक्स संयुक्त 12
  • पिन केवल स्थानीय सॉकेट में ही व्यवधान डालता है। set_irq_affinity -X स्थानीय ethX या set_irq_affinity -X स्थानीय ethX
    टिप्पणी
    कार्यभार के आधार पर -X या -x का उपयोग किया जा सकता है।
  • आवश्यकतानुसार Tx और Rx रिंग आकार बदलें। बड़ा मान अधिक संसाधन लेता है लेकिन बेहतर अग्रेषण दर प्रदान कर सकता है। ethtool -G ethX rx 4096 tx 4096
  • रूटिंग करते समय GRO को अक्षम करें.
    ज्ञात कर्नेल समस्या के कारण, रूटिंग/फॉरवर्डिंग के समय GRO को बंद करना आवश्यक है। ethtool -K ethX gro off जहां ethX संशोधित किया जाने वाला ईथरनेट इंटरफेस है।
  • अनुकूली व्यवधान मॉडरेशन को अक्षम करें और एक स्थिर मान सेट करें। ethtool -C ethX adaptive-rx off adaptive-tx off ethtool -C ethX rx-usecs 64 tx-usecs 64

टिप्पणी
प्रोसेसर के प्रकार और कार्यभार के आधार पर, बेहतर प्रदर्शन (या कम फ्रेम हानि) के लिए RX और TX के कोलेसिंग मापदंडों को समायोजित किया जा सकता है।

  • फ़ायरवॉल को अक्षम करें. sudo systemctl disable firewalld sudo systemctl stop firewalld
  • IP अग्रेषण सक्षम करें. sysctl -w net.ipv4.ip_forward=1
  • प्राप्त और प्रेषित सॉकेट बफर आकार के लिए अधिकतम मान कॉन्फ़िगर करें. sysctl -w net.core.rmem_max=16777216 sysctl -w net.core.wmem_max=16777216

टिप्पणी
कार्यभार या आवश्यकता के आधार पर, इन मानों को डिफ़ॉल्ट से बदला जा सकता है।
8.2 कम विलंबता

  • हाइपर-थ्रेडिंग (तार्किक कोर) को बंद करें।
  • सुनिश्चित करें कि नेटवर्क डिवाइस numa core 0 पर स्थानीय है।
  • टास्कसेट -c 0 का उपयोग करके बेंचमार्क को कोर 0 पर पिन करें।
  • systemctl stop irqbalance या systemctl disable irqbalance का उपयोग करके irqbalance को बंद करें
  • कोर में फैलाने के लिए एफिनिटी स्क्रिप्ट चलाएँ। स्थानीय या सभी में से कोई एक आज़माएँ।
  • इंटरप्ट मॉडरेशन बंद करें। ethtool -C ethX rx-usecs 0 tx-usecs 0 adaptive-rx off adaptive-tx off rxusecs- high 0
  • कतारों की संख्या स्थानीय सॉकेट पर कोर की संख्या के बराबर होनी चाहिए (इस उदाहरण में 32)ampले). एथटूल -एल एथएक्स संयुक्त 32
  • पिन केवल स्थानीय सॉकेट में ही बाधा डालता है (स्क्रिप्ट i40e ड्राइवर स्रोत के साथ पैक की गई है)। set_irq_affinity -X local ethX
  • netperf -t TCP_RR, netperf -t UDP_RR, या NetPipe जैसे स्थापित बेंचमार्क का उपयोग करें। netperf -t TCP_RR या netperf -t UDP_RR
  • स्थानीय NUMA नोड में एकल कोर पर बेंचमार्क पिन करें. taskset -c

इंटेल ® ईथरनेट 700 सीरीज
लिनक्स प्रदर्शन ट्यूनिंग गाइड
दिसंबर 2024
दस्तावेज़ संख्या: 334019, संशोधन: 1.2

दस्तावेज़ / संसाधन

इंटेल ईथरनेट 700 सीरीज लिनक्स प्रदर्शन ट्यूनिंग [पीडीएफ] उपयोगकर्ता गाइड
334019, ईथरनेट 700 सीरीज लिनक्स प्रदर्शन ट्यूनिंग, ईथरनेट 700 सीरीज, लिनक्स प्रदर्शन ट्यूनिंग, प्रदर्शन ट्यूनिंग, ट्यूनिंग

संदर्भ

एक टिप्पणी छोड़ें

आपकी ईमेल आईडी प्रकाशित नहीं की जाएगी। आवश्यक फ़ील्ड चिह्नित हैं *