Intel ® Ethernet 700 სერია
Linux-ის შესრულების ტუნინგ სახელმძღვანელო
NEX Cloud Networking Group (NCNG)
რევ 1.2
2024 წლის დეკემბერი
გადასინჯვის ისტორია
რევიზია | თარიღი | კომენტარები |
1.2 | 2024 წლის დეკემბერი | · დამატებულია ენერგიის მართვის დამატებითი სახელმძღვანელო. · დამატებულია Intel* Turbo Boost. · დამატებულია ქსელური მოწყობილობის ბექლოგი. · დამატებულია პლატფორმის სპეციფიკური კონფიგურაციები და ტუნინგები. · დამატებულია მე-4 თაობის Intel* %eon* მასშტაბირებადი პროცესორები. · დამატებულია AMD EPYC. · განახლებული შემოწმების სისტემის აპარატურის შესაძლებლობები. · განახლებულია iPerf2. · განახლებულია iPerf3. · განახლებული Tx/Rx რიგები. · განახლებულია შეფერხების მოდერაცია. · განახლებული ბეჭდის ზომა. · განახლებული პლატფორმის Tuning (i40e არასპეციფიკური). · განახლებული BIOS პარამეტრები. · განახლებული C-State Control. · განახლებული CPU სიხშირის სკალირება. · განახლებული აპლიკაციის პარამეტრები. · განახლებული ოპერაციული სისტემა/კერნელი პარამეტრები. · განახლებული IP გადამისამართება. · განახლებული დაბალი შეყოვნება. |
2023 წლის აგვისტო | ცვლილებები ამ დოკუმენტში მოიცავს: · დამატებულია დაკავშირებული ცნობები. · დამატებულია იმის უზრუნველყოფა, რომ DDP პაკეტი სწორად იტვირთება. · დამატებულია iPerf2. · დამატებულია iPerf3. · დამატებულია netperf. · განახლებულია IRQ Affinity. · დამატებულია Tx/Rx რიგები. · განახლებული ბეჭდის ზომა. · დამატებულია Jumbo Frames. · დამატებულია ადაპტერის შემაკავშირებელი. · დამატებულია Intel svr-info Tool. |
|
1.0 | 2016 წლის მარტი | საწყისი გამოშვება (Intel Public). |
შესავალი
ეს გზამკვლევი გამიზნულია, რათა უზრუნველყოს ინსტრუქციები ტუნინგ გარემოში ქსელის ოპტიმალური მუშაობისთვის Intel ® Ethernet 700 სერიის NIC-ების გამოყენებით Linux გარემოში. ის ყურადღებას ამახვილებს აპარატურაზე, დრაივერზე და ოპერაციული სისტემის პირობებზე და პარამეტრებზე, რამაც შესაძლოა გააუმჯობესოს ქსელის მუშაობა. უნდა აღინიშნოს, რომ ქსელის მუშაობაზე შეიძლება გავლენა იქონიოს გარე გავლენის ნებისმიერმა რაოდენობამ, მათგან მხოლოდ ყველაზე გავრცელებული და დრამატული არის აღწერილი ამ სახელმძღვანელოში.
1.1 დაკავშირებული ლიტერატურა
- მომხმარებლის სახელმძღვანელო ყველა Intel ® Ethernet ადაპტერებისა და მოწყობილობებისთვის, Windows-ისა და Linux-ის მხარდაჭერით:
Intel ® Ethernet ადაპტერებისა და მოწყობილობების მომხმარებლის სახელმძღვანელო - Ტექნიკური მონაცემების ფურცელი:
Intel ® Ethernet Controller X710/XXV710/XL710 მონაცემთა ცხრილი - სრული SW ნაკრები Intel ® Ethernet-ის ყველა პროდუქტისთვის (ჩამოტვირთეთ ყველა დრაივერი, NVM, ხელსაწყოები და ა.შ.):
Intel ® Ethernet ადაპტერის სრული დრაივერის პაკეტი - NVM (არასტაბილური მეხსიერება) განახლების პაკეტი:
არასტაბილური მეხსიერების (NVM) განახლების პროგრამა Intel ® Ethernet ქსელის 700 სერიის ადაპტერისთვის - svr-info ინსტრუმენტი Linux-ისთვის, რომელიც იჭერს შესაბამის აპარატურულ და პროგრამულ დეტალებს სერვერიდან: https://github.com/intel/svr-info
- DDP ტექნოლოგიის სახელმძღვანელო:
Intel ® Ethernet 700 Series Dynamic Device Personalization (DDP) ტექნოლოგიის სახელმძღვანელო
საწყისი საკონტროლო სია
2.1 განაახლეთ დრაივერი/პროგრამული უზრუნველყოფის ვერსიები
შეამოწმეთ დრაივერის/პროგრამული უზრუნველყოფის ვერსიები ethtool -i ethx-ის გამოყენებით.
საჭიროებისამებრ განაახლეთ შემდეგი:
- განაახლეთ i40e დრაივერი
http://sourceforge.net/projects/e1000/files/i40e%20stable/ or https:// downloadcenter.intel.com/ download/24411/Network-Adapter-Driver-for-PCI-E-40- Gigabit-Network-Connections-under-Linux - განაახლეთ firmware
https: //downloadcenter.intel.com/download/24769/NVM-Update-Utility-for-Intel- Ethernet-ConvergedNetwork-Adapter-XL710-X710-Series
2.2 წაიკითხეთ README
შეამოწმეთ ცნობილი საკითხები და მიიღეთ უახლესი კონფიგურაციის ინსტრუქციები README-დან file შედის i40e წყაროს პაკეტში.
2.3 შეამოწმეთ, რომ თქვენი PCI Express (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 Ethernet-ზე, არის მინიმალური CPU და სისტემის მოთხოვნები. ზოგადად, თანამედროვე სერვერის კლასის პროცესორი და მეხსიერების ოპტიმალური კონფიგურაცია თქვენი პლატფორმისთვის საკმარისი უნდა იყოს, მაგრამ საჭიროებები განსხვავდება თქვენი დატვირთვის მიხედვით. მეხსიერების ყველა არხი უნდა იყოს შევსებული და მეხსიერების შესრულების რეჟიმი ჩართული უნდა იყოს BIOS-ში. გადაამოწმეთ, რომ თქვენს პროცესორს და მეხსიერების კონფიგურაციას შეუძლია უზრუნველყოს ქსელის მუშაობის დონე, რომელიც გჭირდებათ თქვენი სამუშაო დატვირთვისთვის.
შენიშვნა
XL710 არის 40 GbE კონტროლერი. 2 x 40 GbE ადაპტერი, რომელიც იყენებს ამ კონტროლერს, არ არის გამიზნული იყოს 2 x 40 GbE, არამედ 1 x 40 GbE აქტიური სარეზერვო პორტით. როდესაც ცდილობთ გამოიყენოთ ხაზის სიჩქარის ტრაფიკი, რომელიც მოიცავს ორივე პორტს, შიდა გადამრთველი გაჯერებულია და ორ პორტს შორის კომბინირებული გამტარობა შემოიფარგლება მთლიანი SO Gbps-ით.
2.4.1 ბირთვის ჩატვირთვის პარამეტრები
თუ Intel® ვირტუალიზაციის ტექნოლოგია Directed I/O-სთვის (Intel® VT-d) ჩართულია BIOS-ში, Intel რეკომენდაციას იძლევა, რომ IOMMU იყოს გადასასვლელ რეჟიმში ჰოსტის ქსელის ოპტიმალური მუშაობისთვის. ეს გამორიცხავს DMA-ს ზედნადებს მასპინძელ ტრაფიკზე, ხოლო ვირტუალურ მანქანებს (VMs) საშუალებას აძლევს კვლავ გაატარონ Intel® VT-d-ის უპირატესობები. ეს მიიღწევა ბირთვის ჩატვირთვის პარამეტრებში შემდეგი ხაზის დამატებით: fommu-pt.
2.5 დარწმუნდით, რომ DDP პაკეტი სწორად იტვირთება
140ea და 140eb ბაზის დრაივერებს არ აქვთ დინამიური მოწყობილობის პერსონალიზაციის (DDP) პირდაპირი მხარდაჭერა. DDP 700 სერიის მოწყობილობებთან გამოსაყენებლად, DDP პროfile შეიძლება გამოყენებულ იქნას testpmd აპლიკაციით.
დეტალებისთვის DDP pro-ს შესახებfiles, და როგორ გამოვიყენოთ DDP პროfile 700 სერიის მოწყობილობებზე testpmd-ით, იხილეთ Intel® Ethernet 700 Series Dynamic Device Personalization (DDP) ტექნოლოგიის სახელმძღვანელო.
იმის შესამოწმებლად, არის თუ არა DDP პროfile წარმატებით ჩაიტვირთა:
testpmd> ddp მიიღეთ სია 0 Profile ნომერი არის: 1
შენიშვნა
თუ პროfile ნომერი არის 0, DDP პაკეტი არ არის ჩატვირთული. DDP პაკეტის ჩატვირთვის შეცდომის შემთხვევაში, მოწყობილობა ნაგულისხმევად გადადის უსაფრთხო რეჟიმში და შესრულების მრავალი ფუნქცია მიუწვდომელია. თუ DDP პაკეტის ჩატვირთვასთან დაკავშირებული შეცდომებია, ეს გამოიწვევს მუშაობის პრობლემებს. პრობლემების მოგვარების ნაბიჯებისთვის იხილეთ Inte/* Ethernet 700 Series Dynamic Device Personalization (DDP) ტექნოლოგიის სახელმძღვანელო.
საბაზისო შესრულების გაზომვები და დარეგულირების მეთოდოლოგია
3.1 ქსელის მუშაობის ინდიკატორები
ტიუნინგის ვარჯიშის დაწყებამდე მნიშვნელოვანია თქვენი ქსელის მუშაობის კარგი საბაზისო გაზომვა. როგორც წესი, თქვენი კონკრეტული აპლიკაციის/სამუშაო დატვირთვის მუშაობის საწყისი გაზომვის გარდა, კარგი იდეაა ასევე გამოიყენოთ ქსელის მუშაობის სტანდარტული საორიენტაციო ნიშანი, რათა დაადასტუროთ, რომ თქვენი ქსელის მოწყობილობა კარგ მდგომარეობაშია.
ერთი სისტემის ოპტიმიზაციისთვის, netperf ან iperf და NetPIPE არის ყველა მყარი opensource უფასო ინსტრუმენტები, რომლებიც საშუალებას გაძლევთ ხაზი გაუსვათ კავშირს და დაადგინოთ მუშაობის პრობლემები.
Netperf ძლიერია როგორც გამტარუნარიანობის, ასევე შეყოვნების ტესტირებისთვის. NetPIPE არის შეყოვნების სპეციფიკური ინსტრუმენტი, მაგრამ მისი შედგენა შესაძლებელია ნებისმიერი სახის გარემოსთვის.
შენიშვნა
TCP_RR ტესტი netperf-ში აბრუნებს შეყოვნებას ტრანზაქციების მნიშვნელობით/წმ. ეს არის ორმხრივი ნომერი. ცალმხრივი შეყოვნება შეიძლება გამოითვალოს შემდეგი განტოლების გამოყენებით:
შეყოვნება(usec) = (1⁄2) / [ტრანზაქცია/წმ] * 1,000,000
3.1.1 iPerf2
Intel რეკომენდაციას უწევს iperf2-ს, ვიდრე iperf3-ს, საორიენტაციო სიტუაციების უმეტესობისთვის, გამოყენების სიმარტივის და მრავალი ძაფების მხარდაჭერის გამო ერთ აპლიკაციაში. Intel გირჩევთ გაუშვათ -P ვარიანტით 2-4 ძაფით 25G კავშირისთვის და დაახლოებით 4-6 ძაფით 40G კავშირებისთვის.
- კლიენტიდან სერვერამდე ცალმხრივი ტრაფიკის გასაშვებად: სერვერის ბრძანება example: iperf2 -s
კლიენტის ბრძანება მაგample: iperf2 -c -პ - კლიენტიდან სერვერამდე ორმხრივი ტრაფიკის გასაშვებად (და პირიქით): სერვერის ბრძანება example: iperf2 –s –p
კლიენტის ბრძანება მაგampლე:
iperf2 -c -გვ -პ --სრულად დუპლექსი OR
iperf2 -c -გვ -პ -დ
შენიშვნა
ორივე –full-duplex და -d პარამეტრები iperf2-ში მომხმარებელს საშუალებას აძლევს განახორციელოს ორმხრივი ტესტირება. თუმცა, სრული დუპლექსის ვარიანტი კონკრეტულად ფოკუსირებულია სრულ დუპლექს ტესტირებაზე.
შენიშვნა
iperf2-ის ტესტირებისას რამდენიმე სერვერის პორტში, -d დროშა შეიძლება დაემატოს სერვერის ბრძანებას, რათა სერვერის ყველა სესიის გაშვება ფონზე იმავე ტერმინალის ფანჯრიდან. -d დროშა ასევე შეიძლება გამოყენებულ იქნას, როდესაც სერვერის ბრძანება ჩაშენებულია სკრიპტის for-loop-ში.
შენიშვნა
ქსელის გამტარუნარიანობის ტესტის გაშვებისას ერთი ნაკადით/ძაფით (მაგample: P1), AMD პროცესორებმა შეიძლება არ უზრუნველყონ მოსალოდნელი გამტარუნარიანობა, განსაკუთრებით უფრო მაღალი გამტარუნარიანობის NIC (თუ სიჩქარე არის >= 25G გამტარუნარიანობა). შედეგად, უფრო მაღალი გამტარუნარიანობის მისაღწევად საჭიროა განაცხადის მიმაგრება კონკრეტულ ბირთვებზე. იხილეთ აპლიკაციის პარამეტრები გვერდზე 22.
3.1.2 iPerf3
თუ iperf3 გამოიყენება, აპლიკაციის რამდენიმე მაგალითია საჭირო advan-ის მისაღებადtagმრავალ თემატური, RSS და ტექნიკის რიგები. Intel გირჩევთ გაუშვათ 2-4 აპლიკაციის სესიით 25G კავშირებისთვის და დაახლოებით 4-6 სესიით 40G კავშირებისთვის. თითოეულ სესიაზე უნდა იყოს მითითებული უნიკალური TCP პორტის მნიშვნელობა -p ოფციის გამოყენებით.
- კლიენტიდან სერვერამდე ცალმხრივი ტრაფიკის გასაშვებად:
სერვერის ბრძანება მაგampლე:
iperf3 -s -p
კლიენტის ბრძანება მაგampლე:
iperf3 -c -გვ - კლიენტიდან სერვერამდე ორმხრივი ტრაფიკის გასაშვებად (და პირიქით):
სერვერის ბრძანება მაგampლე:
iperf3 –s –p
კლიენტის ბრძანება მაგample: iperf3 -c -გვ -პ –-ბიდირი - iperf3-ის მრავალი ინსტანციის (თემის) დასაწყებად, რეკომენდაციაა გამოიყენოს for-loop ძაფების TCP პორტებზე გამოსახულების მიზნით და iperf3-ის ფონზე გაშვება და პარალელურად მრავალი პროცესის შესაქმნელად.
სერვერის ბრძანება მაგample, დაიწყეთ 4 თემა: port=””; i-სთვის {0..3}-ში; do port=520$i; bash -c “iperf3 -s -p $port &”; შესრულებული; კლიენტის ბრძანება მაგample, დაწყება 4 თემა – Transmit test port=””; i-სთვის {0..3}-ში; do port=520$i; bash -c “iperf3 -c $serverIP -p $port &”; შესრულებული; კლიენტის ბრძანება მაგample, დაიწყეთ 4 თემა – Receive test port=””; i-სთვის {0..3}-ში; do port=520$i; bash -c “iperf3 -R -c $serverIP -p $port &”; შესრულებული; 40G კავშირებისთვის გაზარდეთ for-loop 6-მდე ეგზემპლარის/თემის შესაქმნელად.
შენიშვნა
ქსელის გამტარუნარიანობის ტესტის გაშვებისას ერთი ნაკადით/ძაფით (მაგample: P1), AMD პროცესორებმა შეიძლება არ უზრუნველყონ მოსალოდნელი გამტარუნარიანობა, განსაკუთრებით უფრო მაღალი გამტარუნარიანობა
NIC (თუ სიჩქარე არის >= 25G გამტარობა). შედეგად, უფრო მაღალი გამტარუნარიანობის მისაღწევად საჭიროა განაცხადის მიმაგრება კონკრეტულ ბირთვებზე. იხილეთ აპლიკაციის პარამეტრები გვერდზე 22 და AMD EPYC 26 გვერდზე.
3.1.3 netperf
netperf ინსტრუმენტი არის ძლიერი არჩევანი როგორც გამტარუნარიანობის, ასევე შეყოვნების ტესტირებისთვის.
- TCP_STREAM ტესტი netperf-ში ზომავს მოწყობილობის გამტარუნარიანობის შესაძლებლობებს. სერვერის ბრძანება მაგample: netserver Client ბრძანება example: netperf -t TCP_STREAM -l 30 -H
- TCP_RR ტესტი netperf-ში აბრუნებს შეყოვნებას ტრანზაქციების მნიშვნელობით/წამში. ეს არის ორმხრივი ნომერი. რეკომენდირებულია გამოიყენოთ -T x,x ოფცია, თუ x არის მოწყობილობის ცენტრალური პროცესორი. ცალმხრივი შეყოვნება შეიძლება გამოითვალოს შემდეგი გამოყენებით: ლატენტურობა(usec)=(1⁄2)/ [Transactions/sec]*1,000,\ Server ბრძანება example: netserver
კლიენტის ბრძანება მაგample: netperf -t TCP_RR -l 30 -H -T x,x - netperf-ის მრავალი ინსტანციის (threads) დასაწყებად, რეკომენდაციაა გამოიყენოთ for-loop ძაფების გადასატანად TCP პორტებზე და გაუშვათ netperf ფონზე და პარალელურად მრავალი პროცესის შესაქმნელად.
სერვერის ბრძანება მაგampლე, დაიწყე 8 თემა:
პორტი=””; i-სთვის {0..7}-ში; do port=520$i; bash -c “netserver -L $serverIP -p $port &”; შესრულებული;
კლიენტის ბრძანება მაგample, დაიწყეთ 8 თემა: port=””; i-სთვის {0..7}-ში; do port=520$i; bash -c “netperf -H $serverIP -p $port -t TCP_STREAM -l 30 &”; შესრულებული;
3.2 თუნინგის მეთოდოლოგია
ფოკუსირება მოახდინეთ ერთდროულად რეგულირების ცვლილებაზე, რათა იცოდეთ რა გავლენას ახდენს თითოეული ცვლილება თქვენს ტესტზე. რაც უფრო მეტად მეთოდური იქნებით ტიუნინგის პროცესში, მით უფრო ადვილი იქნება შესრულების შეფერხებების მიზეზების იდენტიფიცირება და მისი მოგვარება.
i40e დრაივერის პარამეტრების დაყენება
4.1 IRQ აფინურობა
IRQ კავშირის კონფიგურაცია ისე, რომ სხვადასხვა ქსელის რიგების შეფერხებები აფინიტირებული იყოს CPU-ს სხვადასხვა ბირთვთან, შეიძლება დიდი გავლენა იქონიოს შესრულებაზე, განსაკუთრებით მრავალძაფიანი გამტარუნარიანობის ტესტებზე.
IRQ affinity-ის კონფიგურაციისთვის შეაჩერეთ irqbalance და შემდეგ გამოიყენეთ set_irq_affinity სკრიპტი i40e წყაროს პაკეტიდან ან ხელით დაამაგრეთ რიგები. გამორთეთ მომხმარებლის სივრცის IRQ ბალანსერი რიგის ჩამაგრების ჩასართავად:
- systemctl გამორთეთ irqbalance
- systemctl შეაჩერე irqbalance
set_irq_affinity სკრიპტის გამოყენება i40e წყაროს პაკეტიდან (რეკომენდებულია): - ყველა ბირთვის გამოსაყენებლად:
[path-to-i40epackage]/scripts/set_irq_affinity -X all ethX - ადგილობრივ NUMA სოკეტზე მხოლოდ ბირთვების გამოსაყენებლად: [path-to-i40epackage]/scripts/set_irq_affinity -X ადგილობრივი ethX
- თქვენ ასევე შეგიძლიათ აირჩიოთ ბირთვების სპექტრი. მოერიდეთ cpu0-ს გამოყენებას, რადგან ის ასრულებს ტაიმერის ამოცანებს. [path-to-i40epackage]/scripts/set_irq_affinity 1-2 ethX
შენიშვნა
Affinity სკრიპტი საშუალებას აძლევს გადაცემის პაკეტის საჭეს (XPS), როგორც დამაგრების პროცესის ნაწილი, როდესაც მითითებულია -x ვარიანტი. როდესაც XPS ჩართულია, Intel გირჩევთ გამორთოთ irqbalance, რადგან ბირთვის ბალანსერი XPS-ით შეიძლება გამოიწვიოს არაპროგნოზირებადი შესრულება. Affinity სკრიპტი თიშავს XPS-ს, როდესაც მითითებულია -X ვარიანტი. XPS-ის გამორთვა და სიმეტრიული რიგების ჩართვა სასარგებლოა სამუშაო დატვირთვისთვის, სადაც საუკეთესო შესრულება მიიღწევა, როდესაც Tx და Rx ტრაფიკი ემსახურება იმავე რიგის წყვილ(ებ)ს.
სიმეტრიული რიგების კონფიგურაცია Linux-ში გულისხმობს ქსელის ინტერფეისის დრაივერის პარამეტრების რეგულირებას, რათა ჩართოს სიმეტრიული მიღების რიგები (Rx) და სიმეტრიული გადაცემის რიგები (Tx) მხარდაჭერილი ქსელის ადაპტერებისთვის.
შენიშვნა
- სიმეტრიული რიგები არის გაფართოებული ქსელის ფუნქცია და ყველა 700 სერიის ქსელის ადაპტერი ან დრაივერი არ უჭერს მხარს მათ.
- სიმეტრიული რიგების კონფიგურაციის მცდელობამდე დარწმუნდით, რომ გაქვთ საჭირო დრაივერი და აპარატურის მხარდაჭერა.
სიმეტრიული რიგების კონფიგურაციისთვის მიჰყევით ამ ზოგად ნაბიჯებს:
- ქსელის ინტერფეისის კონფიგურაციის რედაქტირება File: გამოიყენეთ ტექსტური რედაქტორი (მაგample, vi, nano ან gedit) ქსელის ინტერფეისის კონფიგურაციის რედაქტირებისთვის file. The file ჩვეულებრივ მდებარეობს /etc/sysconfig/network-scripts/ დირექტორიაში და აქვს სახელი, როგორიცაა ifcfg-ethX, სადაც ethX არის თქვენი ქსელის ინტერფეისის სახელი.
- დაამატეთ სიმეტრიული რიგის პარამეტრები. დაამატეთ შემდეგი ხაზები ქსელის ინტერფეისის კონფიგურაციაში file: ETHTOOL_OPTS=”rx-რიგები 8 tx-რიგები 8″
- გადატვირთეთ ქსელის სერვისი.
ცვლილებების განხორციელების შემდეგ გადატვირთეთ ქსელის სერვისი ახალი კონფიგურაციის გამოსაყენებლად. sudo systemctl ქსელის გადატვირთვა
ხელით:
-
იპოვეთ თითოეულ კვანძზე მიმაგრებული პროცესორები: 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, 181-192 12 ვექტორისთვის დატვირთული.
- გაიმეორეთ SMP აფინურობის მნიშვნელობა შესაბამის IRQ ჩანაწერში. გაითვალისწინეთ, რომ ეს უნდა გაკეთდეს თითოეული IRQ ჩანაწერისთვის: echo 1 > /proc/irq/181/smp_affinity echo 2 > /proc/irq/182/smp_affinity echo 4 > /proc/irq/183/smp_affinity აჩვენე IRQ affinity:
- ყველა ბირთვისთვის IRQ კავშირის ჩვენება: /scripts/set_irq_affinity -s ethX
- ადგილობრივ NUMA სოკეტზე მხოლოდ ბირთვების ჩვენება: /scripts/set_irq_affinity -s ადგილობრივი ethX
- თქვენ ასევე შეგიძლიათ აირჩიოთ ბირთვების სპექტრი: /სკრიპტები/set_irq_affinity -s 40-0-8,16 ethX
შენიშვნა
set_irq_affinity სკრიპტი მხარს უჭერს -s დროშას i40e დრაივერის 2.16.11 და შემდეგ ვერსიაში.
4.2 Tx/Rx რიგები
რიგების ნაგულისხმევი რაოდენობა, რომელიც ჩართულია თითოეული Ethernet პორტისთვის დრაივერის მიერ ინიციალიზაციისას, უდრის პლატფორმაზე ხელმისაწვდომი CPU-ების მთლიან რაოდენობას. ეს კარგად მუშაობს მრავალი პლატფორმისთვის და დატვირთვის კონფიგურაციისთვის. თუმცა, პლატფორმებში, რომლებსაც აქვთ ბირთვების მაღალი რაოდენობა და/ან მაღალი Ethernet პორტის სიმკვრივე, ამ კონფიგურაციამ შეიძლება გამოიწვიოს რესურსების წინააღმდეგობა. ამიტომ, ზოგიერთ შემთხვევაში შეიძლება საჭირო გახდეს სისტემის თითოეული პორტის ნაგულისხმევი ცვლილება.
Tx/Rx რიგების ნაგულისხმევი რაოდენობა შეიძლება განსხვავდებოდეს კონკრეტული მოდელისა და დრაივერის ვერსიის მიხედვით. რიგების რაოდენობა შეიძლება დარეგულირდეს ქვემოთ ჩამოთვლილი ethtool -L ბრძანების გამოყენებით.
შენიშვნა
ამ შემთხვევებში, Intel გირჩევთ, რომ შეამციროთ ნაგულისხმევი რიგის რაოდენობა თითოეული პორტისთვის არაუმეტეს CPU-ების რაოდენობაზე, რომლებიც ხელმისაწვდომია NUMA კვანძში, ლოკალური ადაპტერის პორტისთვის. ზოგიერთ შემთხვევაში, როდესაც ცდილობთ რესურსების დაბალანსებას პორტების მაღალი რაოდენობის დანერგვაზე, შესაძლოა საჭირო გახდეს ამ რიცხვის კიდევ უფრო შემცირება.
რიგის კონფიგურაციის შესაცვლელად:
შემდეგი ყოფილიample აყენებს პორტს 32 Tx/Rx რიგებზე: ethtool -L ethX კომბინირებული 32
Exampგამომავალი:
ethtool -l ethX
არხის პარამეტრები ethX-ისთვის: წინასწარ დაყენებული მაქსიმუმები:
RX: 96
TX: 96
სხვა: 1 XNUMX
კომბინირებული: 96
ტექნიკის მიმდინარე პარამეტრები:
RX: 0
TX: 0
სხვა: 1 XNUMX
კომბინირებული: 32
4.3 შეწყვეტის მოდერაცია
ადაპტაციური შეფერხების მოდერაცია ჩართულია ნაგულისხმევად და შექმნილია იმისათვის, რომ უზრუნველყოს დაბალანსებული მიდგომა CPU-ს დაბალ გამოყენებასა და მაღალ შესრულებას შორის. თუმცა, შეგიძლიათ სცადოთ ხელით დააკონფიგურიროთ შეფერხების პარამეტრები თქვენი გამოყენების შემთხვევაში.
0-235 მიკროწამის დიაპაზონი უზრუნველყოფს ეფექტურ დიაპაზონს 4,310-დან 250,000 შეწყვეტამდე წამში. rx-μsecs-high-ის მნიშვნელობა შეიძლება დაყენდეს rx-μsecs და tx-μsecs-ისგან დამოუკიდებლად იმავე ethtool ბრძანებაში და ასევე დამოუკიდებელია ადაპტური შეფერხების მოდერაციის ალგორითმისგან. ძირითადი აპარატურა მხარს უჭერს გრანულარობას 2 მიკროწამიანი ინტერვალებით, ამიტომ მიმდებარე მნიშვნელობებმა შეიძლება გამოიწვიოს იგივე შეფერხების სიჩქარე.
- ადაპტური შეფერხების მოდერაციის გამორთვა: ethtool -C ethX ადაპტური-rx გამორთვა ადაპტური-tx გამორთულია
- ადაპტაციური შეფერხების მოდერაციის ჩართვისთვის: ethtool -C ethX ადაპტური-rx ადაპტური-tx-ზე
ზოგადი დარეგულირების დასაწყებად კარგი ადგილია 84 μs, ან ~12000 შეწყვეტა/წმ. თუ ხედავთ, რომ 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 usecs შეწყვეტებს შორის (16000 შეწყვეტა/წმ). ethtool -C ethX ადაპტური-rx გამორთული ადაპტური-tx გამორთული rx-usecs 62 tx-usecs 62
თუ rx_dropped მრიცხველები იზრდება ტრაფიკის დროს (ethtool -S ethX-ის გამოყენებით), თქვენ ალბათ გაქვთ ძალიან ნელი CPU, არ გაქვთ საკმარისი ბუფერები ადაპტერის რგოლის ზომადან (ethtool -G) ან ძალიან დაბალი შეფერხების სიხშირე. თუ CPU-ის ათვისებაზე არ ხართ მაქსიმუმ, შეგიძლიათ გაზარდოთ შეფერხების სიხშირე ITR მნიშვნელობის შემცირებით. ეს იყენებს მეტ CPU-ს, მაგრამ სერვისები უფრო სწრაფად ბუფერდება და საჭიროებს ნაკლებ აღმწერს (ბეჭდის ზომა, ethtool -G).
თუ თქვენი CPU არის 100%, მაშინ არ არის რეკომენდებული შეფერხების სიჩქარის გაზრდა. გარკვეულ გარემოებებში, როგორიცაა CPU დაკავშირებული დატვირთვა, შეიძლება დაგჭირდეთ μs მნიშვნელობის გაზრდა სხვა აპლიკაციებისთვის CPU-ის მეტი დროის გასააქტიურებლად.
თუ თქვენ გჭირდებათ დაბალი შეყოვნების შესრულება და/ან გაქვთ უამრავი CPU, რომ დაუთმოთ ქსელის დამუშავებას, შეგიძლიათ მთლიანად გამორთოთ შეფერხების მოდერაცია, რაც საშუალებას მისცემს შეფერხებებს რაც შეიძლება სწრაფად გააქტიურდეს. - შეფერხების მოდერაციის ethtool-ის გამორთვა -C ethX ადაპტური-rx გამორთულია ადაპტური-tx გამორთულია rx-usecs 0 tx-usecs 0
შენიშვნა
შეფერხების მოდერაციის გათიშვისას, შეფერხების სიხშირე თითოეულ რიგში შეიძლება იყოს ძალიან მაღალი. განვიხილოთ rx-usec-high პარამეტრის ჩართვა შეფერხების სიჩქარის ზედა ლიმიტის დასაყენებლად. შემდეგი ბრძანება გამორთავს ადაპტირებულ შეფერხების მოდერაციას და იძლევა მაქსიმუმ 5 მიკროწამს, სანამ მიანიშნებს, რომ მიღება ან გადაცემა დასრულდა. იმის მაგივრად, რომ წამში 200,000 შეფერხება გამოიწვიოს, ის ზღუდავს მთლიან შეფერხებებს წამში 50,000-მდე rx-usec-high პარამეტრის მეშვეობით. # ethtool -C ethX adaptive-rx off adaptive-tx off rx-usecs-high 20 rx-usecs 5 txusecs 5 სცადეთ გადაცემის/მიღების/მაღალი პრიორიტეტის შერწყმის ტაიმერის რეგულირება უფრო მაღალი (80/100/150/200) ან უფრო დაბალი (25/20/10/5 ოპტიმალური მნიშვნელობის მოსაძებნად სამუშაოსთვის XNUMX/XNUMX).
4.4 ბეჭდის ზომა
თუ ხედავთ rx_dropped მრიცხველებს ethtool -S ethX-ში (rx_dropped, rx_dropped.nic) ან ეჭვი გეპარებათ ქეშის ზეწოლაში მრავალი რიგის აქტიური არსებობით, შეგიძლიათ სცადოთ ბეჭდის ზომის კორექტირება ნაგულისხმევი მნიშვნელობიდან. ნაგულისხმევი მნიშვნელობა არის 512, მაქსიმალური არის 4096.
- მიმდინარე მნიშვნელობების შესამოწმებლად: ethtool -g ethX
თუ ეჭვი გეპარებათ, რომ ბუფერის ნაკლებობა იწვევს ვარდნას მიმდინარე შეფერხების სიხშირეზე, შეგიძლიათ სცადოთ ჯერ მაქსიმუმი, შემდეგ მინიმალური, შემდეგ გააგრძელოთ ბინარული ძებნა, სანამ არ დაინახავთ ოპტიმალურ შესრულებას.
თუ არსებობს ეჭვი ქეშის წნევაზე (ბევრი რიგი აქტიურია), ბუფერების შემცირება ნაგულისხმევიდან შეიძლება დაეხმაროს Intel ® Data Direct I/O-ს (Intel ® DDIO) უკეთესად მუშაობაში. Intel გირჩევთ სცადოთ 128 ან 256 რიგზე, რადგან იცოდეთ, რომ შეფერხების სიხშირის გაზრდა ethtool -C-ის საშუალებით შეიძლება საჭირო გახდეს rx_dropped-ის ზრდის თავიდან ასაცილებლად. - ბეჭდის ზომის ფიქსირებულ მნიშვნელობაზე დასაყენებლად: 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 ჯუმბო ჩარჩოები
როდესაც მოსალოდნელი სატრანსპორტო გარემო შედგება მონაცემთა დიდი ბლოკისგან, რომელიც გადაცემულია, შესაძლოა მომგებიანი იყოს ჯუმბო ჩარჩოს ფუნქციის ჩართვა. Jumbo Frames-ის მხარდაჭერა ჩართულია მაქსიმალური გადაცემის ერთეულის (MTU) მნიშვნელობის შეცვლით, ვიდრე ნაგულისხმევი მნიშვნელობა 1500. ეს საშუალებას აძლევს მოწყობილობას გადაიტანოს მონაცემები უფრო დიდ პაკეტებში ქსელის გარემოში. ამ პარამეტრმა შეიძლება გააუმჯობესოს გამტარუნარიანობა და შეამციროს CPU-ს გამოყენება დიდი I/O სამუშაო დატვირთვისთვის. თუმცა, ამან შეიძლება გავლენა მოახდინოს მცირე პაკეტებზე ან შეყოვნებაზე მგრძნობიარე დატვირთვაზე.
შენიშვნა
Jumbo ჩარჩოები ან უფრო დიდი MTU პარამეტრი სწორად უნდა იყოს კონფიგურირებული თქვენი ქსელის გარემოში.
გამოიყენეთ ifconfig ბრძანება MTU ზომის გასაზრდელად. მაგample, შეიყვანეთ შემდეგი, სადაც არის ინტერფეისის ნომერი: ifconfig mtu 9000 ზევით
ალტერნატიულად, შეგიძლიათ გამოიყენოთ ip ბრძანება შემდეგნაირად: ip link set mtu 9000 dev ip ლინკის დაყენება dev
პლატფორმის ტიუნინგი (i40e არასპეციფიკური)
5.1 BIOS პარამეტრები
- ჩართეთ Intel® VT-d ვირტუალიზაციის დატვირთვისთვის.
- Hyper-threading (ლოგიკური პროცესორები) შეიძლება გავლენა იქონიოს შესრულებაზე. ექსპერიმენტი ჩართოთ ან გამორთოთ თქვენი დატვირთვისთვის.
- Intel® Turbo Boost საშუალებას აძლევს CPU ბირთვებს იმუშაონ უფრო მაღალი სიხშირით, ვიდრე CPU-ის საბაზისო სიხშირე. Intel® Turbo Boost-ის ჩართვას შეუძლია გააუმჯობესოს შესრულება მრავალი დატვირთვისთვის, მაგრამ მოიხმარს უფრო მეტ ენერგიას ბირთვების მაღალ სიხშირეზე შესანარჩუნებლად. ექსპერიმენტი Turbo Boost off/on თქვენი დატვირთვისთვის.
შენიშვნა
ტურბო სიხშირეები არ არის გარანტირებული, თუ პლატფორმა განიცდის მაღალი საერთო CPU-ს გამოყენებას. ბირთვის უფრო მაღალი ტურბო სიხშირეები მცირდება CPU-ს მთლიანი გამოყენების მატებასთან ერთად.
5.2 ენერგიის მართვა
ენერგიის მენეჯმენტმა შეიძლება გავლენა მოახდინოს შესრულებაზე, განსაკუთრებით დაბალი ლატენტური დატვირთვის დროს. თუ შესრულება უფრო პრიორიტეტულია, ვიდრე ენერგიის მოხმარების შემცირება, Intel გირჩევთ, რომ ექსპერიმენტი ჩაატაროთ ენერგიის მართვის ეფექტების შეზღუდვით. ენერგიის მართვის შეზღუდვის მრავალი განსხვავებული გზა არსებობს ოპერაციული სისტემის ხელსაწყოების, BIOS პარამეტრების და ბირთვის ჩატვირთვის პარამეტრების მეშვეობით. აირჩიე საუკეთესო მეთოდი და დონე, რომელიც შეესაბამება თქვენს გარემოს.
5.2.1 C-სახელმწიფოს კონტროლი
C-სახელმწიფოს შესვლის შეზღუდვა CO ან C1-ზე აუმჯობესებს მუშაობას და ზრდის ენერგიის გამოყენებას.
CPU Package C6 მდგომარეობის შეყვანის გამორთვა შეიძლება გააუმჯობესოს ქსელის მუშაობა. თუმცა, ეს ზრდის ენერგიის მოხმარებას.
შემდეგი პარამეტრები ხელმისაწვდომია:
- დინამიურად აკონტროლეთ C- მდგომარეობის ჩანაწერი:
გახსენით
/dev/cpu_dma_latency და ჩაწერეთ მაქსიმალური დასაშვები შეყოვნება.
შენიშვნა
არის პატარა პროგრამა სახელად cpudmalatency.c, რომელიც შეიძლება გადმოიწეროს ღია კოდის თემიდან, შედგეს და გაუშვას ბრძანების ხაზიდან ზუსტად ამის გასაკეთებლად.
შემდეგი ყოფილიample იძლევა გაღვიძების დროის ხუთ μs და ამით საშუალებას აძლევს C1 შეყვანას: cpudmalatency 5 &
- შეზღუდეთ მაქსიმალური C- მდგომარეობა ბირთვის ჩატვირთვის პარამეტრებში:
Intel CPU-ებისთვის: intel_idle.max_cstates=1
არაინტელის პროცესორებისთვის: processor.max_cstates=1 - გამოიყენეთ cpupower ბრძანება CPU C6 მდგომარეობის შესამოწმებლად და გამორთვისთვის: შეამოწმეთ: cpupower მონიტორი ან cpupower idle-info
გამორთეთ C6: cpupower idle-set -d3 ან
გამორთეთ C-States: cpupower idle-set -D0
შენიშვნები:
- გამორთეთ C-მდგომარეობები CPU-ზე, თუ სერვერს აქვს Intel® მე-4 თაობის Intel® Xeon® მასშტაბირებადი პროცესორ(ები). როდესაც Hyper Threading ჩართულია ან გამორთულია, უმოქმედო მდგომარეობების გამორთვა (-D0) ხელს უშლის ბირთვების შესვლას დაბალი სიმძლავრის მდგომარეობებში უმოქმედობის პერიოდებში და ამცირებს CPU-ის შეყოვნებას უმოქმედო და აქტიურ მდგომარეობებს შორის გადასვლისას.
- Intel® მე-4 თაობის Intel® Xeon® მასშტაბირებადი პროცესორის ენერგიის მართვა უკიდურესად აგრესიულია. იმისთვის, რომ ბირთვები არ შევიდნენ დაბალ სიმძლავრის მდგომარეობაში, სცადეთ შეამციროთ გამოყენებული ბირთვების რაოდენობა, რათა უფრო დიდხანს შეინარჩუნოთ ისინი ფხიზლად (ethtool -L კომბინირებული ). ასევე, შეაერთეთ შეფერხებები კონკრეტულ ბირთვებთან დაყენებული irq კავშირის გამოყენებით (ყველაზე ხშირად -x ლოკალური ან CPU ბირთვების სიით) და დარწმუნდით, რომ სამუშაო დატვირთვა მუშაობს იმავე ბირთვებზე ამოცანების ნაკრებით ან numactl. ეს აუმჯობესებს მუშაობას ბირთვების აქტიური შენარჩუნებით და შეფერხების მართვის ოპტიმიზაციის გზით.
ჩართეთ C6:
cpupower idle-set -d3
C-სახელმწიფოების ჩართვა:
cpupower idle-set -E
- კიდევ ერთი მეთოდი არის დარეგულირებული ხელსაწყოს გამოყენება (შედის Linux-ის ბევრ დისტრიბუციაში) შესრულების პროფესიონალის დასაყენებლადfile. ეს პროfileშეცვალეთ რამდენიმე OS პარამეტრი, რამაც შეიძლება გავლენა მოახდინოს შესრულებაზე მრავალი აპლიკაციისთვის. აღმოჩნდა, რომ ქსელის გამტარუნარიანობა პროfile უზრუნველყოფს სამუშაოების უმეტესობის გაუმჯობესებას.
შეამოწმეთ:
tuned-adm აქტიური
კომპლექტი:
tuned-adm profile ქსელის გამტარუნარიანობა
შენიშვნა
მორგებული სერვისი უნდა იყოს გაშვებული ზემოთ მოყვანილი ბრძანებებისთვის. შესამოწმებლად/გადატვირთვისთვის, დაკონკრეტებულია: systemctl სტატუსი მოწესრიგებულია systemctl გადატვირთვა დარეგულირებულია
თქვენ ასევე შეგიძლიათ აკრძალოთ ნებისმიერი C-სახელმწიფო ჩანაწერი ბირთვის ჩატვირთვის ხაზში შემდეგის დამატებით:
უსაქმური = გამოკითხვა - შეზღუდეთ C-მდგომარეობა სისტემის BIOS-ის ენერგიის მართვის პარამეტრების მეშვეობით, რომელსაც შეიძლება ჰქონდეს მუშაობის პროფესიონალიfile ხელმისაწვდომი.
ინსტრუმენტები, როგორიცაა turbostat ან x86_energy_perf_policy, შეიძლება გამოყენებულ იქნას ენერგიის მართვის პარამეტრების შესამოწმებლად ან დასაყენებლად.
5.2.2 PCIe ენერგიის მართვა
Active-State Power Management (ASPM) საშუალებას აძლევს PCIe ბმულების დაბალი სიმძლავრის მდგომარეობას, როდესაც ისინი აქტიურ გამოყენებაში არ არის. ამან შეიძლება გამოიწვიოს უფრო მაღალი შეყოვნება PCIe ქსელის მოწყობილობებზე, ამიტომ Intel გირჩევთ გამორთოთ ASPM შეყოვნებისადმი მგრძნობიარე სამუშაო დატვირთვისთვის. გამორთეთ ASPM ბირთვის ჩატვირთვის ხაზში შემდეგის დამატებით: pcie_aspm=off
5.2.3 CPU სიხშირის სკალირება
CPU სიხშირის სკალირება (ან CPU სიჩქარის სკალირება) არის Linux ენერგიის მართვის ტექნიკა, რომლის დროსაც სისტემის საათის სიჩქარე რეგულირდება ფრენის დროს ენერგიისა და სითბოს დაზოგვის მიზნით. ისევე, როგორც C-სახელმწიფოები, ამან შეიძლება გამოიწვიოს ქსელის კავშირების არასასურველი შეყოვნება.
Cpupower ინსტრუმენტი ასევე შეიძლება გამოყენებულ იქნას CPU-ის მუშაობის ნაგულისხმევი და ლიმიტების შესამოწმებლად და შესაცვლელად:
- შეამოწმეთ: cpupower მონიტორი ან
- CPU-ების დაყენება შესრულების რეჟიმში: cpupower სიხშირის დაყენება -g შესრულება
შენიშვნა
CPU სიხშირის ლიმიტების ცვლილებამ შეიძლება გავლენა მოახდინოს ბევრ დატვირთვაზე და შეიძლება გამორთოს სხვა ფუნქციები, როგორიცაა CPU ტურბო რეჟიმი.
CPU სიხშირის სკალირების გამორთვისთვის, გამორთეთ CPU კვების სერვისი შემდეგი ბრძანებებით:
systemctl გაჩერება cpupower.service
systemctl გამორთე cpupower.service
5.2.4 ენერგიის მართვის დამატებითი სახელმძღვანელო
დამატებითი დეტალები მოცემულია ამ მაღალ დონეზეview მე-3 თაობის Intel® Xeon® Scalable პროცესორებში ენერგიის მენეჯმენტის მრავალი მახასიათებლის შესახებ, ასევე მითითებები იმის შესახებ, თუ როგორ შეიძლება ამ ფუნქციების ინტეგრირება პლატფორმის დონეზე: https://networkbuilders.intel.com/solutionslibrary/power-management-technologyoverview-technology-guide
5.3 Intel® Turbo Boost
Intel® Turbo Boost პროცესორს აჩქარებს საჭიროების შემთხვევაში, მაგრამ შეუძლია მოიხმაროს დამატებითი ენერგია. Turbo Boost-ის გამორთვა ინარჩუნებს პროცესორს სტაბილურ სიჩქარეზე, რაც უზრუნველყოფს მუშაობის მუდმივ დონეს კონკრეტული დატვირთვისთვის.
5.4 Firewalls
Firewall-ებს შეუძლიათ გავლენა მოახდინონ შესრულებაზე, განსაკუთრებით ლატენტურ შესრულებაზე.
გამორთეთ iptables/firewalld თუ არ არის საჭირო.
5.5 აპლიკაციის პარამეტრები
ხშირად ერთი ძაფი (რომელიც შეესაბამება ერთი ქსელის რიგს) არ არის საკმარისი მაქსიმალური გამტარობის მისაღწევად. ზოგიერთი პლატფორმის არქიტექტურა, როგორიცაა AMD, უფრო მეტ Rx პაკეტს ტოვებს ერთი ძაფით, ვიდრე პლატფორმებზე Intel-ზე დაფუძნებული პროცესორებით.
იფიქრეთ ისეთი ინსტრუმენტების გამოყენებაზე, როგორიცაა ამოცანების ნაკრები ან numactl, აპლიკაციების დასამაგრებლად NUMA კვანძში ან CPU-ის ბირთვებზე ქსელის მოწყობილობაზე ლოკალურად. ზოგიერთი დატვირთვისთვის, როგორიცაა შენახვის I/O, აპლიკაციის გადატანა არალოკალურ კვანძში სარგებელს იძლევა.
თუ ეს შესაძლებელია, სცადეთ თქვენი აპლიკაციის მიერ გამოყენებული ძაფების რაოდენობის გაზრდა.
5.6 ბირთვის ვერსია
თანამედროვე ყუთში არსებული ბირთვების უმეტესობა გონივრულად კარგად არის ოპტიმიზირებული მუშაობისთვის, მაგრამ თქვენი გამოყენების შემთხვევიდან გამომდინარე, ბირთვის განახლებამ შეიძლება უზრუნველყოს გაუმჯობესებული შესრულება. წყაროს ჩამოტვირთვა ასევე საშუალებას გაძლევთ ჩართოთ/გამორთოთ გარკვეული ფუნქციები ბირთვის შექმნამდე.
5.7 ოპერაციული სისტემის/კერნელის პარამეტრები
მიმართეთ ოპერაციული სისტემის ტუნინგის სახელმძღვანელოებს, როგორიცაა Red Hat Enterprise Linux Network Performance Tuning Guide, ოპერაციული სისტემის ზოგადი დარეგულირების შესახებ მეტი ინფორმაციის მისაღებად.
დასარეგულირებლად ზოგიერთი საერთო პარამეტრი ჩამოთვლილია შემდეგ ცხრილში. გაითვალისწინეთ, რომ ეს მხოლოდ შემოთავაზებული საწყისი წერტილებია და მათი შეცვლა ნაგულისხმევიდან შესაძლოა გაზარდოს სისტემაში გამოყენებული რესურსები. მიუხედავად იმისა, რომ მნიშვნელობების გაზრდამ შეიძლება ხელი შეუწყოს მუშაობის გაუმჯობესებას, აუცილებელია ექსპერიმენტი სხვადასხვა მნიშვნელობებით, რათა დადგინდეს, რა მუშაობს საუკეთესოდ მოცემულ სისტემაზე, დატვირთვაზე და ტრაფიკის ტიპზე.
ბირთვის პარამეტრების კონფიგურაცია შესაძლებელია sysctl პროგრამის გამოყენებით Linux-ში, როგორც ეს მოცემულია ქვემოთ.
რომ view rmem და wmem სისტემის ნაგულისხმევი მნიშვნელობები:
sysctl net.core.rmem_default
sysctl net.core.wmem_default
დააყენეთ მნიშვნელობები მაქსიმუმზე (16 მბ):
sysctl -w net.core.rmem_max=16777216
sysctl -w net.core.wmem_max=16777216
სოკეტის ბუფერის ზომები, ასევე ცნობილი როგორც მიღების ბუფერი (rmem) და გადაცემის ბუფერი (wmem), არის სისტემის პარამეტრები, რომლებიც განსაზღვრავს მეხსიერების რაოდენობას, რომელიც რეზერვირებულია შემომავალი და გამავალი ქსელის ტრაფიკისთვის.
sysctl გაშვებული -w არგუმენტის გარეშე ჩამოთვლის პარამეტრს მისი მიმდინარე პარამეტრით.
დასტის პარამეტრი | აღწერა |
net.core.rmem_default | ნაგულისხმევი მიღების ფანჯრის ზომა |
net.core.wmem_default | გადაცემის ფანჯრის ნაგულისხმევი ზომა |
net.core.rmem_max | მიღების ფანჯრის მაქსიმალური ზომა |
net.core.wmem_max | გადაცემის ფანჯრის მაქსიმალური ზომა |
net.core.optmem_max | მაქსიმალური ოფციების მეხსიერების ბუფერები |
net.core.netdev_max_backlog | დაუმუშავებელი პაკეტების ჩანაწერი ბირთვის დაცემამდე |
net.ipv4.tcp_rmem | მეხსიერების რეზერვიერი TCP წაკითხული ბუფერებისთვის |
net.ipv4.tcp_wmem | მეხსიერების რეზერვიერი TCP გაგზავნის ბუფერებისთვის |
ბირთვი, ქსელის დასტა, მეხსიერების დამმუშავებელი, პროცესორის სიჩქარე და ენერგიის მართვის პარამეტრებმა შეიძლება დიდი გავლენა იქონიონ ქსელის მუშაობაზე. საერთო რეკომენდაციაა მიმართოთ ქსელის გამტარუნარიანობასfile მორგებული ბრძანების გამოყენებით. ეს ცვლის OS-ის რამდენიმე პარამეტრს, რათა უპირატესობა მიანიჭოს ქსელის აპლიკაციებს.
შეამოწმეთ:
tuned-adm აქტიური
კომპლექტი:
tuned-adm profile ქსელის გამტარუნარიანობა
5.8 ქსელური მოწყობილობის ბექლოგი
ეს ფუნქცია ხელს უწყობს ქსელის მუშაობის გაუმჯობესებას შემომავალი ტრაფიკის ეფექტური მართვის გზით, პაკეტების დაკარგვის შემცირებით, შეყოვნების შემცირებით და გამტარუნარიანობის გაზრდით. ეს იწვევს მომხმარებლის უკეთეს გამოცდილებას და სისტემის უფრო სწრაფ რეაგირებას.
ნაგულისხმევად, ის ჩართულია Linux-ის უმეტეს ოპერაციულ სისტემაში. ნაგულისხმევი მნიშვნელობის შესამოწმებლად:
sysctl net.core.netdev_max_backlog
netdev_max_backlog-ის მაქსიმალური მნიშვნელობა შეიძლება განსხვავდებოდეს ფაქტორების მიხედვით, როგორიცაა ბირთვის ვერსია, აპარატურა, მეხსიერება და დატვირთვა. ხშირ შემთხვევაში, 8192 განიხილება, როგორც კარგი მნიშვნელობა. sysctl -w net.core.netdev_max_backlog=8192
5.9 პლატფორმის სპეციფიკური კონფიგურაციები და რეგულირება
5.9.1 მე-4 თაობის Intel® Xeon® მასშტაბირებადი პროცესორები
Intel® მე-4 თაობის Intel® Xeon® Scalable პროცესორის ენერგიის მართვა უკიდურესად აგრესიულია მე-3 თაობის Intel® Xeon® Scalable პროცესორებთან შედარებით. იმისათვის, რომ ბირთვები არ შევიდნენ დაბალ სიმძლავრის მდგომარეობებში, შეეცადეთ შეამციროთ გამოყენებული ბირთვების რაოდენობა, რათა ისინი დიდხანს იფხიზლდეთ.
რეკომენდებული Bios პარამეტრები უმაღლესი შესრულებისთვის
- Hyper-threading ჩართვა/გამორთვა (დამუშავების მოთხოვნილების და შესრულების მიზნებიდან გამომდინარე) CPU-ზე.
- დააყენეთ სისტემის პროfile შესრულება მაქსიმალური შესრულებისთვის.
შენიშვნა
ეს იწვევს ენერგიის მაღალ მოხმარებას - დააყენეთ CPU ენერგიის მენეჯმენტი მაქსიმალურ შესრულებაზე, რათა უპირატესობა მიანიჭოთ CPU-ს მაქსიმალურ შესრულებას ენერგიის ეფექტურობაზე.
- ჩართეთ Turbo Boost. Turbo Boost-ის გამორთვა სისტემის BIOS-ის პარამეტრებში, როგორც წესი, ხელს უშლის CPU-ს დინამიურად გაზარდოს საათის სიჩქარე მის საბაზო სიხშირეზე.
- შენიშვნა
Turbo Boost-ის გამორთვა შეიძლება შესაფერისი იყოს გარკვეული გამოყენების შემთხვევებისთვის, როდესაც თანმიმდევრული შესრულება, ენერგიის ეფექტურობა ან თერმული მართვა პრიორიტეტულია მაქსიმალურ შესრულებაზე. - გამორთეთ Single Root I/O Virtualization (SR-IOV) ფუნქცია, თუ სისტემა არ იყენებს ვირტუალიზაციის ტექნოლოგიებს.
- გამორთეთ C-სახელმწიფოები, რათა დაავალოთ CPU-ს დარჩეს აქტიური და თავიდან აიცილოს უფრო ღრმა უმოქმედო მდგომარეობები.
- გამორთეთ C1E, რათა დარწმუნდეთ, რომ CPU დარჩება აქტიური და არ შედის C1E უმოქმედო მდგომარეობაში.
- დააყენეთ uncore სიხშირე მაქსიმუმზე, რათა დაავალოთ სისტემას იმუშაოს ყველაზე მაღალი სიხშირით.
- Dell-ის პლატფორმებზე დააყენეთ მრავალჯერადი APIC აღწერა ცხრილის (MADT) ბირთვის ემულაცია Linear-ზე (ან Round-Robin დამოკიდებულია BIOS-ზე), რათა უზრუნველყოთ CPU ბირთვების მკაფიო და პროგნოზირებადი რუქა.
რეკომენდირებული OS დონის tunings ოპტიმიზებული შესრულებისთვის
- დააყენეთ CPU სიხშირის სკალირების გუბერნატორი შესრულებაზე. cpupower სიხშირის კომპლექტი -g performance cpupower სიხშირე-info
- გამორთეთ C-სახელმწიფოები. cpupower idle-set -D0
- დააყენეთ ძირითადი Rx (rmem) და Tx (wmem) ბუფერები მაქსიმალურ მნიშვნელობაზე. sysctl -w net.core.rmem_max=16777216 sysctl -w net.core.wmem_max=16777216
- დააყენეთ ქსელის მოწყობილობების ბექალი. sysctl -w net.core.netdev_max_backlog=8192
- დააყენეთ მორგებული პროfile (სამუშაო დატვირთვა დამოკიდებულია გამტარუნარიანობაზე/დაყოვნებაზე).
tuned-adm profile ქსელის გამტარუნარიანობა
რეკომენდებული ადაპტერის დონის დარეგულირება ოპტიმიზებული მუშაობისთვის
- შეზღუდეთ რიგების რაოდენობა აპლიკაციის ტრაფიკისთვის გამოსაყენებლად. გამოიყენეთ რიგების მინიმალური რაოდენობა, რომელიც საჭიროა ასოცირებული CPU ბირთვების აქტიური შესანარჩუნებლად, რათა თავიდან აიცილოთ ისინი უფრო ღრმა უმოქმედო მდგომარეობებში (მორგება სამუშაო დატვირთვის მიხედვით): ethtool -L კომბინირებული 32
- დააყენეთ შეფერხების მოდერაციის განაკვეთები. ethtool -C adaptive-rx off adaptive-tx off rx-usecs-high 50 rx-usecs 50 tx-usecs 50
სცადეთ გადაცემის/მიღების/მაღალი პრიორიტეტის შერწყმის ტაიმერის რეგულირება უფრო მაღალი (80/100/150/200) ან უფრო დაბალი (25/20/10/5), რათა იპოვოთ ოპტიმალური მნიშვნელობა სამუშაო დატვირთვისთვის. - დააყენეთ Rx/Tx ბეჭდების ზომები. ეთინსტრუმენტი -გ rx 4096 tx 4096
შენიშვნა
თუ ხედავთ Rx პაკეტის ვარდნას ethtool -S|-ით grep drop, შეეცადეთ შეამციროთ ბეჭდის ზომა <4096-მდე. შეეცადეთ იპოვოთ ოპტიმალური მნიშვნელობა სამუშაო დატვირთვისთვის, სადაც პაკეტები არ არის ჩამოშვებული. - დააყენეთ IRQ Affinity. გამოიყენეთ ბირთვები ლოკალური NIC-ისთვის, ან ბირთვის სპეციფიკური რუქა (სადაც # ბირთვი უდრის 1-ში მითითებული რიგების რაოდენობას 26 გვერდზე. systemctl stop irqbalance set_irq_affinity -X local ან set_irq_affinity -X
5.9.2 AMD EPYC
AMD EPYC პროცესორები არის მძლავრი პროცესორები, რომლებიც შექმნილია სერვერებისა და მონაცემთა ცენტრებისთვის, აგებულია AMD-ის Zen არქიტექტურაზე. ქვემოთ მოცემული პარამეტრები არის AMD-ის მე-4 თაობის EPYC სერიიდან.
რეკომენდებული BIOS პარამეტრები უმაღლესი შესრულებისთვის
- ჩართეთ მორგებული რეჟიმი, რათა მომხმარებლებს საშუალება მისცეთ შეცვალონ CPU-ის მუშაობა, ენერგიის მოხმარება და სხვა პარამეტრები. ეს ხელს უწყობს სისტემის სრულყოფილად რეგულირებას მუშაობის და ენერგოეფექტურობის საუკეთესო ბალანსისთვის.
- ჩართეთ ძირითადი მუშაობის გაძლიერება, რათა CPU-მ ავტომატურად გაზარდოს თავისი სიჩქარე უფრო ინტენსიური ამოცანების შესასრულებლად, საერთო მუშაობის გასაუმჯობესებლად.
- გამორთეთ გლობალური C-შტატის კონტროლი, რათა თავიდან აიცილოთ CPU-ს ენერგიის დაზოგვის უფრო ღრმა მდგომარეობები, რომლებიც ცნობილია როგორც C-სახელმწიფოები, რომლებსაც შეუძლიათ შეინარჩუნონ რეაგირება.
შენიშვნა
C- სახელმწიფოების გამორთვამ შეიძლება გამოიწვიოს ენერგიის დამატებითი მოხმარება და გაზარდოს თერმული ტემპერატურა. დააკვირდით ორივეს დატვირთვას. - ჩართეთ/გამორთეთ ერთდროული მრავალძაფის (SMT) CPU-ზე, სამუშაო დატვირთვის მოთხოვნებისა და შესრულების მიზნებიდან გამომდინარე. SMT არის Hyper Threading-ის ექვივალენტური Intel CPU-ებზე.
შენიშვნა
ოპტიმიზებული მუშაობისთვის იხილეთ Tuning i40e Driver Settings გვერდზე 13 და პლატფორმის Tuning (i40e არასპეციფიკური) გვერდზე 19 რეკომენდებული OS და ადაპტერის დონის რეგულირებისთვის.
ადაპტერის შეკვრა
Linux bonding არის ძლიერი ფუნქცია, რომელსაც შეუძლია მნიშვნელოვნად გააუმჯობესოს ქსელის მუშაობა, ჭარბი რაოდენობა და შეცდომების ტოლერანტობა სერვერის გარემოში. თუმცა, მნიშვნელოვანია აღინიშნოს, რომ ის მოითხოვს თავსებადი ქსელის აპარატურას და სათანადო კონფიგურაციას როგორც სერვერზე, ასევე გადამრთველზე გამართული ფუნქციონირებისთვის.
შემაკავშირებელ დრაივერი Linux-ში საშუალებას გაძლევთ დააგროვოთ მრავალი ფიზიკური ქსელის ინტერფეისი შეკრულ ინტერფეისში. ეს შეკრული ინტერფეისი ჩანს როგორც ერთი ვირტუალური ქსელის ინტერფეისი ოპერაციული სისტემისთვის და აპლიკაციებისთვის.
შენიშვნა
ბონდი არის ლოგიკური ინტერფეისი, ამიტომ შეუძლებელია CPU-ის მიახლოების დაყენება პირდაპირ ბონდის ინტერფეისზე (მაგ.ample, bond0). ანუ, მას არ აქვს პირდაპირი კონტროლი შეფერხების მართვაზე ან CPU-ს მსგავსებაზე. CPU-ს მიახლოება უნდა იყოს კონფიგურირებული იმ ფუძემდებლური ინტერფეისებისთვის, რომლებიც ბონდის ნაწილია.
Bonding უზრუნველყოფს ოპერაციების რამდენიმე რეჟიმს, თითოეულს აქვს საკუთარი მახასიათებლები.
რეჟიმი | ტიპი |
0 | მრგვალი რობინი |
1 | აქტიური სარეზერვო |
2 | XOR |
3 | მაუწყებლობა |
4 | LACP |
5 | გადაცემის დატვირთვის ბალანსი |
6 | ადაპტური დატვირთვის ბალანსი |
Linux-ში ბუნდის შესაქმნელად სხვადასხვა მეთოდი არსებობს. ერთ-ერთი ყველაზე გავრცელებული მეთოდია ქსელის კონფიგურაციის გამოყენება files (მაგample, /etc/network/ ინტერფეისები ან /etc/sysconfig/network-scripts/ifcfg-bondX).
კონფიგურაცია ქსელის კონფიგურაციის გამოყენებით Files
შემდეგი ნაბიჯები ქმნის შეკავშირებას ქსელის კონფიგურაციაში files.
- აირჩიეთ ორი ან მეტი NIC პორტი დასაკავშირებლად (მაგample, ethX და ethY)
- გახსენით NIC კონფიგურაცია Files ქვეშ /etc/sysconfig/network-scripts/ საჭირო NIC ინტერფეისისთვის (მაგ.ample, vi ifcfg-ethX და vi ifcfg-ethY) და დაურთოს შემდეგი ტექსტი:
MASTER=bondN [შენიშვნა: N არის მთელი რიცხვი ბონდის ნომრის აღსანიშნავად.] SLAVE=დიახ - შექმენით ბონდის ქსელის სკრიპტი file გამოყენებით vi /etc/sysconfig/networkscripts/ifcfg-bondN და შეიყვანეთ შემდეგი ტექსტი:
DEVICE=bondN [შენიშვნა: N არის მთელი რიცხვი ბონდის ნომრის აღსანიშნავად] ONBOOT=დიახ USERCTL=არა BOOTPROTO=dhcp (ან) არცერთი
IPADDR=200.20.2.4 [საჭიროა თუ BOOTPROTO=არცერთი] NETMASK=255.255.255.0 [საჭიროა თუ BOOTPROTO=არცერთი] NETWORK=200.20.2.0 [საჭიროა თუ BOOTPROTO=არცერთი] BROADCAST200.20.2.255=1რედ. BOOTPROTO=არცერთი] BONDING_OPTS=”რეჟიმი=100 miimon=XNUMX″
შენიშვნა
რეჟიმი შეიძლება იყოს ნებისმიერი მთელი რიცხვი 0-დან 6-მდე მოთხოვნიდან გამომდინარე. - გადატვირთეთ ქსელის სერვისები სერვისის ქსელის გადატვირთვის ან systemctl გადატვირთვის NetworkManager.service გამოყენებით
შესრულების პრობლემების მოგვარება
7.1 CPU გამოყენება
შეამოწმეთ CPU-ის გამოყენება თითო ბირთვზე, სანამ სამუშაო დატვირთვა მუშაობს.
გაითვალისწინეთ, რომ თითო ბირთვზე გამოყენება უფრო მეტად შეესაბამება შესრულებას, ვიდრე CPU-ს მთლიანი გამოყენება, რადგან ის იძლევა იდეას CPU-ის გამოყენების შესახებ ქსელის რიგში. თუ თქვენ გაქვთ მხოლოდ რამდენიმე თემა, რომელიც მუშაობს ქსელის ტრაფიკზე, მაშინ შესაძლოა მხოლოდ რამდენიმე ბირთვი იყოს გამოყენებული. თუმცა, თუ ეს ბირთვები 100%-ზეა, მაშინ თქვენი ქსელის გამტარუნარიანობა სავარაუდოდ შეზღუდულია CPU-ს გამოყენებით და დროა შეასრულოთ შემდეგი:
- დაარეგულირეთ IRQ მოდერაცია/რგოლის ზომა, როგორც დეტალურადაა აღწერილი შეწყვეტის მოდერაციაში.
- გაზარდეთ აპლიკაციების ძაფების რაოდენობა, რათა გადანაწილდეს CPU დატვირთვა მეტ ბირთვზე. თუ ყველა ბირთვი მუშაობს 100%-ზე, მაშინ თქვენი აპლიკაცია შეიძლება იყოს დაკავშირებული პროცესორთან და არა ქსელთან.
საყოველთაოდ ხელმისაწვდომი ინსტრუმენტები:
- ზედა
— დააჭირეთ 1-ს, რათა გააფართოვოთ CPU-ების სია და შეამოწმოთ რომელი მათგანი გამოიყენება.
— დააკვირდით გამოყენების დონეს.
— გაითვალისწინეთ, რომელი პროცესებია ჩამოთვლილი, როგორც ყველაზე აქტიური (სიის დასაწყისში). - mpstat
შემდეგი ყოფილიampბრძანების ხაზი ტესტირება მოხდა Red Hat Enterprise Linux 7.x-ზე.
ის აჩვენებს CPU-ს გამოყენებას თითო ბირთვზე (მთლიანი უმოქმედობის პროცენტის პოვნა და 100-ის გამოკლებით) და ხაზს უსვამს 80%-ზე მეტ მნიშვნელობებს წითლად. mpstat -P ALL 1 1 | grep -v საშუალო | კუდი -n +5 | ხელმძღვანელი -n -1 | awk '{ ბეჭდვა (100-$13)}' | egrep -color=ყოველთვის '[^\.][8-9][0-9][\.]?.*|^[8-9][0-9][\.]?.*| 100|' | სვეტი - perf top მოძებნეთ სად იხარჯება ციკლები.
7.2 i40e მრიცხველები
i40e დრაივერი გთავაზობთ მრიცხველების გრძელ სიას ინტერფეისის გამართვისა და მონიტორინგისთვის ethtool -S ethX ბრძანების მეშვეობით. შეიძლება სასარგებლო იყოს გამოსავლის ყურება სამუშაო დატვირთვის შესრულებისას და/ან მრიცხველის მნიშვნელობების შედარება დატვირთვის გაშვებამდე და მის შემდეგ.
- i40e მრიცხველების სრული ნაგავსაყრელის მისაღებად: ethtool -S ethX
- მხოლოდ ნულოვანი მრიცხველების საყურებლად: watch -d (ethtool -S ethX) | egrep -v :\ 0 | სვეტი
ზოგიერთი რამ უნდა მოძებნოთ: - rx_dropped ნიშნავს, რომ CPU არ ემსახურება ბუფერებს საკმარისად სწრაფად.
- port.rx_dropped ნიშნავს, რომ რაღაც არ არის საკმარისად სწრაფი სლოტ/მეხსიერების/ სისტემაში.
7.3 ქსელის მრიცხველები
შეამოწმეთ netstat -s დატვირთვის დაწყებამდე/შემდეგ.
Netstat აგროვებს ქსელის ინფორმაციას სისტემის ყველა ქსელური მოწყობილობიდან. აქედან გამომდინარე, შედეგებზე შეიძლება გავლენა იქონიოს ტესტირებადი ქსელის გარდა სხვა ქსელებიდან. netstat -s-ის გამომავალი შეიძლება იყოს Linux ოპერაციული სისტემის ან ბირთვის მუშაობის პრობლემების კარგი მაჩვენებელი. მიმართეთ ოპერაციული სისტემის ტუნინგის სახელმძღვანელოებს, როგორიცაა Red Hat Enterprise Linux Network Performance Tuning Guide, ოპერაციული სისტემის ზოგადი დარეგულირების შესახებ მეტი ინფორმაციის მისაღებად.
7.4 სისტემის ჟურნალები
შეამოწმეთ სისტემის ჟურნალები შეცდომებსა და გაფრთხილებებზე (/var/log/messages, dmesg).
7.5 Intel svr-info ინსტრუმენტი
Intel უზრუნველყოფს svr-info ინსტრუმენტს (იხ https://github.com/intel/svr-info) Linux-ისთვის, რომელიც იჭერს შესაბამის აპარატურულ და პროგრამულ დეტალებს სერვერიდან. svr-info გამომავალი შეიძლება იყოს ძალიან გამოსადეგი სისტემის შეფერხებების ან პარამეტრების/კონფიგურაციების იდენტიფიცირებისთვის, რომლებიც არ არის ოპტიმიზირებული სამუშაო დატვირთვისთვის. როდესაც გახსნით მხარდაჭერის ქეისს Intel-თან Ethernet-თან დაკავშირებული მუშაობის პრობლემებისთვის, დარწმუნდით, რომ შეიტანეთ svr-info გამომავალი (ტექსტი file) თითოეული Linux სერვერისთვის ტესტის კონფიგურაციაში.
- ჩამოტვირთეთ და დააინსტალირეთ svr-info:
wget -qO- https://github.com/intel/svr-info/releases/latest/download/svrinfo.tgz| tar xvz cd svr-info
./svr-info
> hostname.txt - შეაგროვეთ გამომავალი:
./svr-info > hostname.txt - მიამაგრეთ ერთი ტექსტი (.txt) file თითოეული სერვერისთვის თქვენს Intel-ის მხარდაჭერის შემთხვევაში ანალიზისთვის.
რეკომენდაციები შესრულების საერთო სცენარებისთვის
8.1 IP გადამისამართება
- განაახლეთ ბირთვი.
ზოგიერთმა ბოლოდროინდელმა დისტრო ბირთვმა გააუარესა მარშრუტიზაციის შესრულება მარშრუტიზაციის კოდში ბირთვის ცვლილებების გამო დაწყებული მარშრუტიზაციის ქეშის წაშლით უსაფრთხოების გამო. ბოლოდროინდელ დისტროს ბირთვებს უნდა ჰქონდეთ პატჩები, რომლებიც შეამსუბუქებენ ამ ცვლილებების ეფექტურობას და შეიძლება უზრუნველყონ გაუმჯობესებული შესრულება. - გამორთეთ ჰიპერთრედინგი (ლოგიკური ბირთვები).
- ბირთვის ჩატვირთვის პარამეტრების რედაქტირება.
— აიძულეთ iommu გამორთვა (intel_iommu=off ან iommu=off) ბირთვის ჩატვირთვის ხაზიდან, თუ არ არის საჭირო ვირტუალიზაციისთვის
— გამორთეთ ენერგიის მენეჯმენტი: processor.max_cstates=1 idle=poll pcie_aspm=off - შეზღუდეთ რიგების რაოდენობა, რომ იყოს ლოკალური სოკეტის ბირთვების რაოდენობის ტოლი (ამ ყოფილში 12ampლე). ethtool -L ethX კომბინირებული 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 არის Ethernet ინტერფეისი, რომელიც უნდა შეიცვალოს. - გამორთეთ ადაპტური შეფერხების მოდერაცია და დააყენეთ სტატიკური მნიშვნელობა. ethtool -C ethX ადაპტური-rx გამორთულია ადაპტური-tx გამორთული ethtool -C ethX rx-usecs 64 tx-usecs 64
შენიშვნა
პროცესორის ტიპისა და დატვირთვის მიხედვით, RX-ისა და TX-ის გაერთიანების პარამეტრები შეიძლება დარეგულირდეს გაუმჯობესებული შესრულებისთვის (ან ნაკლები ჩარჩოს დაკარგვისთვის).
- გამორთეთ firewall. sudo systemctl გათიშვა firewalld sudo systemctl გაჩერება 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-ისთვის.
- დაამაგრეთ საორიენტაციო პუნქტი 0-ზე ამოცანების ნაკრების გამოყენებით -c 0.
- გამორთეთ irqbalance systemctl stop irqbalance ან systemctl გამორთეთ irqbalance
- გაუშვით affinity სკრიპტი ბირთვებზე გასავრცელებლად. სცადეთ ადგილობრივი ან ყველა.
- გამორთეთ შეფერხების მოდერაცია. ethtool -C ethX rx-usecs 0 tx-usecs 0 ადაპტური-rx გამორთული ადაპტური-tx გამორთვა rxusecs- მაღალი 0
- რიგების რაოდენობის შეზღუდვა ლოკალურ სოკეტზე არსებული ბირთვების რაოდენობის ტოლი (ამ ყოფილში 32ampლე). 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 კვანძში. ამოცანების ნაკრები -გ
Intel ® Ethernet 700 სერია
Linux-ის შესრულების ტუნინგ სახელმძღვანელო
2024 წლის დეკემბერი
დოქ. No: 334019, რევ.: 1.2
დოკუმენტები / რესურსები
![]() |
Intel Ethernet 700 Series Linux Performance Tuning [pdf] მომხმარებლის სახელმძღვანელო 334019, Ethernet 700 Series Linux Performance Tuning, Ethernet 700 Series, Linux Performance Tuning, Performance Tuning, Tuning |