ইন্টেল লোগোইন্টেল ® ইথারনেট 700 সিরিজ
লিনাক্স পারফরম্যান্স টিউনিং গাইড
নেক্স ক্লাউড নেটওয়ার্কিং গ্রুপ (এনসিএনজি)
রেভ. 1.2
ডিসেম্বর 2024

পুনর্বিবেচনার ইতিহাস

রিভিশন তারিখ মন্তব্য
1.2 ডিসেম্বর 2024 · অতিরিক্ত পাওয়ার ম্যানেজমেন্ট নির্দেশিকা যোগ করা হয়েছে।
· ইন্টেল* টার্বো বুস্ট যোগ করা হয়েছে।
· নেটওয়ার্ক ডিভাইস ব্যাকলগ যোগ করা হয়েছে।
· প্ল্যাটফর্ম-নির্দিষ্ট কনফিগারেশন এবং টিউনিং যোগ করা হয়েছে।
· চতুর্থ প্রজন্মের ইন্টেল* %eon* স্কেলেবল প্রসেসর যোগ করা হয়েছে।
· AMD EPYC যোগ করা হয়েছে।
· আপডেট করা হয়েছে সিস্টেম হার্ডওয়্যার ক্ষমতা পরীক্ষা করুন।
· আপডেট করা হয়েছে iPerf2।
· আপডেট করা হয়েছে iPerf3।
· আপডেট করা Tx/Rx সারি।
· আপডেট করা ইন্টারাপ্ট মডারেশন।
· আপডেট করা রিং সাইজ।
· আপডেট করা প্ল্যাটফর্ম টিউনিং (i40e অ-নির্দিষ্ট)।
· আপডেট করা BIOS সেটিংস।
· আপডেট করা সি-স্টেট নিয়ন্ত্রণ।
· আপডেট করা CPU ফ্রিকোয়েন্সি স্কেলিং।
· আপডেট করা অ্যাপ্লিকেশন সেটিংস।
· আপডেট করা অপারেটিং সিস্টেম/কার্নেল সেটিংস।
· আপডেট করা আইপি ফরোয়ার্ডিং।
· আপডেট করা হয়েছে কম বিলম্ব।
আগস্ট 2023 এই নথিতে পরিবর্তনগুলির মধ্যে রয়েছে:
· সম্পর্কিত তথ্যসূত্র যোগ করা হয়েছে।
· যোগ করা হয়েছে নিশ্চিত করুন যে DDP প্যাকেজ সঠিকভাবে লোড হচ্ছে।
· iPerf2 যোগ করা হয়েছে।
· iPerf3 যোগ করা হয়েছে।
· নেটপারফ যোগ করা হয়েছে।
· আপডেট করা IRQ অ্যাফিনিটি।
· Tx/Rx সারি যোগ করা হয়েছে।
· আপডেট করা রিং সাইজ।
· জাম্বো ফ্রেম যোগ করা হয়েছে।
· অ্যাডাপ্টার বন্ডিং যোগ করা হয়েছে।
· ইন্টেল এসভিআর-ইনফো টুল যোগ করা হয়েছে।
1.0 মার্চ 2016 প্রাথমিক প্রকাশ (ইন্টেল পাবলিক)।

ভূমিকা

এই নির্দেশিকাটি লিনাক্স পরিবেশে Intel® Ethernet 700 Series NIC ব্যবহার করে সর্বোত্তম নেটওয়ার্কিং কর্মক্ষমতার জন্য পরিবেশ সুরকরণের জন্য নির্দেশিকা প্রদানের উদ্দেশ্যে তৈরি করা হয়েছে। এটি হার্ডওয়্যার, ড্রাইভার এবং অপারেটিং সিস্টেমের অবস্থা এবং সেটিংসের উপর দৃষ্টি নিবদ্ধ করে যা নেটওয়ার্ক কর্মক্ষমতা উন্নত করতে পারে। এটি লক্ষ করা উচিত যে নেটওয়ার্কিং কর্মক্ষমতা যেকোনো সংখ্যক বাইরের প্রভাব দ্বারা প্রভাবিত হতে পারে, শুধুমাত্র এর মধ্যে সবচেয়ে সাধারণ এবং নাটকীয় বিষয়গুলি এই নির্দেশিকাতে আলোচনা করা হয়েছে।
১.১ সম্পর্কিত নির্দেশিকা

প্রাথমিক চেকলিস্ট

২.১ ড্রাইভার/ফার্মওয়্যার সংস্করণ আপডেট করুন
ethtool -i ethx ব্যবহার করে ড্রাইভার/ফার্মওয়্যার সংস্করণগুলি পরীক্ষা করুন।
প্রয়োজন অনুযায়ী নিম্নলিখিতগুলি আপডেট করুন:

২.২ README পড়ুন
জ্ঞাত সমস্যাগুলি পরীক্ষা করুন এবং README থেকে সর্বশেষ কনফিগারেশন নির্দেশাবলী পান। file i40e সোর্স প্যাকেজে অন্তর্ভুক্ত।
২.৩ আপনার PCI এক্সপ্রেস (PCIe) স্লটটি x2.3 কিনা তা পরীক্ষা করুন।
কিছু PCIe x8 স্লট আসলে x4 স্লট হিসেবে কনফিগার করা থাকে। ডুয়াল পোর্ট এবং কোয়াড পোর্ট ডিভাইসের সাথে পূর্ণ লাইন রেটের জন্য এই স্লটগুলিতে পর্যাপ্ত ব্যান্ডউইথ নেই। এছাড়াও, যদি আপনি একটি PCIe v3.0-সক্ষম অ্যাডাপ্টার একটি PCIe v2.x স্লটে রাখেন, তাহলে আপনি সম্পূর্ণ ব্যান্ডউইথ পেতে পারবেন না। সফ্টওয়্যার ডিভাইস ড্রাইভার এই পরিস্থিতি সনাক্ত করে এবং সিস্টেম লগে নিম্নলিখিত বার্তাটি লেখে:
এই কার্ডের জন্য উপলব্ধ PCI-Express ব্যান্ডউইথ সর্বোত্তম কর্মক্ষমতার জন্য যথেষ্ট নয়। সর্বোত্তম কর্মক্ষমতার জন্য একটি x8 PCI-Express স্লট প্রয়োজন।
যদি এই ত্রুটি দেখা দেয়, তাহলে সমস্যাটি সমাধানের জন্য আপনার অ্যাডাপ্টারটিকে একটি সত্যিকারের PCIe v3.0 x8 স্লটে সরান।
২.৪ সিস্টেম হার্ডওয়্যার ক্ষমতা পরীক্ষা করুন
১০ জিবিপিএস, ২৫ জিবিপিএস এবং ৪০ জিবিপিএস ইথারনেটে, কিছু ন্যূনতম সিপিইউ এবং সিস্টেমের প্রয়োজনীয়তা রয়েছে। সাধারণভাবে, আপনার প্ল্যাটফর্মের জন্য একটি আধুনিক সার্ভার ক্লাস প্রসেসর এবং সর্বোত্তম মেমোরি কনফিগারেশন যথেষ্ট হওয়া উচিত, তবে আপনার কাজের চাপের উপর নির্ভর করে চাহিদাগুলি পরিবর্তিত হয়। সমস্ত মেমোরি চ্যানেল পূরণ করা উচিত এবং BIOS-এ মেমোরি পারফরম্যান্স মোড সক্ষম করা উচিত। যাচাই করুন যে আপনার সিপিইউ এবং মেমোরি কনফিগারেশন আপনার কাজের জন্য প্রয়োজনীয় নেটওয়ার্ক পারফরম্যান্সের স্তর সমর্থন করতে সক্ষম।
উল্লেখ্য
XL710 হল একটি 40 GbE কন্ট্রোলার। এই কন্ট্রোলার ব্যবহার করে 2 x 40 GbE অ্যাডাপ্টারটি 2 x 40 GbE নয় বরং একটি সক্রিয় ব্যাক-আপ পোর্ট সহ 1 x 40 GbE হওয়ার উদ্দেশ্যে তৈরি। উভয় পোর্টের সাথে লাইন-রেট ট্র্যাফিক ব্যবহার করার চেষ্টা করার সময়, অভ্যন্তরীণ সুইচটি স্যাচুরেটেড হয় এবং দুটি পোর্টের মধ্যে সম্মিলিত ব্যান্ডউইথ মোট SO Gbps-এর মধ্যে সীমাবদ্ধ থাকে।
২.৪.১ কার্নেল বুট প্যারামিটার
যদি BIOS-এ Intel® Virtualization Technology for Directed I/O (Intel® VT-d) সক্রিয় থাকে, তাহলে Intel সুপারিশ করে যে IOMMU-কে সর্বোত্তম হোস্ট নেটওয়ার্ক কর্মক্ষমতার জন্য পাস-থ্রু মোডে রাখা উচিত। এটি হোস্ট ট্র্যাফিকের উপর DMA ওভারহেড দূর করে এবং ভার্চুয়াল মেশিন (VM)গুলিকে Intel® VT-d-এর সুবিধাগুলি এখনও পেতে সক্ষম করে। কার্নেল বুট প্যারামিটারগুলিতে নিম্নলিখিত লাইনটি যোগ করে এটি সম্পন্ন করা হয়: fommu-pt।
২.৫ নিশ্চিত করুন যে ডিডিপি প্যাকেজ সঠিকভাবে লোড হচ্ছে
১৪০ea এবং ১৪০eb বেস ড্রাইভারগুলিতে ডাইনামিক ডিভাইস পার্সোনালাইজেশন (DDP) এর জন্য সরাসরি সমর্থন নেই। ৭০০ সিরিজ ডিভাইসের সাথে DDP ব্যবহার করার জন্য, একটি DDP প্রোfile testpmd অ্যাপ্লিকেশনের মাধ্যমে আবেদন করা যেতে পারে।
ডিডিপি প্রো সম্পর্কে বিস্তারিত জানার জন্যfiles, এবং কিভাবে একটি DDP প্রো প্রয়োগ করতে হয়file ৭০০ সিরিজ ডিভাইসে testpmd ব্যবহার করার জন্য, Intel® Ethernet 700 সিরিজ ডায়নামিক ডিভাইস পার্সোনালাইজেশন (DDP) প্রযুক্তি নির্দেশিকাটি দেখুন।
একজন DDP প্রো কিনা তা যাচাই করতেfile সফলভাবে লোড করা হয়েছে:
testpmd> ddp তালিকা 0 প্রো পানfile সংখ্যাটি হল: ১
উল্লেখ্য
যদি প্রোfile সংখ্যাটি ০, কোনও DDP প্যাকেজ লোড করা হয়নি। DDP প্যাকেজ লোড ত্রুটির ক্ষেত্রে, ডিভাইসটি ডিফল্টভাবে নিরাপদ মোডে চলে যায় এবং অনেক কর্মক্ষমতা বৈশিষ্ট্য অনুপলব্ধ থাকে। যদি DDP প্যাকেজ লোড করার সাথে সম্পর্কিত ত্রুটি থাকে, তাহলে এটি কর্মক্ষমতা সমস্যা সৃষ্টি করবে। সমস্যা সমাধানের পদক্ষেপগুলির জন্য, Inte/* Ethernet 0 Series Dynamic Device Personalization (DDP) প্রযুক্তি নির্দেশিকাটি পড়ুন।

বেসলাইন পারফরম্যান্স পরিমাপ এবং টিউনিং পদ্ধতি

৩.১ নেটওয়ার্ক পারফরম্যান্স বেঞ্চমার্ক
টিউনিং অনুশীলন শুরু করার আগে, আপনার নেটওয়ার্ক কর্মক্ষমতার একটি ভাল বেসলাইন পরিমাপ করা গুরুত্বপূর্ণ। সাধারণত আপনার নির্দিষ্ট অ্যাপ্লিকেশন/ওয়ার্কলোডের কর্মক্ষমতার প্রাথমিক পরিমাপ পাওয়ার পাশাপাশি, আপনার নেটওয়ার্ক ডিভাইসটি ভাল অবস্থায় আছে কিনা তা যাচাই করার জন্য একটি স্ট্যান্ডার্ড নেটওয়ার্ক কর্মক্ষমতা বেঞ্চমার্ক ব্যবহার করাও একটি ভাল ধারণা।
একক সিস্টেম অপ্টিমাইজেশনের জন্য, netperf বা iperf এবং NetPIPE হল সবই শক্তিশালী ওপেনসোর্স মুক্ত টুল যা আপনাকে সংযোগের উপর জোর দিতে এবং কর্মক্ষমতা সমস্যা নির্ণয় করতে সক্ষম করে।
নেটপার্ফ থ্রুপুট এবং ল্যাটেন্সি উভয় পরীক্ষার জন্যই শক্তিশালী। নেটপাইপ একটি ল্যাটেন্সি-নির্দিষ্ট টুল কিন্তু যেকোনো ধরণের পরিবেশের জন্য এটি কম্পাইল করা যেতে পারে।
উল্লেখ্য
netperf-এ TCP_RR পরীক্ষা লেনদেন/সেকেন্ডের মান অনুযায়ী ল্যাটেন্সি প্রদান করে। এটি একটি রাউন্ড-ট্রিপ সংখ্যা। নিম্নলিখিত সমীকরণ ব্যবহার করে একমুখী ল্যাটেন্সি গণনা করা যেতে পারে:
বিলম্ব (usec) = (1⁄2) / [লেনদেন/সেকেন্ড] * ১,০০০,০০০
৩.১.১ আইপারএফ২
বেশিরভাগ বেঞ্চমার্কিং পরিস্থিতিতে ইন্টেল iperf2 এর পরিবর্তে iperf3 ব্যবহার করার পরামর্শ দেয় কারণ এটি ব্যবহার করা সহজ এবং একটি অ্যাপ্লিকেশনের ক্ষেত্রে একাধিক থ্রেড সমর্থন করে। ইন্টেল 2G সংযোগের জন্য 4-25টি থ্রেড এবং 4G সংযোগের জন্য প্রায় 6-40টি থ্রেড সহ -P বিকল্পটি ব্যবহার করার পরামর্শ দেয়।

  • ক্লায়েন্ট থেকে সার্ভারে একমুখী ট্র্যাফিক চালানোর জন্য: সার্ভার কমান্ড example: iperf2 -s
    ক্লায়েন্ট কমান্ড exampলে: iperf2 -c -পি
  • ক্লায়েন্ট থেকে সার্ভারে দ্বি-মুখী ট্র্যাফিক চালানোর জন্য (এবং বিপরীতভাবে): সার্ভার কমান্ড exampলে: iperf2 –s –p
    ক্লায়েন্ট কমান্ড exampLe:
    iperf2 -c সম্পর্কে -পি -পি --ফুল-ডুপ্লেক্স OR
    iperf2 -c সম্পর্কে -পি -পি -d

উল্লেখ্য
iperf2-এ –full-d এবং –d উভয় বিকল্পই ব্যবহারকারীকে দ্বিমুখী পরীক্ষা করার সুযোগ দেয়। তবে, –full-d বিকল্পটি বিশেষভাবে পূর্ণ ডুপ্লেক্স পরীক্ষার উপর দৃষ্টি নিবদ্ধ করে।
উল্লেখ্য
একাধিক সার্ভার পোর্ট জুড়ে iperf2 পরীক্ষা করার সময়, একই টার্মিনাল উইন্ডো থেকে ব্যাকগ্রাউন্ডে সমস্ত সার্ভার সেশন চালানোর জন্য -d ফ্ল্যাগটি সার্ভার কমান্ডে যোগ করা যেতে পারে। যখন সার্ভার কমান্ডটি একটি স্ক্রিপ্টের একটি for-loop এর ভিতরে এমবেড করা থাকে তখনও -d ফ্ল্যাগটি ব্যবহার করা যেতে পারে।
উল্লেখ্য
একটি একক স্ট্রিম/থ্রেড দিয়ে নেটওয়ার্ক থ্রুপুট পরীক্ষা চালানোর সময় (যেমনample: P1), AMD প্রসেসরগুলি প্রত্যাশিত থ্রুপুট প্রদান নাও করতে পারে, বিশেষ করে উচ্চ ব্যান্ডউইথ NIC গুলিতে (যদি গতি >= 25G ব্যান্ডউইথ হয়)। ফলস্বরূপ, উচ্চ থ্রুপুট অর্জনের জন্য নির্দিষ্ট কোরে অ্যাপ্লিকেশন পিন করা প্রয়োজন। পৃষ্ঠা 22-এ অ্যাপ্লিকেশন সেটিংস দেখুন।
৩.১.১ আইপারএফ২
যদি iperf3 ব্যবহার করা হয়, তাহলে অ্যাডভান্স নেওয়ার জন্য অ্যাপ্লিকেশনের একাধিক উদাহরণ প্রয়োজনtagমাল্টি-থ্রেড, RSS, এবং হার্ডওয়্যার কিউ এর e। ইন্টেল 2G সংযোগের জন্য 4-25টি অ্যাপ্লিকেশন সেশন এবং 4G সংযোগের জন্য প্রায় 6-40টি সেশন চালানোর পরামর্শ দেয়। প্রতিটি সেশনে -p বিকল্প ব্যবহার করে একটি অনন্য TCP পোর্ট মান নির্দিষ্ট করা উচিত।

  • ক্লায়েন্ট থেকে সার্ভারে একমুখী ট্র্যাফিক চালানোর জন্য:
    সার্ভার কমান্ড exampLe:
    iperf3 -s -p সম্পর্কে
    ক্লায়েন্ট কমান্ড exampLe:
    iperf3 -c সম্পর্কে -পি
  • ক্লায়েন্ট থেকে সার্ভারে দ্বি-মুখী ট্র্যাফিক চালানোর জন্য (এবং বিপরীতভাবে):
    সার্ভার কমান্ড exampLe:
    iperf3 –s –p
    ক্লায়েন্ট কমান্ড exampলে: iperf3 -c -পি -পি –-বিদির
  • iperf3 এর একাধিক ইনস্ট্যান্স (থ্রেড) শুরু করার জন্য, TCP পোর্টগুলিতে থ্রেড ম্যাপ করার জন্য একটি for-loop ব্যবহার করার এবং সমান্তরালভাবে একাধিক প্রক্রিয়া তৈরি করার জন্য & ব্যবহার করে ব্যাকগ্রাউন্ডে iperf3 চালানোর পরামর্শ দেওয়া হচ্ছে।
    সার্ভার কমান্ড example, ৪টি থ্রেড শুরু করুন: port=””; {4..0}-এ i-এর জন্য; do port=3$i; bash -c “iperf520 -s -p $port &”; done; ক্লায়েন্ট কমান্ড example, 4 টি থ্রেড শুরু করুন - {0..3} তে i এর জন্য test port=””; ট্রান্সমিট করুন; do port=520$i; bash -c “iperf3 -c $serverIP -p $port &”; সম্পন্ন; ক্লায়েন্ট কমান্ড example, 4 টি থ্রেড শুরু করুন – test port=””; for i in {0..3}; do port=520$i; bash -c “iperf3 -R -c $serverIP -p $port &”; done; 40G সংযোগের জন্য, 6 টি পর্যন্ত ইনস্ট্যান্স/থ্রেড তৈরি করতে for-loop বাড়ান।

উল্লেখ্য
একটি একক স্ট্রিম/থ্রেড দিয়ে নেটওয়ার্ক থ্রুপুট পরীক্ষা চালানোর সময় (যেমনample: P1), AMD প্রসেসরগুলি প্রত্যাশিত থ্রুপুট প্রদান নাও করতে পারে, বিশেষ করে উচ্চ ব্যান্ডউইথ
NICs (যদি গতি >= 25G ব্যান্ডউইথ হয়)। ফলস্বরূপ, উচ্চতর থ্রুপুট অর্জনের জন্য নির্দিষ্ট কোরে অ্যাপ্লিকেশন পিনিং প্রয়োজন। পৃষ্ঠা 22-এ অ্যাপ্লিকেশন সেটিংস এবং পৃষ্ঠা 26-এ AMD EPYC দেখুন।
৩.১.৩ নেটপারফ
নেটপারফ টুলটি থ্রুপুট এবং ল্যাটেন্সি উভয় পরীক্ষার জন্যই শক্তিশালী পছন্দ।

  • netperf-এ TCP_STREAM পরীক্ষা ডিভাইসের থ্রুপুট ক্ষমতা পরিমাপ করে। সার্ভার কমান্ড example: netserver ক্লায়েন্ট কমান্ড exampলে: নেটপারফ -টি টিসিপি_স্ট্রিম -এল ৩০ -এইচ
  • netperf-এ TCP_RR পরীক্ষা লেনদেন/সেকেন্ডের মান অনুযায়ী ল্যাটেন্সি প্রদান করে। এটি একটি রাউন্ড-ট্রিপ সংখ্যা। যদি x ডিভাইসের CPU স্থানীয় হয়, তাহলে -T x,x বিকল্পটি ব্যবহার করার পরামর্শ দেওয়া হচ্ছে। একমুখী ল্যাটেন্সি নিম্নলিখিত ব্যবহার করে গণনা করা যেতে পারে: Latency(usec)=(1⁄2)/ [লেনদেন/সেকেন্ড]*1,000,\ সার্ভার কমান্ড exampলে: নেটসার্ভার
    ক্লায়েন্ট কমান্ড exampলে: নেটপারফ -টি TCP_RR -l 30 -H -টি এক্স,এক্স
  • netperf-এর একাধিক ইনস্ট্যান্স (থ্রেড) শুরু করার জন্য, TCP পোর্টগুলিতে থ্রেড ম্যাপ করার জন্য একটি for-loop ব্যবহার করার পরামর্শ দেওয়া হচ্ছে এবং সমান্তরালভাবে একাধিক প্রক্রিয়া তৈরি করার জন্য & ব্যবহার করে ব্যাকগ্রাউন্ডে netperf চালানোর পরামর্শ দেওয়া হচ্ছে।
    সার্ভার কমান্ড exampলে, ৮টি থ্রেড শুরু করুন:
    port=””; {0..7}-এ i-এর জন্য; do port=520$i; bash -c “netserver -L $serverIP -p $port &”; সম্পন্ন;
    ক্লায়েন্ট কমান্ড example, 8 টি থ্রেড শুরু করুন: port=””; {0..7}-এ i-এর জন্য; do port=520$i; bash -c “netperf -H $serverIP -p $port -t TCP_STREAM -l 30 &”; সম্পন্ন;

৩.২ টিউনিং পদ্ধতি
একবারে একটি টিউনিং পরিবর্তনের উপর মনোযোগ দিন যাতে আপনি জানতে পারেন যে প্রতিটি পরিবর্তন আপনার পরীক্ষায় কী প্রভাব ফেলবে। টিউনিং প্রক্রিয়ায় আপনি যত বেশি পদ্ধতিগত হবেন, কর্মক্ষমতার বাধাগুলির কারণগুলি সনাক্ত করা এবং সমাধান করা তত সহজ হবে।

i40e ড্রাইভার সেটিংস টিউন করা হচ্ছে

৪.১ আইআরকিউ অ্যাফিনিটি
IRQ অ্যাফিনিটি এমনভাবে কনফিগার করা যাতে বিভিন্ন নেটওয়ার্ক কিউয়ের জন্য ইন্টারাপ্টগুলি বিভিন্ন CPU কোরের সাথে সংযুক্ত থাকে, কর্মক্ষমতার উপর, বিশেষ করে মাল্টিথ্রেড থ্রুপুট পরীক্ষাগুলির উপর বিশাল প্রভাব ফেলতে পারে।
IRQ অ্যাফিনিটি কনফিগার করতে, irqbalance বন্ধ করুন এবং তারপর i40e সোর্স প্যাকেজ থেকে set_irq_affinity স্ক্রিপ্ট ব্যবহার করুন অথবা কিউ ম্যানুয়ালি পিন করুন। কিউ পিনিং সক্ষম করতে ইউজার-স্পেস IRQ ব্যালেন্সার অক্ষম করুন:

  • systemctl irqbalance নিষ্ক্রিয় করুন
  • systemctl irqbalance বন্ধ করুন
    i40e সোর্স প্যাকেজ থেকে set_irq_affinity স্ক্রিপ্ট ব্যবহার করা (প্রস্তাবিত):
  • সমস্ত কোর ব্যবহার করতে:
    [path-to-i40epackage]/scripts/set_irq_affinity -X সমস্ত ethX
  • স্থানীয় NUMA সকেটে শুধুমাত্র কোর ব্যবহার করতে: [path-to-i40epackage]/scripts/set_irq_affinity -X স্থানীয় ethX
  • আপনি বিভিন্ন ধরণের কোরও নির্বাচন করতে পারেন। cpu0 ব্যবহার করা এড়িয়ে চলুন কারণ এটি টাইমার টাস্ক চালায়। [path-to-i40epackage]/scripts/set_irq_affinity 1-2 ethX

উল্লেখ্য
-x বিকল্পটি নির্দিষ্ট করা থাকলে অ্যাফিনিটি স্ক্রিপ্টটি পিনিং প্রক্রিয়ার অংশ হিসেবে ট্রান্সমিট প্যাকেট স্টিয়ারিং (XPS) সক্ষম করে। যখন XPS সক্রিয় থাকে, তখন ইন্টেল আপনাকে irqbalance অক্ষম করার পরামর্শ দেয়, কারণ XPS সহ কার্নেল ব্যালেন্সার অপ্রত্যাশিত কর্মক্ষমতা সৃষ্টি করতে পারে। -X বিকল্পটি নির্দিষ্ট করা থাকলে অ্যাফিনিটি স্ক্রিপ্ট XPS অক্ষম করে। XPS অক্ষম করা এবং প্রতিসম কিউ সক্ষম করা ওয়ার্কলোডের জন্য উপকারী যেখানে Tx এবং Rx ট্র্যাফিক একই কিউ জোড়ায় পরিষেবা দেওয়া হলে সর্বোত্তম কর্মক্ষমতা অর্জন করা হয়।
লিনাক্সে সিমেট্রিক কিউ কনফিগার করার জন্য নেটওয়ার্ক ইন্টারফেস ড্রাইভার প্যারামিটারগুলিকে টিউন করা জড়িত যাতে সমর্থিত নেটওয়ার্ক অ্যাডাপ্টারের জন্য সিমেট্রিক রিসিভ কিউ (Rx) এবং সিমেট্রিক ট্রান্সমিট কিউ (Tx) সক্ষম করা যায়।
উল্লেখ্য

  • সিমেট্রিক কিউ একটি উন্নত নেটওয়ার্কিং বৈশিষ্ট্য, এবং সমস্ত 700 সিরিজের নেটওয়ার্ক অ্যাডাপ্টার বা ড্রাইভার এগুলি সমর্থন করে না।
  • প্রতিসম সারি কনফিগার করার চেষ্টা করার আগে নিশ্চিত করুন যে আপনার কাছে প্রয়োজনীয় ড্রাইভার এবং হার্ডওয়্যার সমর্থন আছে।

প্রতিসম সারি কনফিগার করতে, এই সাধারণ পদক্ষেপগুলি অনুসরণ করুন:

  1. নেটওয়ার্ক ইন্টারফেস কনফিগারেশন সম্পাদনা করুন File: একটি টেক্সট এডিটর ব্যবহার করুন (যেমনample, vi, nano, অথবা gedit) নেটওয়ার্ক ইন্টারফেস কনফিগারেশন সম্পাদনা করতে file. দ file সাধারণত /etc/sysconfig/network-scripts/ ডিরেক্টরির অধীনে অবস্থিত এবং এর নাম ifcfg-ethX এর মতো, যেখানে ethX হল আপনার নেটওয়ার্ক ইন্টারফেসের নাম।
  2. সিমেট্রিক কিউ প্যারামিটার যোগ করুন। নেটওয়ার্ক ইন্টারফেস কনফিগারেশনে নিম্নলিখিত লাইনগুলি যোগ করুন file: ETHTOOL_OPTS=”rx-সারি ৮ টি x-সারি ৮”
  3. নেটওয়ার্ক পরিষেবা পুনরায় চালু করুন।
    পরিবর্তনগুলি করার পরে, নতুন কনফিগারেশন প্রয়োগ করতে নেটওয়ার্ক পরিষেবাটি পুনরায় চালু করুন। sudo systemctl restart network

ম্যানুয়ালি:

  • প্রতিটি নোডের সাথে সংযুক্ত প্রসেসরগুলি খুঁজুন: numactl –hardware lscpu
  • প্রতিটি প্রসেসরের জন্য বিট মাস্ক খুঁজুন:
  • নোড 0 এর জন্য কোর 11-0 ধরে নিচ্ছি: [1,2,4,8,10,20,40,80,100,200,400,800]
  • যে পোর্টটি বরাদ্দ করা হচ্ছে তাতে নির্ধারিত IRQ গুলি খুঁজুন: grep ethX /proc/interrupts এবং IRQ মানগুলি নোট করুন।ample, লোড করা ১২টি ভেক্টরের জন্য ১৮১-১৯২।
  • সংশ্লিষ্ট IRQ এন্ট্রিতে SMP অ্যাফিনিটি মান প্রতিধ্বনিত করুন। মনে রাখবেন যে প্রতিটি IRQ এন্ট্রির জন্য এটি করা প্রয়োজন: echo 1 > /proc/irq/181/smp_affinity echo 2 > /proc/irq/182/smp_affinity echo 4 > /proc/irq/183/smp_affinity IRQ অ্যাফিনিটি দেখান:
  • সকল কোরের জন্য IRQ সম্বন্ধ দেখানোর জন্য: /স্ক্রিপ্ট/সেট_আইআরকিউ_অ্যাফিনিটি -এস এথএক্স
  • স্থানীয় NUMA সকেটে শুধুমাত্র কোর দেখানোর জন্য: /scripts/set_irq_affinity -s স্থানীয় ethX
  • আপনি কোরের একটি পরিসরও নির্বাচন করতে পারেন: /scripts/set_irq_affinity -s 40-0-8,16 ethX

উল্লেখ্য
set_irq_affinity স্ক্রিপ্টটি i40e ড্রাইভার সংস্করণ 2.16.11 এবং পরবর্তী সংস্করণে -s ফ্ল্যাগ সমর্থন করে।
৪.২ টাকা/রাঁ সারি
আরম্ভের সময় ড্রাইভার দ্বারা প্রতিটি ইথারনেট পোর্টের জন্য সক্ষম করা ডিফল্ট কিউ সংখ্যা প্ল্যাটফর্মে উপলব্ধ মোট CPU-এর সংখ্যার সমান। এটি অনেক প্ল্যাটফর্ম এবং ওয়ার্কলোড কনফিগারেশনের জন্য ভালোভাবে কাজ করে। তবে, উচ্চ কোর গণনা এবং/অথবা উচ্চ ইথারনেট পোর্ট ঘনত্ব সহ প্ল্যাটফর্মগুলিতে, এই কনফিগারেশনটি রিসোর্স বিতর্কের কারণ হতে পারে। অতএব, কিছু ক্ষেত্রে সিস্টেমের প্রতিটি পোর্টের জন্য ডিফল্ট পরিবর্তন করা প্রয়োজন হতে পারে।
নির্দিষ্ট মডেল এবং ড্রাইভার সংস্করণের উপর নির্ভর করে Tx/Rx কিউয়ের ডিফল্ট সংখ্যা পরিবর্তিত হতে পারে। নীচে তালিকাভুক্ত ethtool -L কমান্ড ব্যবহার করে কিউয়ের সংখ্যা সামঞ্জস্য করা যেতে পারে।
উল্লেখ্য
এই ক্ষেত্রে, ইন্টেল সুপারিশ করে যে আপনি প্রতিটি পোর্টের জন্য ডিফল্ট কিউ কাউন্ট কমিয়ে আনুন, অ্যাডাপ্টার পোর্টের স্থানীয় NUMA নোডে উপলব্ধ CPU-এর সংখ্যার চেয়ে বেশি নয়। কিছু ক্ষেত্রে, উচ্চ পোর্ট কাউন্ট বাস্তবায়নে রিসোর্স ভারসাম্য করার চেষ্টা করার সময়, এই সংখ্যাটি আরও কমানোর প্রয়োজন হতে পারে।
সারি কনফিগারেশন পরিবর্তন করতে:
নিম্নলিখিত প্রাক্তনample পোর্টটিকে 32 Tx/Rx কিউতে সেট করে: ethtool -L ethX মিলিত 32
Example আউটপুট:
ethtool -l ethX এর বিবরণ
ethX এর জন্য চ্যানেল প্যারামিটার: পূর্বনির্ধারিত সর্বোচ্চ:
আরএক্স: 96
TX: 96
অন্যান্য: 1
সম্মিলিত: ৯৬
বর্তমান হার্ডওয়্যার সেটিংস:
আরএক্স: 0
TX: 0
অন্যান্য: 1
সম্মিলিত: ৯৬
৪.৩ ইন্টারাপ্ট মডারেশন
অ্যাডাপ্টিভ ইন্টারাপ্ট মডারেশন ডিফল্টরূপে চালু থাকে এবং কম CPU ব্যবহার এবং উচ্চ কর্মক্ষমতার মধ্যে একটি ভারসাম্যপূর্ণ পদ্ধতি প্রদানের জন্য ডিজাইন করা হয়েছে। তবে, আপনার ব্যবহারের ক্ষেত্রে ফিট করার জন্য আপনি ইন্টারাপ্ট সেটিংস ম্যানুয়ালি টিউন করার চেষ্টা করতে পারেন।
০-২৩৫ মাইক্রোসেকেন্ডের পরিসর প্রতি সেকেন্ডে ৪,৩১০ থেকে ২৫০,০০০ ইন্টারাপ্টের কার্যকর পরিসর প্রদান করে। একই ethtool কমান্ডে rx-μsecs-high এর মান rx-μsecs এবং tx-μsecs থেকে স্বাধীনভাবে সেট করা যেতে পারে এবং এটি অ্যাডাপ্টিভ ইন্টারাপ্ট মডারেশন অ্যালগরিদমের থেকেও স্বাধীন। অন্তর্নিহিত হার্ডওয়্যার ২ মাইক্রোসেকেন্ড ব্যবধানে গ্রানুলারিটি সমর্থন করে, তাই সংলগ্ন মানগুলির ফলে একই ইন্টারাপ্ট হার হতে পারে।

  • অ্যাডাপটিভ ইন্টারাপ্ট মডারেশন বন্ধ করতে: ethtool -C ethX adaptiv-rx off adaptiv-tx off
  • অ্যাডাপটিভ ইন্টারাপ্ট মডারেশন চালু করতে: ethtool -C ethX adaptiv-rx on adaptiv-tx on

সাধারণ টিউনিংয়ের জন্য শুরু করার জন্য একটি ভাল জায়গা হল 84 μs, অথবা ~12000 ইন্টারাপ্ট/সেকেন্ড। যদি আপনি দেখেন যে ট্র্যাফিকের সময় rx_dropped কাউন্টারগুলি চলছে (ethtool -S ethX ব্যবহার করে) তাহলে সম্ভবত আপনার CPU খুব ধীর, অ্যাডাপ্টারের রিং আকার (ethtool -G) থেকে 84 μs বা কম ইন্টারাপ্ট রেটের জন্য প্যাকেট ধরে রাখার জন্য পর্যাপ্ত বাফার নেই।

  • ইন্টারাপ্ট মডারেশনকে ইন্টারাপ্টের মধ্যে ৮৪ μs (১২০০০ ইন্টারাপ্ট/সেকেন্ড) একটি নির্দিষ্ট ইন্টারাপ্ট রেটে সেট করতে: ethtool -C ethX adaptiv-rx off adaptiv-tx off rx-usecs 84 tx-usecs 12000 যদি আপনার CPU ব্যবহারের সর্বোচ্চ ক্ষমতা না থাকে, তাহলে পরবর্তী মান হল ৬২ μs। এটি আরও CPU ব্যবহার করে, তবে এটি দ্রুত বাফার পরিষেবা দেয় এবং কম বর্ণনাকারীর প্রয়োজন হয় (রিং আকার, ethtool -G)।
  • ইন্টারাপ্ট মডারেশনকে ইন্টারাপ্টের মধ্যে 62 ইউসেকের স্থির ইন্টারাপ্ট রেটে সেট করতে (16000 ইন্টারাপ্ট/সেকেন্ড)। ethtool -C ethX অ্যাডাপটিভ-আরএক্স অফ অ্যাডাপটিভ-টিএক্স অফ rx-usecs 62 tx-usecs 62
    যদি ট্র্যাফিকের সময় rx_dropped কাউন্টারগুলি বৃদ্ধি পায় (ethtool -S ethX ব্যবহার করে), তাহলে সম্ভবত আপনার CPU খুব ধীর, অ্যাডাপ্টারের রিং আকার (ethtool -G) থেকে পর্যাপ্ত বাফার নেই, অথবা ইন্টারাপ্ট রেট খুব কম। যদি আপনার CPU ব্যবহারের সর্বোচ্চ ক্ষমতা না থাকে, তাহলে আপনি ITR মান কমিয়ে ইন্টারাপ্ট রেট বাড়াতে পারেন। এতে বেশি CPU ব্যবহার হয়, কিন্তু পরিষেবাগুলি দ্রুত বাফার হয় এবং কম বর্ণনাকারীর প্রয়োজন হয় (রিং আকার, ethtool -G)।
    যদি আপনার CPU ১০০% এ থাকে, তাহলে ইন্টারাপ্ট রেট বাড়ানোর পরামর্শ দেওয়া হয় না। কিছু পরিস্থিতিতে যেমন CPU-র সাথে আবদ্ধ কাজের চাপ, আপনি অন্যান্য অ্যাপ্লিকেশনের জন্য আরও CPU সময় সক্ষম করার জন্য μs মান বাড়াতে চাইতে পারেন।
    যদি আপনার কম ল্যাটেন্সি পারফরম্যান্সের প্রয়োজন হয় এবং/অথবা নেটওয়ার্ক প্রসেসিংয়ে নিবেদিত করার জন্য প্রচুর CPU থাকে, তাহলে আপনি ইন্টারাপ্ট মডারেশন সম্পূর্ণরূপে অক্ষম করতে পারেন, যা ইন্টারাপ্টগুলিকে যত দ্রুত সম্ভব কার্যকর করতে সক্ষম করে।
  • ইন্টারাপ্ট মডারেশন নিষ্ক্রিয় করতে ethtool -C ethX adaptiv-rx off adaptiv-tx off rx-usecs 0 tx-usecs 0

উল্লেখ্য
ইন্টারাপ্ট মডারেশন নিষ্ক্রিয় করে চালানোর সময়, প্রতিটি কিউতে ইন্টারাপ্ট রেট খুব বেশি হতে পারে। ইন্টারাপ্ট রেটের সর্বোচ্চ সীমা নির্ধারণ করতে rx-usec-high প্যারামিটার অন্তর্ভুক্ত করার কথা বিবেচনা করুন। নিম্নলিখিত কমান্ডটি অ্যাডাপ্টিভ ইন্টারাপ্ট মডারেশন অক্ষম করে এবং রিসিভ বা ট্রান্সমিট সম্পূর্ণ হওয়ার ইঙ্গিত দেওয়ার আগে সর্বাধিক 5 মাইক্রোসেকেন্ডের অনুমতি দেয়। প্রতি সেকেন্ডে 200,000 ইন্টারাপ্ট তৈরি করার পরিবর্তে, এটি rx-usec-high প্যারামিটারের মাধ্যমে প্রতি সেকেন্ডে মোট ইন্টারাপ্ট 50,000-এ সীমাবদ্ধ করে। # ethtool -C ethX adaptiv-rx off adaptiv-tx off rx-usecs-high 20 rx-usecs 5 txusecs 5 ওয়ার্কলোডের জন্য সর্বোত্তম মান খুঁজে পেতে ট্রান্সমিট/রিসিভ/হাই-প্রায়রিটি কোলেসিং টাইমার উচ্চতর (80/100/150/200) বা নিম্নতর (25/20/10/5) সামঞ্জস্য করার চেষ্টা করুন।
৪.৪ রিং সাইজ
যদি আপনি ethtool -S ethX (rx_dropped, rx_dropped.nic) তে rx_dropped কাউন্টার দেখতে পান, অথবা একাধিক কিউ সক্রিয় থাকা অবস্থায় ক্যাশে চাপের সন্দেহ হয়, তাহলে আপনি ডিফল্ট মান থেকে রিং সাইজ সামঞ্জস্য করার চেষ্টা করতে পারেন। ডিফল্ট মান হল 512, সর্বোচ্চ 4096।

  • বর্তমান মান পরীক্ষা করতে: ethtool -g ethX
    যদি সন্দেহ হয় যে বাফারিংয়ের অভাব বর্তমান ইন্টারাপ্ট রেটে ড্রপ সৃষ্টি করছে, তাহলে আপনি প্রথমে সর্বোচ্চ চেষ্টা করতে পারেন, তারপর সর্বনিম্ন, তারপর সর্বোত্তম পারফরম্যান্স না দেখা পর্যন্ত বাইনারি অনুসন্ধান চালিয়ে যেতে পারেন।
    যদি ক্যাশে চাপ সন্দেহ করা হয় (অনেক সারি সক্রিয়), তাহলে ডিফল্ট থেকে বাফার কমানো Intel ® Data Direct I/O (Intel ® DDIO) কে আরও দক্ষতার সাথে পরিচালনা করতে সাহায্য করতে পারে। Intel প্রতি কিউতে 128 বা 256 চেষ্টা করার পরামর্শ দেয়, কারণ এটি জেনে রাখা উচিত যে rx_dropped বৃদ্ধি এড়াতে ethtool -C এর মাধ্যমে ইন্টারাপ্ট রেট বৃদ্ধি করা প্রয়োজন হতে পারে।
  • রিং সাইজকে নির্দিষ্ট মানে সেট করতে: ethtool -G eth12 rx 256 tx 256

উল্লেখ্য
ethtool -S ethX|grep ড্রপ ব্যবহার করে পাওয়া Rx প্যাকেট ড্রপগুলি ঠিক করতে, রিং সাইজ 4096 এ বাড়ানোর কথা বিবেচনা করুন। কাজের চাপের জন্য সেরা সেটিংটি খুঁজে বের করার জন্য পরীক্ষা করুন তবে উচ্চ মানের সাথে অতিরিক্ত মেমরি ব্যবহারের দিকে নজর রাখুন।
4.5 প্রবাহ নিয়ন্ত্রণ
লেয়ার ২ ফ্লো কন্ট্রোল টিসিপি কর্মক্ষমতাকে উল্লেখযোগ্যভাবে প্রভাবিত করতে পারে এবং বেশিরভাগ কাজের চাপের জন্য এটি নিষ্ক্রিয় করার পরামর্শ দেওয়া হয়। একটি সম্ভাব্য ব্যতিক্রম হল বিস্ফোরিত ট্র্যাফিক যেখানে বিস্ফোরণের সময়কাল দীর্ঘ নয়।
প্রবাহ নিয়ন্ত্রণ ডিফল্টরূপে নিষ্ক্রিয় থাকে।

  • প্রবাহ নিয়ন্ত্রণ সক্ষম করতে: 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 mtu 9000 উপরে
বিকল্পভাবে, আপনি নিম্নরূপ ip কমান্ড ব্যবহার করতে পারেন: ip link set mtu 9000 dev আইপি লিঙ্ক সেট আপ ডেভেলপার

প্ল্যাটফর্ম টিউনিং (i40e অ-নির্দিষ্ট)

5.1 BIOS সেটিংস

  • ভার্চুয়ালাইজেশন ওয়ার্কলোডের জন্য Intel® VT-d সক্ষম করুন।
  • হাইপার-থ্রেডিং (লজিক্যাল প্রসেসর) কর্মক্ষমতা প্রভাবিত করতে পারে। আপনার কাজের চাপের জন্য এটি চালু বা বন্ধ করে পরীক্ষা করুন।
  • ইন্টেল® টার্বো বুস্ট সিপিইউ কোরগুলিকে সিপিইউর বেস ফ্রিকোয়েন্সির চেয়ে বেশি ফ্রিকোয়েন্সিতে কাজ করতে দেয়। ইন্টেল® টার্বো বুস্ট সক্ষম করলে অনেক কাজের জন্য কর্মক্ষমতা উন্নত হতে পারে কিন্তু কোরগুলিকে উচ্চ ফ্রিকোয়েন্সিতে রাখার জন্য আরও বেশি শক্তি খরচ হয়। আপনার কাজের জন্য টার্বো বুস্ট বন্ধ/চালু করে পরীক্ষা করুন।

উল্লেখ্য
প্ল্যাটফর্মে যদি উচ্চ সামগ্রিক CPU ব্যবহারের অভিজ্ঞতা থাকে তবে টার্বো ফ্রিকোয়েন্সি নিশ্চিত করা হয় না। সামগ্রিক CPU ব্যবহার বৃদ্ধির সাথে সাথে উচ্চ কোর টার্বো ফ্রিকোয়েন্সি হ্রাস পায়।
5.2 পাওয়ার ম্যানেজমেন্ট
পাওয়ার ম্যানেজমেন্ট কর্মক্ষমতা প্রভাবিত করতে পারে, বিশেষ করে কম ল্যাটেন্সি ওয়ার্কলোডের ক্ষেত্রে। যদি কর্মক্ষমতা বিদ্যুৎ খরচ কমানোর চেয়ে বেশি অগ্রাধিকার পায়, তাহলে ইন্টেল আপনাকে পাওয়ার ম্যানেজমেন্টের প্রভাব সীমিত করার জন্য পরীক্ষা-নিরীক্ষা করার পরামর্শ দেয়। অপারেটিং সিস্টেম টুল, BIOS সেটিংস এবং কার্নেল বুট প্যারামিটারের মাধ্যমে পাওয়ার ম্যানেজমেন্ট সীমিত করার অনেক উপায় রয়েছে। আপনার পরিবেশের সাথে মানানসই সেরা পদ্ধতি এবং স্তরটি বেছে নিন।
৫.২.১ সি-স্টেট নিয়ন্ত্রণ
C-স্টেট এন্ট্রি CO বা C1-এর মধ্যে সীমাবদ্ধ রাখলে কর্মক্ষমতা উন্নত হয় এবং শক্তির ব্যবহার বৃদ্ধি পায়।
CPU প্যাকেজ C6 স্টেট এন্ট্রি অক্ষম করলে নেটওয়ার্কের কর্মক্ষমতা উন্নত হতে পারে। তবে, এটি পাওয়ার ব্যবহার বৃদ্ধি করে।
নিম্নলিখিত বিকল্পগুলি উপলব্ধ:

  • সি-স্টেট এন্ট্রি গতিশীলভাবে নিয়ন্ত্রণ করুন:
    খোলা
    /dev/cpu_dma_latency এবং এতে সর্বোচ্চ অনুমোদিত ল্যাটেন্সি লিখুন।

উল্লেখ্য
cpudmalatency.c নামে একটি ছোট প্রোগ্রাম আছে যা ওপেন সোর্স কমিউনিটি থেকে ডাউনলোড করা যায়, কম্পাইল করা যায় এবং কমান্ড লাইন থেকে চালানো যায় যাতে এটি ঠিকভাবে করা যায়।
নিম্নলিখিত প্রাক্তনample পাঁচ μs জাগরণ সময় অনুমোদন করে, এবং এইভাবে C1 এন্ট্রি অনুমোদন করে: cpudmalatency 5 &

  • কার্নেল বুট সেটিংসে সর্বাধিক সি-স্টেট সীমিত করুন:
    ইন্টেল সিপিইউগুলির জন্য: intel_idle.max_cstates=1
    নন-ইন্টেল সিপিইউগুলির জন্য: processor.max_cstates=1
  • CPU C6 অবস্থা পরীক্ষা এবং নিষ্ক্রিয় করতে cpupower কমান্ড ব্যবহার করুন: পরীক্ষা করুন: cpupower monitor অথবা cpupower idle-info
    C6 অক্ষম করুন: cpupower idle-set -d3 অথবা
    সি-স্টেটস অক্ষম করুন: cpupower idle-set -D0

নোট:

  1. সার্ভারে যদি Intel® 4th Gen Intel® Xeon® Scalable Processor(গুলি) থাকে, তাহলে CPU-তে C-states অক্ষম করুন। যখন Hyper Threading সক্রিয় বা অক্ষম করা হয়, তখন নিষ্ক্রিয় অবস্থা (-D0) অক্ষম করা কোরগুলিকে নিষ্ক্রিয় সময়ের মধ্যে কম-পাওয়ার অবস্থায় প্রবেশ করতে বাধা দেয় এবং CPU-এর নিষ্ক্রিয় এবং সক্রিয় অবস্থার মধ্যে স্থানান্তরের জন্য লেটেন্সি হ্রাস করে।
  2. Intel® 4th Gen Intel® Xeon® Scalable প্রসেসরের পাওয়ার ম্যানেজমেন্ট অত্যন্ত আক্রমণাত্মক। কোরগুলিকে কম-পাওয়ার অবস্থায় প্রবেশ করা থেকে বিরত রাখতে, ব্যবহৃত কোরের সংখ্যা কমিয়ে তাদের দীর্ঘ সময় ধরে জাগিয়ে রাখার চেষ্টা করুন (ethtool -L সম্মিলিত )। এছাড়াও, সেট irq অ্যাফিনিটি ব্যবহার করে (প্রায়শই -x লোকাল বা CPU কোরের তালিকা সহ) নির্দিষ্ট কোরের সাথে ইন্টারাপ্টগুলিকে আবদ্ধ করুন, এবং টাস্কসেট বা numactl সহ একই কোরগুলিতে ওয়ার্কলোড চালানো নিশ্চিত করুন। এটি কোরগুলিকে সক্রিয় রেখে এবং ইন্টারাপ্ট হ্যান্ডলিং অপ্টিমাইজ করে কর্মক্ষমতা উন্নত করে।

C6 সক্ষম করুন:
cpupower idle-set -d3 সম্পর্কে
সি-স্টেটস সক্ষম করুন:
cpupower idle-set -E সম্পর্কে

  • আরেকটি পদ্ধতি হল একটি পারফরম্যান্স প্রো সেট করার জন্য টিউনড টুল (অনেক লিনাক্স ডিস্ট্রিবিউশনের সাথে অন্তর্ভুক্ত) ব্যবহার করা।file. এই প্রোfileব্যবহারকারীরা বেশ কয়েকটি OS সেটিংস পরিবর্তন করে যা অনেক অ্যাপ্লিকেশনের কর্মক্ষমতাকে প্রভাবিত করতে পারে। দেখা গেছে যে নেটওয়ার্ক-থ্রুপুট প্রোfile বেশিরভাগ কাজের চাপের উন্নতি প্রদান করে।
    চেক করুন:
    টিউনড-এডএম সক্রিয়
    সেট:
    টিউনড-এডিএম প্রোfile নেটওয়ার্ক-থ্রুপুট
    উল্লেখ্য
    উপরের কমান্ডগুলির জন্য টিউন করা পরিষেবাটি চলমান থাকতে হবে। চেক/পুনরায় চালু করতে, টিউন করুন: systemctl অবস্থা টিউন করা হয়েছে systemctl পুনরায় চালু করা হয়েছে
    কার্নেল বুট লাইনে নিম্নলিখিতটি যোগ করে আপনি যেকোনো C-state এন্ট্রি বাতিল করতে পারেন:
    নিষ্ক্রিয়=পোল
  • সিস্টেমের BIOS পাওয়ার ম্যানেজমেন্ট সেটিংসের মাধ্যমে C-স্টেট সীমিত করুন, যার একটি পারফরম্যান্স প্রো থাকতে পারেfile উপলব্ধ
    পাওয়ার ম্যানেজমেন্ট সেটিংস পরীক্ষা বা সেট করতে turbostat বা x86_energy_perf_policy এর মতো সরঞ্জাম ব্যবহার করা যেতে পারে।

৫.২.২ PCIe পাওয়ার ম্যানেজমেন্ট
অ্যাক্টিভ-স্টেট পাওয়ার ম্যানেজমেন্ট (ASPM) PCIe লিঙ্কগুলি সক্রিয় ব্যবহারের সময় কম পাওয়ার স্টেট সক্ষম করে। এটি PCIe নেটওয়ার্ক ডিভাইসগুলিতে উচ্চতর ল্যাটেন্সি সৃষ্টি করতে পারে, তাই ইন্টেল ল্যাটেন্সি-সংবেদনশীল ওয়ার্কলোডের জন্য ASPM অক্ষম করার পরামর্শ দেয়। কার্নেল বুট লাইনে নিম্নলিখিতটি যোগ করে ASPM অক্ষম করুন: pcie_aspm=off
৫.২.৩ সিপিইউ ফ্রিকোয়েন্সি স্কেলিং
সিপিইউ ফ্রিকোয়েন্সি স্কেলিং (অথবা সিপিইউ স্পিড স্কেলিং) হল একটি লিনাক্স পাওয়ার ম্যানেজমেন্ট কৌশল যেখানে বিদ্যুৎ এবং তাপ সাশ্রয় করার জন্য সিস্টেম ক্লক স্পিড তাৎক্ষণিকভাবে সামঞ্জস্য করা হয়। সি-স্টেটের মতো, এটি নেটওয়ার্ক সংযোগগুলিতে অবাঞ্ছিত ল্যাটেন্সি সৃষ্টি করতে পারে।
cpupower টুলটি CPU কর্মক্ষমতা ডিফল্ট এবং সীমা পরীক্ষা এবং সংশোধন করতেও ব্যবহার করা যেতে পারে:

  • চেক করুন: cpupower মনিটর অথবা
  • সিপিইউগুলিকে পারফরম্যান্স মোডে সেট করুন: cpupower frequency-set -g পারফরম্যান্স

উল্লেখ্য
সিপিইউ ফ্রিকোয়েন্সি সীমা পরিবর্তন করলে অনেক কাজের চাপের উপর প্রভাব পড়তে পারে এবং সিপিইউ টার্বো মোডের মতো অন্যান্য বৈশিষ্ট্যগুলি অক্ষম হতে পারে।
CPU ফ্রিকোয়েন্সি স্কেলিং নিষ্ক্রিয় করতে, নিম্নলিখিত কমান্ডগুলি ব্যবহার করে CPU পাওয়ার পরিষেবা নিষ্ক্রিয় করুন:
systemctl cpupower.service বন্ধ করুন
systemctl cpupower.service নিষ্ক্রিয় করুন
৫.২.৪ অতিরিক্ত বিদ্যুৎ ব্যবস্থাপনা নির্দেশিকা
এই উচ্চ-স্তরের ওভারে অতিরিক্ত বিশদ বিবরণ প্রদান করা হয়েছেview তৃতীয় প্রজন্মের Intel® Xeon® স্কেলেবল প্রসেসরের অনেক পাওয়ার ম্যানেজমেন্ট বৈশিষ্ট্যের পাশাপাশি প্ল্যাটফর্ম স্তরে এই বৈশিষ্ট্যগুলিকে কীভাবে একীভূত করা যেতে পারে তার নির্দেশিকা: https://networkbuilders.intel.com/solutionslibrary/power-management-technologyoverview-technology-guide
৫.৩ ইন্টেল® টার্বো বুস্ট
ইন্টেল® টার্বো বুস্ট প্রয়োজনে প্রসেসরকে দ্রুততর করে তোলে কিন্তু অতিরিক্ত শক্তি খরচ করতে পারে। টার্বো বুস্ট বন্ধ করলে প্রসেসর স্থির গতিতে থাকে, যা আপনাকে নির্দিষ্ট কাজের চাপের জন্য একটি সামঞ্জস্যপূর্ণ কর্মক্ষমতা স্তর প্রদান করে।
৫.৪ ফায়ারওয়াল
ফায়ারওয়ালগুলি কর্মক্ষমতাকে প্রভাবিত করতে পারে, বিশেষ করে ল্যাটেন্সি কর্মক্ষমতাকে।
প্রয়োজন না হলে iptables/firewalld অক্ষম করুন।
5.5 অ্যাপ্লিকেশন সেটিংস
প্রায়শই একটি একক থ্রেড (যা একটি একক নেটওয়ার্ক কিউয়ের সাথে মিলে যায়) সর্বাধিক ব্যান্ডউইথ অর্জনের জন্য যথেষ্ট নয়। কিছু প্ল্যাটফর্ম আর্কিটেকচার, যেমন AMD, ইন্টেল-ভিত্তিক প্রসেসরের প্ল্যাটফর্মের তুলনায় একটি একক থ্রেড দিয়ে বেশি Rx প্যাকেট ফেলে দেয়।
নেটওয়ার্ক ডিভাইসে স্থানীয়ভাবে NUMA নোড বা CPU কোরে অ্যাপ্লিকেশন পিন করার জন্য টাস্কসেট বা numactl এর মতো সরঞ্জামগুলি ব্যবহার করার কথা বিবেচনা করুন। স্টোরেজ I/O এর মতো কিছু কাজের চাপের জন্য, অ্যাপ্লিকেশনটিকে একটি অ-স্থানীয় নোডে স্থানান্তর করা সুবিধা প্রদান করে।
সম্ভব হলে আপনার অ্যাপ্লিকেশনে ব্যবহৃত থ্রেডের সংখ্যা বাড়ানোর চেষ্টা করুন।
৫.৬ কার্নেল সংস্করণ
বেশিরভাগ আধুনিক ইন-বক্স কার্নেলগুলি কার্যক্ষমতার জন্য যথেষ্ট ভালোভাবে অপ্টিমাইজ করা হয়েছে, তবে আপনার ব্যবহারের ক্ষেত্রে নির্ভর করে, কার্নেল আপডেট করলে কর্মক্ষমতা উন্নত হতে পারে। সোর্সটি ডাউনলোড করলে কার্নেল তৈরির আগে কিছু বৈশিষ্ট্য সক্রিয়/অক্ষম করা সম্ভব হয়।
৫.৭ অপারেটিং সিস্টেম/কার্নেল সেটিংস
সাধারণ অপারেটিং সিস্টেম টিউনিং সম্পর্কে আরও তথ্যের জন্য অপারেটিং সিস্টেম টিউনিং গাইড, যেমন Red Hat Enterprise Linux নেটওয়ার্ক পারফরম্যান্স টিউনিং গাইড দেখুন।
টিউন করার জন্য কিছু সাধারণ প্যারামিটার নিম্নলিখিত টেবিলে তালিকাভুক্ত করা হয়েছে। মনে রাখবেন যে এগুলি শুধুমাত্র প্রস্তাবিত সূচনা পয়েন্ট, এবং ডিফল্ট থেকে এগুলি পরিবর্তন করলে সিস্টেমে ব্যবহৃত রিসোর্সগুলি বৃদ্ধি পেতে পারে। যদিও মানগুলি বৃদ্ধি করলে কর্মক্ষমতা উন্নত হতে পারে, তবে প্রদত্ত সিস্টেম, কাজের চাপ এবং ট্র্যাফিকের ধরণের জন্য কোনটি সবচেয়ে ভালো কাজ করে তা নির্ধারণ করার জন্য বিভিন্ন মান নিয়ে পরীক্ষা-নিরীক্ষা করা প্রয়োজন।
কার্নেল প্যারামিটারগুলি লিনাক্সে sysctl ইউটিলিটি ব্যবহার করে কনফিগার করা যায় যেমনটি নীচে নির্দেশিত।
প্রতি view সিস্টেমে rmem এবং wmem এর ডিফল্ট মান:
sysctl net.core.rmem_default সম্পর্কে
sysctl net.core.wmem_default
মানগুলি সর্বোচ্চ (১৬ মেগাবাইট) এ সেট করুন:
sysctl -w net.core.rmem_max=16777216
sysctl -w net.core.wmem_max=16777216
সকেট বাফারের আকার, যা রিসিভ বাফার (rmem) এবং ট্রান্সমিট বাফার (wmem) নামেও পরিচিত, হল সিস্টেম প্যারামিটার যা ইনকামিং এবং আউটগোয়িং নেটওয়ার্ক ট্র্যাফিকের জন্য সংরক্ষিত মেমোরির পরিমাণ নির্দিষ্ট করে।
-w আর্গুমেন্ট ছাড়া sysctl চালানো হলে প্যারামিটারটি তার বর্তমান সেটিং সহ তালিকাভুক্ত হয়।

স্ট্যাক সেটিং বর্ণনা
নেট.কোর.আরএমইএম_ডিফল্ট ডিফল্ট রিসিভ উইন্ডোর আকার
নেট.কোর.ডব্লিউএমইএম_ডিফল্ট ডিফল্ট ট্রান্সমিট উইন্ডোর আকার
নেট.কোর.আরএমইএম_ম্যাক্স সর্বাধিক রিসিভ উইন্ডোর আকার
নেট.কোর.ডব্লিউএমইএম_ম্যাক্স সর্বোচ্চ ট্রান্সমিট উইন্ডোর আকার
নেট.কোর.অপ্টমেম_ম্যাক্স সর্বাধিক বিকল্প মেমরি বাফার
নেট.কোর.নেটডেভ_ম্যাক্স_ব্যাকলগ কার্নেল ড্রপ শুরু হওয়ার আগে প্রক্রিয়াজাত না করা প্যাকেটের ব্যাকলগ
নেট.আইপিভি৪.টিসিপি_আরএমইএম TCP রিড বাফারের জন্য মেমরি রিজার্ভার
নেট.আইপিভি৪.টিসিপি_ডব্লিউএমইএম TCP সেন্ড বাফারের জন্য মেমরি রিজার্ভার

কার্নেল, নেটওয়ার্ক স্ট্যাক, মেমোরি হ্যান্ডলার, সিপিইউ স্পিড এবং পাওয়ার ম্যানেজমেন্ট প্যারামিটারগুলি নেটওয়ার্ক কর্মক্ষমতার উপর বড় প্রভাব ফেলতে পারে। একটি সাধারণ সুপারিশ হল নেটওয়ার্ক থ্রুপুট প্রো-তে প্রয়োগ করা।file টিউনড কমান্ড ব্যবহার করে। এটি নেটওয়ার্কিং অ্যাপ্লিকেশনগুলিকে অগ্রাধিকার প্রদানের জন্য কয়েকটি অপারেটিং সিস্টেম সেটিংস পরিবর্তন করে।
চেক করুন:
টিউনড-এডএম সক্রিয়
সেট:
টিউনড-এডিএম প্রোfile নেটওয়ার্ক-থ্রুপুট
৫.৮ নেটওয়ার্ক ডিভাইস ব্যাকলগ
এই বৈশিষ্ট্যটি ইনকামিং ট্র্যাফিক কার্যকরভাবে পরিচালনা করে, প্যাকেট লস কমায়, ল্যাটেন্সি কমায় এবং থ্রুপুট বৃদ্ধি করে নেটওয়ার্ক কর্মক্ষমতা উন্নত করতে সাহায্য করে। এর ফলে ব্যবহারকারীর অভিজ্ঞতা আরও ভালো হয় এবং সিস্টেমের প্রতিক্রিয়া দ্রুত হয়।
ডিফল্টরূপে, এটি বেশিরভাগ লিনাক্স অপারেটিং সিস্টেমে সক্রিয় থাকে। ডিফল্ট মান পরীক্ষা করতে:
sysctl net.core.netdev_max_backlog
netdev_max_backlog এর সর্বোচ্চ মান কার্নেল সংস্করণ, হার্ডওয়্যার, মেমোরি এবং কাজের চাপের মতো বিষয়গুলির উপর নির্ভর করে পরিবর্তিত হতে পারে। অনেক ক্ষেত্রে, 8192 কে একটি ভাল মান হিসাবে দেখা হয়। sysctl -w net.core.netdev_max_backlog=8192
৫.৯ প্ল্যাটফর্ম-নির্দিষ্ট কনফিগারেশন এবং টিউনিং
৫.৯.১ চতুর্থ প্রজন্মের ইন্টেল® জিওন® স্কেলেবল প্রসেসর

Intel® 4th Generation Intel® Xeon® Scalable প্রসেসরের পাওয়ার ম্যানেজমেন্ট 3rd Generation Intel® Xeon® Scalable প্রসেসরের তুলনায় অত্যন্ত আক্রমণাত্মক। কোরগুলিকে কম-পাওয়ার অবস্থায় প্রবেশ করা থেকে বিরত রাখতে, ব্যবহৃত কোরের সংখ্যা কমিয়ে তাদের দীর্ঘ সময় ধরে জাগিয়ে রাখার চেষ্টা করুন।
সর্বোচ্চ পারফরম্যান্সের জন্য প্রস্তাবিত বায়োস সেটিংস

  1. CPU-তে হাইপার-থ্রেডিং সক্রিয়/অক্ষম (ওয়ার্কলোডের প্রয়োজনীয়তা এবং কর্মক্ষমতা লক্ষ্যের উপর ভিত্তি করে)।
  2. সিস্টেম প্রো সেট করুনfile সর্বোচ্চ কর্মক্ষমতার জন্য কর্মক্ষমতায়।
    উল্লেখ্য
    এর ফলে বিদ্যুৎ খরচ বেশি হয়
  3. পাওয়ার দক্ষতার চেয়ে সর্বাধিক CPU কর্মক্ষমতাকে অগ্রাধিকার দিতে CPU পাওয়ার ম্যানেজমেন্টকে সর্বোচ্চ কর্মক্ষমতায় সেট করুন।
  4. টার্বো বুস্ট সক্ষম করুন। সিস্টেম BIOS সেটিংসে টার্বো বুস্ট অক্ষম করলে সাধারণত CPU তার ঘড়ির গতি তার বেস ফ্রিকোয়েন্সির বাইরে গতিশীলভাবে বৃদ্ধি করতে বাধা দেয়।
  5. উল্লেখ্য
    টার্বো বুস্ট নিষ্ক্রিয় করা কিছু ব্যবহারের ক্ষেত্রে উপযুক্ত হতে পারে যেখানে সর্বোচ্চ কর্মক্ষমতার চেয়ে সামঞ্জস্যপূর্ণ কর্মক্ষমতা, শক্তি দক্ষতা, বা তাপ ব্যবস্থাপনাকে অগ্রাধিকার দেওয়া হয়।
  6. যদি সিস্টেমটি ভার্চুয়ালাইজেশন প্রযুক্তি ব্যবহার না করে, তাহলে সিঙ্গেল রুট I/O ভার্চুয়ালাইজেশন (SR-IOV) বৈশিষ্ট্যটি বন্ধ করুন।
  7. সিপিইউকে সক্রিয় থাকতে এবং আরও গভীর নিষ্ক্রিয় অবস্থায় প্রবেশ করা থেকে বিরত রাখতে সি-স্টেটগুলি অক্ষম করুন।
  8. CPU যাতে সক্রিয় থাকে এবং C1E নিষ্ক্রিয় অবস্থায় প্রবেশ না করে তা নিশ্চিত করতে C1E নিষ্ক্রিয় করুন।
  9. সিস্টেমটিকে সর্বোচ্চ উপলব্ধ ফ্রিকোয়েন্সিতে কাজ করার নির্দেশ দিতে আনকোর ফ্রিকোয়েন্সি সর্বোচ্চে সেট করুন।
  10. ডেল প্ল্যাটফর্মগুলিতে, CPU কোরের একটি স্পষ্ট এবং অনুমানযোগ্য ম্যাপিং প্রদানের জন্য মাল্টিপল APIC ডেসক্রিপশন টেবিল (MADT) কোর এমুলেশনকে লিনিয়ার (অথবা BIOS এর উপর নির্ভর করে রাউন্ড-রবিন) এ সেট করুন।

অপ্টিমাইজড পারফরম্যান্সের জন্য প্রস্তাবিত OS লেভেল টিউনিং

  1. CPU ফ্রিকোয়েন্সি স্কেলিং গভর্নরকে পারফরম্যান্সে সেট করুন। cpupower frequency-set -g performance cpupower frequency-info
  2. সি-স্টেটস অক্ষম করুন। 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 অ্যাডাপটিভ-আরএক্স অফ অ্যাডাপটিভ-টিএক্স অফ আরএক্স-ইউসেকস-হাই ৫০ আরএক্স-ইউসেকস ৫০ টিএক্স-ইউসেকস ৫০
    কাজের চাপের জন্য সর্বোত্তম মান খুঁজে পেতে ট্রান্সমিট/রিসিভ/হাই-প্রোরিটি কোলেসিং টাইমার উচ্চতর (80/100/150/200) বা নিম্নতর (25/20/10/5) সামঞ্জস্য করার চেষ্টা করুন।
  3. Rx/Tx রিং এর মাপ সেট করুন। ethtool -G আরএক্স ৪০৯৬ টিএক্স ৪০৯৬
    উল্লেখ্য
    যদি আপনি ethtool -S| grep drop সহ Rx প্যাকেট ড্রপ দেখতে পান, তাহলে রিং সাইজ <4096 এ কমিয়ে দেখুন। যেখানে প্যাকেট ড্রপ করা হয় না সেখানে কাজের চাপের জন্য সর্বোত্তম মান খুঁজে বের করার চেষ্টা করুন।
  4. IRQ অ্যাফিনিটি সেট করুন। NIC-তে স্থানীয় কোর ব্যবহার করুন, অথবা নির্দিষ্ট কোর ম্যাপিং (যেখানে # কোর পৃষ্ঠা 1-এ 26-এ সেট করা সারির সংখ্যার সমান)। systemctl স্টপ irqbalance set_irq_affinity -X স্থানীয় অথবা set_irq_affinity -X

৫.৯.২ এএমডি ইপিওয়াইসি
AMD EPYC প্রসেসর হল সার্ভার এবং ডেটা সেন্টারের জন্য তৈরি শক্তিশালী CPU, যা AMD এর Zen আর্কিটেকচারের উপর নির্মিত। নিচের সেটিংসগুলি AMD এর চতুর্থ প্রজন্মের EPYC সিরিজের।
সর্বোচ্চ পারফরম্যান্সের জন্য প্রস্তাবিত BIOS সেটিংস

  1. ব্যবহারকারীদের CPU কর্মক্ষমতা, বিদ্যুৎ খরচ এবং অন্যান্য সেটিংস সামঞ্জস্য করার অনুমতি দেওয়ার জন্য কাস্টম মোড সক্ষম করুন। এটি কর্মক্ষমতা এবং শক্তি দক্ষতার মধ্যে সর্বোত্তম ভারসাম্যের জন্য সিস্টেমকে সূক্ষ্ম-টিউন করতে সহায়তা করে।
  2. কোর পারফরম্যান্স বুস্ট সক্ষম করুন যাতে সিপিইউ স্বয়ংক্রিয়ভাবে আরও নিবিড় কাজ পরিচালনা করার জন্য তার গতি বাড়াতে পারে, সামগ্রিক কর্মক্ষমতা উন্নত করে।
  3. CPU-কে আরও গভীর শক্তি সঞ্চয়কারী অবস্থায় প্রবেশ করতে বাধা দিতে, যা C-স্টেট নামে পরিচিত, যা প্রতিক্রিয়াশীলতা বজায় রাখতে পারে, বিশ্বব্যাপী C-স্টেট নিয়ন্ত্রণ অক্ষম করুন।
    উল্লেখ্য
    সি-স্টেটগুলি অক্ষম করলে অতিরিক্ত বিদ্যুৎ খরচ হতে পারে এবং তাপীয় তাপমাত্রা বৃদ্ধি পেতে পারে। কাজের চাপের জন্য উভয়ই পর্যবেক্ষণ করুন।
  4. কাজের চাপের প্রয়োজনীয়তা এবং কর্মক্ষমতা লক্ষ্যের উপর ভিত্তি করে, CPU-তে Simultaneous Multithreading (SMT) সক্ষম/অক্ষম করুন। SMT হল Intel CPU-তে Hyper Threading-এর সমতুল্য।
    উল্লেখ্য
    অপ্টিমাইজড পারফরম্যান্সের জন্য, প্রস্তাবিত OS এবং অ্যাডাপ্টার লেভেল টিউনিংয়ের জন্য পৃষ্ঠা ১৩-তে টিউনিং i40e ড্রাইভার সেটিংস এবং পৃষ্ঠা ১৯-তে প্ল্যাটফর্ম টিউনিং (i13e অ-নির্দিষ্ট) দেখুন।

অ্যাডাপ্টার বন্ধন

লিনাক্স বন্ধন একটি শক্তিশালী বৈশিষ্ট্য যা সার্ভার পরিবেশে নেটওয়ার্ক কর্মক্ষমতা, রিডানডেন্সি এবং ফল্ট টলারেন্স উল্লেখযোগ্যভাবে উন্নত করতে পারে। তবে, এটি মনে রাখা গুরুত্বপূর্ণ যে এটি সঠিকভাবে কাজ করার জন্য সামঞ্জস্যপূর্ণ নেটওয়ার্ক হার্ডওয়্যার এবং সার্ভার এবং সুইচ উভয়েরই সঠিক কনফিগারেশন প্রয়োজন।
লিনাক্সের বন্ডিং ড্রাইভার আপনাকে একাধিক ফিজিক্যাল নেটওয়ার্ক ইন্টারফেসকে একটি বন্ডেড ইন্টারফেসে একত্রিত করতে দেয়। এই বন্ডেড ইন্টারফেসটি অপারেটিং সিস্টেম এবং অ্যাপ্লিকেশনগুলিতে একটি একক ভার্চুয়াল নেটওয়ার্ক ইন্টারফেস হিসাবে উপস্থিত হয়।
উল্লেখ্য
বন্ডটি একটি লজিক্যাল ইন্টারফেস, তাই বন্ড ইন্টারফেসে সরাসরি CPU অ্যাফিনিটি সেট করা সম্ভব নয় (উদাহরণস্বরূপample, bond0)। অর্থাৎ, ইন্টারাপ্ট হ্যান্ডলিং বা CPU অ্যাফিনিটির উপর এর সরাসরি কোন নিয়ন্ত্রণ নেই। CPU অ্যাফিনিটি বন্ডের অংশ অন্তর্নিহিত ইন্টারফেসের জন্য কনফিগার করা আবশ্যক।
বন্ধন বিভিন্ন ধরণের ক্রিয়াকলাপ প্রদান করে, প্রতিটির নিজস্ব বৈশিষ্ট্য রয়েছে।

মোড  টাইপ
0 রাউন্ড রবিন
1 সক্রিয় ব্যাকআপ
2 XOR
3 সম্প্রচার
4 LACP
5 লোড ব্যালেন্স প্রেরণ করুন
6 অভিযোজিত লোড ব্যালেন্স

লিনাক্সে বন্ধন তৈরি করার বিভিন্ন পদ্ধতি রয়েছে। সবচেয়ে সাধারণ পদ্ধতিগুলির মধ্যে একটি হল নেটওয়ার্ক কনফিগারেশন ব্যবহার করা। files (উদাহরণস্বরূপample, /etc/network/ ইন্টারফেস অথবা /etc/sysconfig/network-scripts/ifcfg-bondX)।
নেটওয়ার্ক কনফিগারেশন ব্যবহার করে কনফিগারেশন Files
নিম্নলিখিত ধাপগুলি নেটওয়ার্ক কনফিগারেশনের মাধ্যমে বন্ধন তৈরি করে files.

  1. বন্ধনের জন্য দুটি বা ততোধিক NIC পোর্ট নির্বাচন করুন (উদাহরণস্বরূপamp(le, ethX এবং ethY)
  2. NIC কনফিগারেশন খুলুন Fileপ্রয়োজনীয় NIC ইন্টারফেসের জন্য /etc/sysconfig/network-scripts/ এর অধীনে s (উদাহরণস্বরূপample, vi ifcfg-ethX এবং vi ifcfg-ethY) এবং নিম্নলিখিত লেখাটি যুক্ত করুন:
    MASTER=bondN [দ্রষ্টব্য: N হল বন্ড নম্বর উল্লেখ করার জন্য একটি পূর্ণসংখ্যা।] SLAVE=yes
  3. একটি বন্ড নেটওয়ার্ক স্ক্রিপ্ট তৈরি করুন 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 হলে প্রয়োজনীয়] BROADCAST=200.20.2.255 [BOOTPROTO=none হলে প্রয়োজনীয়] BONDING_OPTS=”mode=1 miimon=100″
    উল্লেখ্য
    প্রয়োজনের উপর ভিত্তি করে মোড 0 থেকে 6 পর্যন্ত যেকোনো পূর্ণসংখ্যা হতে পারে।
  4. সার্ভিস নেটওয়ার্ক রিস্টার্ট অথবা systemctl রিস্টার্ট ব্যবহার করে নেটওয়ার্ক সার্ভিস রিস্টার্ট করুন NetworkManager.service

কর্মক্ষমতা সমস্যা সমাধান

৭.১ সিপিইউ ব্যবহার
কাজের চাপ চলাকালীন প্রতি কোরে CPU ব্যবহার পরীক্ষা করুন।
মনে রাখবেন যে, প্রতি কোরের ব্যবহার সামগ্রিক CPU ব্যবহারের চেয়ে কর্মক্ষমতার সাথে বেশি প্রাসঙ্গিক কারণ এটি প্রতি নেটওয়ার্ক কিউতে CPU ব্যবহারের ধারণা প্রদান করে। যদি আপনার নেটওয়ার্ক ট্র্যাফিক চলমান মাত্র কয়েকটি থ্রেড থাকে, তাহলে আপনার কেবল কয়েকটি কোর ব্যবহার করা হতে পারে। তবে, যদি সেই কোরগুলি 100% হয়, তাহলে আপনার নেটওয়ার্ক থ্রুপুট সম্ভবত CPU ব্যবহারের দ্বারা সীমিত হবে এবং নিম্নলিখিতগুলি সম্পাদন করার সময় এসেছে:

  1. ইন্টারাপ্ট মডারেশনে বিস্তারিতভাবে বর্ণনা করা হয়েছে, IRQ মডারেশন/রিং সাইজ টিউন করুন।
  2. CPU লোড আরও বেশি কোরের উপর ছড়িয়ে দেওয়ার জন্য অ্যাপ্লিকেশন থ্রেডের সংখ্যা বাড়ান। যদি সমস্ত কোর 100% এ চলমান থাকে তবে আপনার অ্যাপ্লিকেশনটি নেটওয়ার্ক আবদ্ধ না হয়ে CPU আবদ্ধ হতে পারে।

সাধারণত উপলব্ধ সরঞ্জাম:

  • শীর্ষ
    — CPU গুলির তালিকা প্রসারিত করতে এবং কোনগুলি ব্যবহার করা হচ্ছে তা পরীক্ষা করতে 1 টিপুন।
    — ব্যবহারের মাত্রা লক্ষ্য করুন।
    — লক্ষ্য করুন কোন প্রক্রিয়াগুলি সবচেয়ে সক্রিয় (তালিকার শীর্ষে) হিসাবে তালিকাভুক্ত।
  • এমপিস্ট্যাট
    নিম্নলিখিত প্রাক্তনample কমান্ড লাইনটি Red Hat Enterprise Linux 7.x-এ পরীক্ষা করা হয়েছিল।
    এটি প্রতি কোরে CPU ব্যবহার প্রদর্শন করে (মোট শতাংশ নিষ্ক্রিয়তা খুঁজে বের করে এবং 100 থেকে বিয়োগ করে) এবং 80% এর উপরে মানগুলিকে লাল রঙে হাইলাইট করে। mpstat -P ALL 1 1 | grep -v গড় | tail -n +5 | head -n -1 | awk '{ print (100-$13)}' | egrep -color=always '[^\.][8-9][0-9][\.]?.*|^[8-9][0-9][\.]?.*| 100|' | কলাম
  • পারফ টপ কোথায় চক্র ব্যয় করা হচ্ছে তা দেখুন।

৭.২ i7.2e কাউন্টার
i40e ড্রাইভারটি ethtool -S ethX কমান্ডের মাধ্যমে ইন্টারফেস ডিবাগ এবং পর্যবেক্ষণের জন্য কাউন্টারগুলির একটি দীর্ঘ তালিকা প্রদান করে। একটি ওয়ার্কলোড চলমান থাকাকালীন আউটপুট দেখা এবং/অথবা ওয়ার্কলোড চালানোর আগে এবং পরে কাউন্টারের মান তুলনা করা সহায়ক হতে পারে।

  • i40e কাউন্টারের সম্পূর্ণ ডাম্প পেতে: ethtool -S ethX
  • শুধু শূন্য-বহির্ভূত কাউন্টারগুলি দেখার জন্য: watch -d (ethtool -S ethX) | egrep -v :\ 0 | column
    কিছু জিনিস যা খুঁজতে হবে:
  • rx_dropped মানে CPU বাফারগুলিকে যথেষ্ট দ্রুত পরিষেবা দিচ্ছে না।
  • port.rx_dropped মানে স্লট/মেমরি/সিস্টেমে কিছু যথেষ্ট দ্রুত নেই।

৭.৩ নেটওয়ার্ক কাউন্টার
ওয়ার্কলোড চালানোর আগে/পরে netstat -s পরীক্ষা করুন।
নেটস্ট্যাট সিস্টেমের সমস্ত নেটওয়ার্ক ডিভাইস থেকে নেটওয়ার্ক তথ্য সংগ্রহ করে। অতএব, পরীক্ষার অধীনে থাকা নেটওয়ার্ক ব্যতীত অন্য নেটওয়ার্ক থেকে ফলাফল প্রভাবিত হতে পারে। নেটস্ট্যাট -s থেকে আউটপুট লিনাক্স অপারেটিং সিস্টেম বা কার্নেলের কর্মক্ষমতা সমস্যার একটি ভাল সূচক হতে পারে। সাধারণ অপারেটিং সিস্টেম টিউনিং সম্পর্কে আরও অন্তর্দৃষ্টির জন্য অপারেটিং সিস্টেম টিউনিং গাইড, যেমন Red Hat Enterprise Linux নেটওয়ার্ক পারফরম্যান্স টিউনিং গাইড দেখুন।
৭.৪ সিস্টেম লগ
ত্রুটি এবং সতর্কতার জন্য সিস্টেম লগ পরীক্ষা করুন (/var/log/messages, dmesg)।
৭.৫ ইন্টেল এসভিআর-ইনফো টুল
ইন্টেল একটি svr-info টুল প্রদান করে (দেখুন https://github.com/intel/svr-info) লিনাক্সের জন্য যা সার্ভার থেকে প্রাসঙ্গিক হার্ডওয়্যার এবং সফ্টওয়্যারের বিবরণ ক্যাপচার করে। svr-info আউটপুট সিস্টেমের বাধা বা সেটিংস/টিউনিং সনাক্ত করতে অত্যন্ত সহায়ক হতে পারে যা কাজের চাপের জন্য অপ্টিমাইজ করা হয়নি। ইথারনেট-সম্পর্কিত কর্মক্ষমতা সমস্যার জন্য Intel এর সাথে একটি সাপোর্ট কেস খোলার সময়, svr-info আউটপুট অন্তর্ভুক্ত করতে ভুলবেন না (টেক্সট file) পরীক্ষার কনফিগারেশনে প্রতিটি লিনাক্স সার্ভারের জন্য।

  1. svr-info ডাউনলোড এবং ইনস্টল করুন:
    উইজেট -qO- https://github.com/intel/svr-info/releases/latest/download/svrinfo.tgz| tar xvz সিডি svr-তথ্য
    ./svr-তথ্য
    > হোস্টনেম.টেক্সট
  2. আউটপুট সংগ্রহ করুন:
    ./svr-info > হোস্টনেম.txt
  3. একটি টেক্সট (.txt) সংযুক্ত করুন file বিশ্লেষণের জন্য আপনার ইন্টেল সাপোর্ট কেসে প্রতিটি সার্ভারের জন্য।

সাধারণ কর্মক্ষমতা পরিস্থিতির জন্য সুপারিশ

৮.১ আইপি ফরোয়ার্ডিং

  • কার্নেল আপডেট করুন।
    নিরাপত্তার কারণে রাউটিং ক্যাশে অপসারণ থেকে শুরু করে রাউটিং কোডে কার্নেল পরিবর্তনের কারণে সাম্প্রতিক কিছু ইন-ডিস্ট্রো কার্নেলের রাউটিং কর্মক্ষমতা হ্রাস পেয়েছে। সাম্প্রতিক আউট-অফ-ডিস্ট্রো কার্নেলগুলিতে এমন প্যাচ থাকা উচিত যা এই পরিবর্তনগুলির কর্মক্ষমতা প্রভাবকে হ্রাস করে এবং উন্নত কর্মক্ষমতা প্রদান করতে পারে।
  • হাইপার-থ্রেডিং (লজিক্যাল কোর) অক্ষম করুন।
  • কার্নেল বুট প্যারামিটারগুলি সম্পাদনা করুন।
    — ভার্চুয়ালাইজেশনের জন্য প্রয়োজন না হলে কার্নেল বুট লাইন থেকে iommu কে জোর করে বন্ধ করুন (intel_iommu=off অথবা iommu=off)
    — পাওয়ার ম্যানেজমেন্ট বন্ধ করুন: processor.max_cstates=1 idle=poll pcie_aspm=off
  • স্থানীয় সকেটে কোরের সংখ্যার সমান সারির সংখ্যা সীমিত করুন (এই উদাহরণে ১২টি)ampলে)। ethtool -L ethX মিলিত 12
  • শুধুমাত্র স্থানীয় সকেটে পিন ইন্টারাপ্ট। set_irq_affinity -X স্থানীয় ethX OR 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 adaptiv-rx off adaptiv-tx off ethtool -C ethX rx-usecs 64 tx-usecs 64

উল্লেখ্য
প্রসেসরের ধরণ এবং কাজের চাপের উপর নির্ভর করে, উন্নত কর্মক্ষমতা (অথবা কম ফ্রেম ক্ষতি) এর জন্য RX এবং TX এর কোলেসিং প্যারামিটারগুলি সামঞ্জস্য করা যেতে পারে।

  • ফায়ারওয়াল অক্ষম করুন। sudo systemctl ফায়ারওয়াল্ড অক্ষম করুন sudo systemctl ফায়ারওয়াল্ড বন্ধ করুন
  • আইপি ফরওয়ার্ডিং সক্ষম করুন। sysctl -w net.ipv4.ip_forward=1
  • রিসিভ এবং সেন্ড সকেট বাফার আকারের জন্য সর্বাধিক মান কনফিগার করুন। sysctl -w net.core.rmem_max=16777216 sysctl -w net.core.wmem_max=16777216

উল্লেখ্য
কাজের চাপ বা প্রয়োজনের উপর নির্ভর করে, এই মানগুলি ডিফল্ট থেকে পরিবর্তন করা যেতে পারে।
৮.২ কম বিলম্ব

  • হাইপার-থ্রেডিং (লজিক্যাল কোর) বন্ধ করুন।
  • নিশ্চিত করুন যে নেটওয়ার্ক ডিভাইসটি নুমা কোর 0-তে স্থানীয়।
  • টাস্কসেট -c 0 ব্যবহার করে বেঞ্চমার্কটি কোর 0 তে পিন করুন।
  • systemctl ব্যবহার করে irqbalance বন্ধ করুন irqbalance বন্ধ করুন অথবা systemctl irqbalance নিষ্ক্রিয় করুন
  • কোর জুড়ে ছড়িয়ে দেওয়ার জন্য অ্যাফিনিটি স্ক্রিপ্টটি চালান। স্থানীয় অথবা সমস্ত চেষ্টা করুন।
  • ইন্টারাপ্ট মডারেশন বন্ধ করুন। ethtool -C ethX rx-usecs 0 tx-usecs 0 adaptiv-rx off adaptiv-tx off rxusecs- high 0
  • স্থানীয় সকেটে কোরের সংখ্যার সমান সারির সংখ্যা সীমাবদ্ধ করুন (এই উদাহরণে 32টি)ampলে)। ethtool -L ethX মিলিত 32
  • শুধুমাত্র স্থানীয় সকেটে পিন ইন্টারাপ্ট (i40e ড্রাইভার সোর্স সহ প্যাকেজ করা স্ক্রিপ্ট)। set_irq_affinity -X স্থানীয় 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

দলিল/সম্পদ

ইন্টেল ইথারনেট ৭০০ সিরিজ লিনাক্স পারফরম্যান্স টিউনিং [পিডিএফ] ব্যবহারকারীর নির্দেশিকা
৩৩৪০১৯, ইথারনেট ৭০০ সিরিজ লিনাক্স পারফরম্যান্স টিউনিং, ইথারনেট ৭০০ সিরিজ, লিনাক্স পারফরম্যান্স টিউনিং, পারফরম্যান্স টিউনিং, টিউনিং

তথ্যসূত্র

একটি মন্তব্য করুন

আপনার ইমেল ঠিকানা প্রকাশ করা হবে না. প্রয়োজনীয় ক্ষেত্রগুলি চিহ্নিত করা হয়েছে *