ซีรีส์ Intel® Ethernet 700
คู่มือการปรับแต่งประสิทธิภาพการทำงานของ Linux
กลุ่มเครือข่ายคลาวด์ NEX (NCNG)
ปรับปรุงครั้งที่ 1.2
เดือนธันวาคม 2024
ประวัติการแก้ไข
การแก้ไข | วันที่ | ความคิดเห็น |
1.2 | เดือนธันวาคม 2024 | · เพิ่มคำแนะนำการจัดการพลังงานเพิ่มเติม · เพิ่ม Intel* Turbo Boost · เพิ่ม Network Device Backlog · เพิ่มการกำหนดค่าและการปรับแต่งเฉพาะแพลตฟอร์ม · เพิ่มโปรเซสเซอร์ Intel* %eon* แบบปรับขนาดได้เจเนอเรชันที่ 4 · เพิ่ม AMD EPYC · อัปเดตความสามารถฮาร์ดแวร์ของระบบตรวจสอบ · อัปเดต iPerf2 · อัปเดต iPerf3 · อัปเดตคิว Tx/Rx · อัปเดตการกลั่นกรองการขัดจังหวะ · อัปเดตขนาดแหวน · อัปเดตการปรับแต่งแพลตฟอร์ม (i40e ไม่เฉพาะเจาะจง) · อัปเดตการตั้งค่า BIOS · อัปเดตการควบคุม C-State · อัปเดตการปรับขนาดความถี่ CPU · อัปเดตการตั้งค่าแอปพลิเคชั่น · อัปเดตระบบปฏิบัติการ/การตั้งค่าเคอร์เนล · อัปเดตการส่งต่อ IP · อัปเดตความหน่วงต่ำ |
เดือนสิงหาคม 2023 | การเปลี่ยนแปลงเอกสารนี้เกิดขึ้นดังนี้: · เพิ่มข้อมูลอ้างอิงที่เกี่ยวข้อง · เพิ่มการตรวจสอบให้แน่ใจว่าแพ็คเกจ DDP กำลังโหลดอย่างถูกต้อง · เพิ่ม iPerf2 · เพิ่ม iPerf3 · เพิ่ม netperf · อัปเดต IRQ Affinity · เพิ่มคิว Tx/Rx · อัปเดตขนาดแหวน · เพิ่มเฟรมจัมโบ้ · เพิ่มการเชื่อมต่ออะแดปเตอร์ · เพิ่มเครื่องมือ Intel svr-info |
|
1.0 | มีนาคม 2016 | รุ่นเปิดตัวครั้งแรก (สาธารณะของ Intel) |
การแนะนำ
คู่มือนี้จัดทำขึ้นเพื่อให้คำแนะนำในการปรับแต่งสภาพแวดล้อมเพื่อประสิทธิภาพการทำงานเครือข่ายที่ดีที่สุดโดยใช้ NIC Intel ® Ethernet 700 Series ในสภาพแวดล้อม 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:
คู่มือเทคโนโลยีการปรับแต่งอุปกรณ์แบบไดนามิก (DDP) ของ Intel ® Ethernet 700 Series
รายการตรวจสอบเบื้องต้น
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 - อัพเดตเฟิร์มแวร์
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 ที่มีให้สำหรับการ์ดนี้ไม่เพียงพอสำหรับประสิทธิภาพที่เหมาะสมที่สุด จำเป็นต้องใช้สล็อต PCI-Express x8 เพื่อประสิทธิภาพที่เหมาะสมที่สุด
หากข้อผิดพลาดนี้เกิดขึ้น ให้ย้ายอะแดปเตอร์ของคุณไปที่สล็อต PCIe v3.0 x8 ที่แท้จริงเพื่อแก้ไขปัญหา
2.4 ตรวจสอบความสามารถฮาร์ดแวร์ของระบบ
ที่อีเทอร์เน็ต 10 Gbps, 25 Gbps และ 40 Gbps มีข้อกำหนดขั้นต่ำของ CPU และระบบบางอย่าง โดยทั่วไปแล้ว โปรเซสเซอร์ระดับเซิร์ฟเวอร์สมัยใหม่และการกำหนดค่าหน่วยความจำที่เหมาะสมที่สุดสำหรับแพลตฟอร์มของคุณควรจะเพียงพอ แต่ความต้องการอาจแตกต่างกันไปขึ้นอยู่กับปริมาณงานของคุณ ควรเติมช่องหน่วยความจำทั้งหมดและเปิดใช้งานโหมดประสิทธิภาพหน่วยความจำใน BIOS ตรวจสอบว่า CPU และการกำหนดค่าหน่วยความจำของคุณสามารถรองรับระดับประสิทธิภาพเครือข่ายที่คุณต้องการสำหรับปริมาณงานของคุณได้หรือไม่
บันทึก
XL710 เป็นตัวควบคุม 40 GbE อะแดปเตอร์ 2 x 40 GbE ที่ใช้ตัวควบคุมนี้ไม่ได้มีวัตถุประสงค์ให้เป็น 2 x 40 GbE แต่เป็น 1 x 40 GbE ที่มีพอร์ตสำรองที่ใช้งานได้ เมื่อพยายามใช้การรับส่งข้อมูลแบบอัตราเส้นที่เกี่ยวข้องกับพอร์ตทั้งสอง สวิตช์ภายในจะอิ่มตัวและแบนด์วิดท์รวมระหว่างพอร์ตทั้งสองจะถูกจำกัดไว้ที่ SO Gbps ทั้งหมด
2.4.1 พารามิเตอร์การบูตเคอร์เนล
หากเปิดใช้งาน Intel® Virtualization Technology for Directed I/O (Intel® VT-d) ใน BIOS Intel ขอแนะนำให้ IOMMU อยู่ในโหมดพาสทรูเพื่อประสิทธิภาพเครือข่ายโฮสต์ที่ดีที่สุด วิธีนี้จะช่วยขจัดภาระ DMA บนทราฟฟิกโฮสต์ในขณะที่เปิดใช้งานเครื่องเสมือน (VM) เพื่อให้ยังคงได้รับประโยชน์จาก Intel® VT-d ซึ่งทำได้โดยเพิ่มบรรทัดต่อไปนี้ลงในพารามิเตอร์การบูตเคอร์เนล: fommu-pt
2.5 ตรวจสอบให้แน่ใจว่าแพ็คเกจ DDP กำลังโหลดอย่างถูกต้อง
ไดรเวอร์พื้นฐาน 140ea และ 140eb ไม่มีการสนับสนุนโดยตรงสำหรับ Dynamic Device Personalization (DDP) หากต้องการใช้ DDP กับอุปกรณ์ซีรีส์ 700 ผู้เชี่ยวชาญ DDPfile สามารถนำไปใช้กับแอปพลิเคชัน testpmd ได้
สำหรับรายละเอียดเพิ่มเติมเกี่ยวกับ DDP Profiles และวิธีการใช้โปร DDPfile ด้วย testpmd บนอุปกรณ์ซีรีส์ 700 โปรดดูคู่มือเทคโนโลยี Intel® Ethernet ซีรีส์ 700 Dynamic Device Personalization (DDP)
เพื่อตรวจสอบว่า DDP profile โหลดสำเร็จแล้ว:
testpmd> ddp รับรายการ 0 Profile หมายเลขคือ: 1
บันทึก
ถ้าโปรfile หมายเลขคือ 0 แสดงว่าไม่มีการโหลดแพ็กเกจ DDP ในกรณีที่มีข้อผิดพลาดในการโหลดแพ็กเกจ DDP อุปกรณ์จะตั้งค่าเป็นโหมดปลอดภัยโดยค่าเริ่มต้น และฟีเจอร์ประสิทธิภาพหลายอย่างจะไม่พร้อมใช้งาน หากมีข้อผิดพลาดเกี่ยวกับการโหลดแพ็กเกจ DDP จะทำให้เกิดปัญหาประสิทธิภาพ สำหรับขั้นตอนการแก้ไขปัญหา โปรดดูคู่มือเทคโนโลยีการปรับแต่งอุปกรณ์แบบไดนามิก (DDP) ของ Inte/* Ethernet 700 Series
การวัดประสิทธิภาพพื้นฐานและวิธีการปรับแต่ง
3.1 เกณฑ์มาตรฐานประสิทธิภาพเครือข่าย
ก่อนเริ่มการปรับแต่ง สิ่งสำคัญคือต้องมีการวัดประสิทธิภาพเครือข่ายพื้นฐานที่ดี โดยปกติแล้ว นอกเหนือจากการวัดประสิทธิภาพเบื้องต้นของแอปพลิเคชัน/เวิร์กโหลดเฉพาะของคุณแล้ว ควรใช้เกณฑ์มาตรฐานประสิทธิภาพเครือข่ายเพื่อตรวจสอบว่าอุปกรณ์เครือข่ายของคุณอยู่ในสถานะที่ดีด้วย
สำหรับการเพิ่มประสิทธิภาพระบบเดี่ยว netperf หรือ iperf และ NetPIPE ถือเป็นเครื่องมือโอเพ่นซอร์สฟรีที่มีประสิทธิภาพซึ่งช่วยให้คุณสามารถเน้นการเชื่อมต่อและวินิจฉัยปัญหาด้านประสิทธิภาพการทำงานได้
Netperf มีประสิทธิภาพในการทดสอบทั้งปริมาณงานและเวลาแฝง NetPIPE เป็นเครื่องมือเฉพาะด้านเวลาแฝง แต่สามารถคอมไพล์ได้กับสภาพแวดล้อมทุกประเภท
บันทึก
การทดสอบ TCP_RR ใน netperf คืนค่าความหน่วงเป็นค่าของธุรกรรมต่อวินาที ซึ่งเป็นค่าตัวเลขแบบไปกลับ สามารถคำนวณความหน่วงแบบทางเดียวได้โดยใช้สมการต่อไปนี้:
เวลาแฝง (usec) = (1⁄2) / [ธุรกรรม/วินาที] * 1,000,000
3.1.1 ไอเพอร์ฟ2
Intel แนะนำให้ใช้ iperf2 มากกว่า iperf3 สำหรับสถานการณ์การเปรียบเทียบประสิทธิภาพส่วนใหญ่ เนื่องจากใช้งานง่ายและรองรับเธรดหลายเธรดในอินสแตนซ์แอปพลิเคชันเดียว Intel ขอแนะนำให้ใช้งานด้วยตัวเลือก -P โดยมีเธรด 2-4 เธรดสำหรับการเชื่อมต่อ 25G และประมาณ 4-6 เธรดสำหรับการเชื่อมต่อ 40G
- ในการเรียกใช้การรับส่งข้อมูลแบบทิศทางเดียวจากไคลเอนต์ไปยังเซิร์ฟเวอร์: คำสั่งเซิร์ฟเวอร์ exampเล: iperf2 -s
คำสั่งไคลเอนต์เช่นampไฟล์: iperf2 -c -พี - การเรียกใช้การรับส่งข้อมูลแบบสองทิศทางจากไคลเอนต์ไปยังเซิร์ฟเวอร์ (และในทางกลับกัน) คำสั่งเซิร์ฟเวอร์ exampเล: iperf2 –s –p
คำสั่งไคลเอนต์เช่นampเลอ:
iperf2-c ภาษาไทย -พี -พี -–ฟูลดูเพล็กซ์ หรือ
iperf2-c ภาษาไทย -พี -พี –ดี
บันทึก
ตัวเลือก –full-duplex และ -d ใน iperf2 ช่วยให้ผู้ใช้สามารถทำการทดสอบแบบสองทิศทางได้ อย่างไรก็ตาม ตัวเลือก –full-duplex มุ่งเน้นที่การทดสอบแบบฟูลดูเพล็กซ์โดยเฉพาะ
บันทึก
เมื่อทำการทดสอบ iperf2 บนพอร์ตเซิร์ฟเวอร์หลายพอร์ต สามารถเพิ่มแฟล็ก -d ลงในคำสั่งเซิร์ฟเวอร์เพื่อรันเซสชันเซิร์ฟเวอร์ทั้งหมดในพื้นหลังจากหน้าต่างเทอร์มินัลเดียวกันได้ แฟล็ก -d ยังสามารถใช้ได้เมื่อคำสั่งเซิร์ฟเวอร์ถูกฝังไว้ในลูป for ในสคริปต์อีกด้วย
บันทึก
เมื่อรันการทดสอบทรูพุตเครือข่ายด้วยสตรีม/เธรดเดียว (เช่นample: P1) โปรเซสเซอร์ AMD อาจไม่สามารถให้ปริมาณงานได้ตามที่คาดหวัง โดยเฉพาะ NIC ที่มีแบนด์วิดท์สูงกว่า (หากความเร็วแบนด์วิดท์มากกว่า 25G) ดังนั้น จำเป็นต้องปักหมุดแอปพลิเคชันกับคอร์เฉพาะเพื่อให้ได้ปริมาณงานที่สูงขึ้น ดูการตั้งค่าแอปพลิเคชันที่หน้า 22
3.1.2 ไอเพอร์ฟ3
หากใช้ iperf3 จำเป็นต้องมีแอปพลิเคชันหลายอินสแตนซ์เพื่อดำเนินการ advantage ของคิวมัลติเธรด RSS และฮาร์ดแวร์ Intel แนะนำให้รันด้วยเซสชันแอปพลิเคชัน 2-4 เซสชันสำหรับการเชื่อมต่อ 25G และประมาณ 4-6 เซสชันสำหรับการเชื่อมต่อ 40G แต่ละเซสชันควรระบุค่าพอร์ต TCP ที่ไม่ซ้ำกันโดยใช้ตัวเลือก -p
- ในการรันการรับส่งข้อมูลแบบทิศทางเดียวจากไคลเอนต์ไปยังเซิร์ฟเวอร์:
คำสั่งเซิฟเวอร์เช่นampเลอ:
ไอเพอร์ฟ3-s-p
คำสั่งไคลเอนต์เช่นampเลอ:
iperf3-c แปลว่า -พี - ในการรันการรับส่งข้อมูลแบบสองทิศทางจากไคลเอนต์ไปยังเซิร์ฟเวอร์ (และในทางกลับกัน) ให้ทำดังนี้:
คำสั่งเซิฟเวอร์เช่นampเลอ:
ไอเพอร์ฟ3 –s –p
คำสั่งไคลเอนต์เช่นampไฟล์: iperf3 -c -พี -พี –-บิดีร์ - หากต้องการเริ่มอินสแตนซ์หลายอินสแตนซ์ (เธรด) ของ iperf3 แนะนำให้ใช้ for-loop เพื่อแมปเธรดกับพอร์ต TCP และรัน iperf3 ในพื้นหลังโดยใช้ & เพื่อสร้างกระบวนการหลายรายการพร้อมกัน
คำสั่งเซิฟเวอร์เช่นample, เริ่ม 4 เธรด: port=””; สำหรับ i ใน {0..3}; ทำ port=520$i; bash -c “iperf3 -s -p $port &”; เสร็จแล้ว; คำสั่งไคลเอนต์ example, เริ่มต้น 4 เธรด – ทดสอบการส่งสัญญาณ port=””; สำหรับ i ใน {0..3}; ทำ port=520$i; bash -c “iperf3 -c $serverIP -p $port &”; เสร็จแล้ว; คำสั่งไคลเอนต์ example, เริ่มต้น 4 เธรด – รับการทดสอบ port=””; สำหรับ i ใน {0..3}; ทำ 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 เป็นตัวเลือกที่แข็งแกร่งสำหรับการทดสอบทั้งปริมาณงานและความหน่วง
- การทดสอบ TCP_STREAM ใน netperf วัดความสามารถในการรับส่งข้อมูลของอุปกรณ์ คำสั่งเซิร์ฟเวอร์ example: คำสั่ง netserver Client เช่นampไฟล์: netperf -t TCP_STREAM -l 30 -H
- การทดสอบ TCP_RR ใน netperf คืนค่าความหน่วงเป็นค่าของธุรกรรมต่อวินาที ซึ่งเป็นค่าตัวเลขแบบไปกลับ ขอแนะนำให้ใช้ตัวเลือก -T x,x โดยที่ x คือ CPU ของอุปกรณ์ภายในเครื่อง ความหน่วงทางเดียวสามารถคำนวณได้โดยใช้คำสั่ง: Latency(usec)=(1⁄2)/ [Transactions/sec]*1,000,\ Serveramp: เน็ตเซิร์ฟเวอร์
คำสั่งไคลเอนต์เช่นampไฟล์: netperf -t TCP_RR -l 30 -H -ตx,ตx - หากต้องการเริ่มอินสแตนซ์ (เธรด) หลายอินสแตนซ์ของ netperf แนะนำให้ใช้ for-loop เพื่อแมปเธรดกับพอร์ต TCP และรัน netperf ในพื้นหลังโดยใช้ & เพื่อสร้างกระบวนการหลายรายการพร้อมกัน
คำสั่งเซิฟเวอร์เช่นampเล เริ่ม 8 กระทู้:
พอร์ต=””; สำหรับ i ใน {0..7}; ทำพอร์ต=520$i; bash -c “netserver -L $serverIP -p $port &”; เสร็จแล้ว;
คำสั่งไคลเอนต์เช่นample, เริ่ม 8 เธรด: port=””; สำหรับ i ใน {0..7}; ทำ port=520$i; bash -c “netperf -H $serverIP -p $port -t TCP_STREAM -l 30 &”; เสร็จแล้ว;
3.2 วิธีการปรับแต่ง
เน้นที่การเปลี่ยนแปลงการปรับแต่งทีละอย่างเพื่อให้คุณทราบว่าการเปลี่ยนแปลงแต่ละครั้งส่งผลต่อการทดสอบของคุณอย่างไร ยิ่งคุณมีระเบียบวิธีในการปรับแต่งมากเท่าไร การระบุและแก้ไขสาเหตุของปัญหาคอขวดด้านประสิทธิภาพก็จะง่ายขึ้นเท่านั้น
การปรับแต่งการตั้งค่าไดรเวอร์ i40e
4.1 ความสัมพันธ์ของ IRQ
การกำหนดค่าความสัมพันธ์ IRQ เพื่อให้การขัดจังหวะสำหรับคิวเครือข่ายที่แตกต่างกันมีความสัมพันธ์กับคอร์ CPU ที่แตกต่างกันอาจส่งผลกระทบอย่างมากต่อประสิทธิภาพ โดยเฉพาะการทดสอบทรูพุตแบบมัลติเธรด
หากต้องการกำหนดค่าความสัมพันธ์ IRQ ให้หยุด irqbalance จากนั้นใช้สคริปต์ set_irq_affinity จากแพ็กเกจต้นทาง i40e หรือปักหมุดคิวด้วยตนเอง ปิดใช้งานตัวปรับสมดุล IRQ ในพื้นที่ผู้ใช้เพื่อเปิดใช้งานการปักหมุดคิว:
- systemctl ปิดการใช้งาน irqbalance
- systemctl หยุด irqbalance
การใช้สคริปต์ set_irq_affinity จากแพ็กเกจต้นทาง i40e (แนะนำ): - เพื่อใช้คอร์ทั้งหมด:
[path-to-i40epackage]/scripts/set_irq_affinity -X ethX ทั้งหมด - ในการใช้แกนหลักบนซ็อกเก็ต NUMA ในพื้นที่เท่านั้น: [path-to-i40epackage]/scripts/set_irq_affinity -X local ethX
- คุณสามารถเลือกช่วงของคอร์ได้ หลีกเลี่ยงการใช้ cpu0 เนื่องจาก cpu40 จะทำงานตามกำหนดเวลา [path-to-i1epackage]/scripts/set_irq_affinity 2-XNUMX ethX
บันทึก
สคริปต์ Affinity จะเปิดใช้งาน Transmit Packet Steering (XPS) เป็นส่วนหนึ่งของกระบวนการตรึงเมื่อระบุตัวเลือก -x เมื่อเปิดใช้งาน XPS Intel ขอแนะนำให้คุณปิดใช้งาน irqbalance เนื่องจากตัวปรับสมดุลเคอร์เนลที่มี XPS อาจทำให้ประสิทธิภาพการทำงานไม่แน่นอน สคริปต์ Affinity จะปิดใช้งาน XPS เมื่อระบุตัวเลือก -X การปิดใช้งาน XPS และเปิดใช้งานคิวสมมาตรจะเป็นประโยชน์สำหรับเวิร์กโหลดที่ประสิทธิภาพการทำงานสูงสุดจะเกิดขึ้นเมื่อการรับส่งข้อมูล Tx และ Rx ได้รับบริการในคู่คิวเดียวกัน
การกำหนดค่าคิวสมมาตรใน Linux เกี่ยวข้องกับการปรับแต่งพารามิเตอร์ไดรเวอร์อินเทอร์เฟซเครือข่ายเพื่อเปิดใช้งานคิวการรับสมมาตร (Rx) และคิวการส่งสมมาตร (Tx) สำหรับอะแดปเตอร์เครือข่ายที่รองรับ
บันทึก
- คิวสมมาตรเป็นคุณลักษณะเครือข่ายขั้นสูง และอะแดปเตอร์หรือไดรเวอร์เครือข่ายซีรีส์ 700 บางส่วนไม่รองรับคุณลักษณะดังกล่าว
- ตรวจสอบให้แน่ใจว่าคุณมีไดรเวอร์และการสนับสนุนฮาร์ดแวร์ที่จำเป็นก่อนที่จะพยายามกำหนดค่าคิวสมมาตร
ในการกำหนดค่าคิวสมมาตร ให้ทำตามขั้นตอนทั่วไปเหล่านี้:
- แก้ไขการกำหนดค่าอินเทอร์เฟซเครือข่าย File: ใช้โปรแกรมแก้ไขข้อความ (เช่นample, vi, nano หรือ gedit) เพื่อแก้ไขการกำหนดค่าอินเทอร์เฟซเครือข่าย file. การ file โดยทั่วไปจะอยู่ภายใต้ไดเร็กทอรี /etc/sysconfig/network-scripts/ และมีชื่อเช่น ifcfg-ethX โดยที่ ethX คือชื่ออินเทอร์เฟซเครือข่ายของคุณ
- เพิ่มพารามิเตอร์คิวแบบสมมาตร เพิ่มบรรทัดต่อไปนี้ลงในการกำหนดค่าอินเทอร์เฟซเครือข่าย file: ETHTOOL_OPTS=”คิว rx 8 คิว tx 8″
- เริ่มบริการเครือข่ายใหม่
หลังจากทำการเปลี่ยนแปลงแล้ว ให้รีสตาร์ทบริการเครือข่ายเพื่อใช้การกำหนดค่าใหม่ 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, 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:
- เพื่อแสดงความสัมพันธ์ IRQ สำหรับคอร์ทั้งหมด: /สคริปต์/set_irq_affinity -s ethX
- เพื่อแสดงเฉพาะแกนบนซ็อกเก็ต NUMA ในพื้นที่: /scripts/set_irq_affinity -s ethX ในพื้นที่
- คุณสามารถเลือกช่วงคอร์ได้: /สคริปต์/set_irq_affinity -s 40-0-8,16 ethX
บันทึก
สคริปต์ set_irq_affinity รองรับแฟล็ก -s ในไดรเวอร์ i40e เวอร์ชัน 2.16.11 ขึ้นไป
4.2 คิว Tx/Rx
จำนวนคิวเริ่มต้นที่เปิดใช้งานสำหรับพอร์ตอีเทอร์เน็ตแต่ละพอร์ตโดยไดรเวอร์เมื่อเริ่มต้นระบบจะเท่ากับจำนวน CPU ทั้งหมดที่มีในแพลตฟอร์ม ซึ่งวิธีนี้ใช้ได้ดีกับแพลตฟอร์มและการกำหนดค่าเวิร์กโหลดต่างๆ อย่างไรก็ตาม ในแพลตฟอร์มที่มีจำนวนคอร์สูงและ/หรือความหนาแน่นของพอร์ตอีเทอร์เน็ตสูง การกำหนดค่านี้สามารถทำให้เกิดการแย่งชิงทรัพยากรได้ ดังนั้น ในบางกรณี อาจจำเป็นต้องปรับเปลี่ยนค่าเริ่มต้นสำหรับแต่ละพอร์ตในระบบ
จำนวนคิว Tx/Rx เริ่มต้นอาจแตกต่างกันไปขึ้นอยู่กับรุ่นและเวอร์ชันไดรเวอร์เฉพาะ จำนวนคิวสามารถปรับได้โดยใช้คำสั่ง ethtool -L ที่แสดงไว้ด้านล่าง
บันทึก
ในกรณีเหล่านี้ Intel ขอแนะนำให้คุณลดจำนวนคิวเริ่มต้นสำหรับแต่ละพอร์ตให้เหลือไม่เกินจำนวน CPU ที่มีอยู่ในโหนด NUMA ในพื้นที่ของพอร์ตอะแดปเตอร์ ในบางกรณี เมื่อพยายามปรับสมดุลทรัพยากรในการใช้งานที่มีจำนวนพอร์ตสูง อาจจำเป็นต้องลดจำนวนนี้ลงไปอีก
การปรับเปลี่ยนการกำหนดค่าคิว:
ตัวอย่างต่อไปนี้ample ตั้งค่าพอร์ตเป็นคิว Tx/Rx 32: ethtool -L ethX รวม 32
Exampเอาต์พุต:
ethtool-l ethX เป็นเครื่องมือ
พารามิเตอร์ช่องสัญญาณสำหรับ ethX: ค่าสูงสุดที่ตั้งไว้ล่วงหน้า:
รับ: 96
เท็กซัส: 96
อื่นๆ: 1
รวม: 96
การตั้งค่าฮาร์ดแวร์ปัจจุบัน:
รับ: 0
เท็กซัส: 0
อื่นๆ: 1
รวม: 32
4.3 การขัดจังหวะการควบคุม
การปรับระดับการขัดจังหวะแบบปรับได้นั้นเปิดใช้งานตามค่าเริ่มต้น และได้รับการออกแบบมาเพื่อให้มีแนวทางที่สมดุลระหว่างการใช้ CPU ต่ำและประสิทธิภาพสูง อย่างไรก็ตาม คุณอาจลองปรับการตั้งค่าการขัดจังหวะด้วยตนเองเพื่อให้เหมาะกับกรณีการใช้งานของคุณ
ช่วง 0-235 ไมโครวินาทีให้ช่วงที่มีประสิทธิภาพ 4,310 ถึง 250,000 การขัดจังหวะต่อวินาที ค่าของ rx-μsecs-high สามารถตั้งค่าได้โดยไม่ขึ้นกับ rx-μsecs และ tx-μsecs ในคำสั่ง ethtool เดียวกัน และยังไม่ขึ้นกับอัลกอริธึมการกลั่นกรองการขัดจังหวะแบบปรับตัว ฮาร์ดแวร์พื้นฐานรองรับความละเอียดในช่วง 2 ไมโครวินาที ดังนั้นค่าที่อยู่ติดกันอาจส่งผลให้มีอัตราการขัดจังหวะเท่ากัน
- วิธีปิดการทำงานของการขัดจังหวะแบบปรับได้: ethtool -C ethX adaptive-rx off adaptive-tx off
- วิธีเปิดใช้งานการควบคุมการขัดจังหวะแบบปรับได้: ethtool -C ethX adaptive-rx on adaptive-tx on
จุดเริ่มต้นที่ดีสำหรับการปรับแต่งทั่วไปคือ 84 μs หรือ ~12000 interrupts/s หากคุณเห็นตัวนับ rx_dropped ทำงานระหว่างการรับส่งข้อมูล (โดยใช้ ethtool -S ethX) แสดงว่า CPU ของคุณช้าเกินไป บัฟเฟอร์จากขนาดวงแหวนของอะแดปเตอร์ไม่เพียงพอ (ethtool -G) ที่จะเก็บแพ็กเก็ตไว้ได้ 84 μs หรือต่ำกว่าอัตราการขัดจังหวะ
- หากต้องการตั้งค่าการขัดจังหวะให้มีค่าคงที่ที่ 84 μs ระหว่างการขัดจังหวะ (12000 การขัดจังหวะ/วินาที): ethtool -C ethX adaptive-rx off adaptive-tx off rx-usecs 84 tx-usecs 84 ค่าถัดไปที่จะลองใช้ หากคุณไม่ได้ใช้ CPU อย่างเต็มที่คือ 62 μs ซึ่งจะใช้ CPU มากขึ้น แต่ให้บริการบัฟเฟอร์ได้เร็วขึ้น และต้องใช้ตัวระบุจำนวนน้อยลง (ขนาดวงแหวน ethtool -G)
- ตั้งค่าการควบคุมการขัดจังหวะให้มีอัตราการขัดจังหวะคงที่ที่ 62 เซสเซกระหว่างการขัดจังหวะ (16000 การขัดจังหวะ/วินาที) ethtool -C ethX adaptive-rx off adaptive-tx off rx-usecs 62 tx-usecs 62
หากตัวนับ rx_dropped เพิ่มขึ้นระหว่างการรับส่งข้อมูล (โดยใช้ ethtool -S ethX) แสดงว่าคุณมี CPU ที่ช้าเกินไป บัฟเฟอร์จากขนาดวงแหวนของอะแดปเตอร์ไม่เพียงพอ (ethtool -G) หรืออัตราการขัดจังหวะต่ำเกินไป หากคุณไม่ได้ใช้ CPU อย่างเต็มที่ คุณสามารถเพิ่มอัตราการขัดจังหวะได้โดยลดค่า ITR วิธีนี้ใช้ CPU มากขึ้น แต่ให้บริการบัฟเฟอร์ได้เร็วขึ้น และต้องใช้ตัวระบุน้อยลง (ขนาดวงแหวน ethtool -G)
หาก CPU ของคุณทำงานที่ 100% ก็ไม่แนะนำให้เพิ่มอัตราการขัดจังหวะ ในบางสถานการณ์ เช่น เวิร์กโหลดที่ CPU ผูกมัด คุณอาจต้องการเพิ่มค่า μs เพื่อให้สามารถใช้งาน CPU ได้นานขึ้นสำหรับแอปพลิเคชันอื่น
หากคุณต้องการประสิทธิภาพความล่าช้าต่ำและ/หรือมี CPU มากพอที่จะใช้ในการประมวลผลเครือข่าย คุณสามารถปิดการใช้งานการควบคุมการขัดจังหวะทั้งหมด ซึ่งจะทำให้การขัดจังหวะสามารถดำเนินการได้เร็วที่สุดเท่าที่จะเป็นไปได้ - การปิดใช้งานการควบคุมการขัดจังหวะ ethtool -C ethX adaptive-rx off adaptive-tx off 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) เพื่อค้นหาค่าที่เหมาะสมที่สุดสำหรับเวิร์กโหลด
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
บันทึก
หากต้องการแก้ไขการสูญเสียแพ็กเก็ต Rx ที่พบด้วยคำสั่ง ethtool -S ethX|grep drop ให้พิจารณาเพิ่มขนาดวงแหวนเป็น 4096 ทำการทดลองเพื่อค้นหาการตั้งค่าที่ดีที่สุดสำหรับเวิร์กโหลด แต่ระวังการใช้หน่วยความจำมากเกินไปหากใช้ค่าที่สูงกว่านี้
4.5 การควบคุมการไหล
การควบคุมการไหลของเลเยอร์ 2 อาจส่งผลกระทบต่อประสิทธิภาพของ TCP อย่างมาก และขอแนะนำให้ปิดใช้งานสำหรับเวิร์กโหลดส่วนใหญ่ ข้อยกเว้นที่อาจเกิดขึ้นคือปริมาณการรับส่งข้อมูลแบบกระจัดกระจายซึ่งการกระจัดกระจายนั้นไม่ได้ใช้เวลานาน
การควบคุมการไหลถูกปิดใช้งานตามค่าเริ่มต้น
- เพื่อเปิดใช้งานการควบคุมการไหล: ethtool -A ethX rx on tx on
- การปิดการใช้งานการควบคุมการไหล: ethtool -A ethX rx off tx off
บันทึก
คุณต้องมีพันธมิตรลิงก์ที่มีความสามารถในการควบคุมการไหลจึงจะสามารถเปิดใช้งานการควบคุมการไหลได้สำเร็จ
4.6 เฟรมจัมโบ้
เมื่อสภาพแวดล้อมการรับส่งข้อมูลที่คาดไว้ประกอบด้วยข้อมูลจำนวนมากที่ถูกถ่ายโอน อาจเป็นประโยชน์ที่จะเปิดใช้งานฟีเจอร์จัมโบ้เฟรม การรองรับจัมโบ้เฟรมเปิดใช้งานได้โดยการเปลี่ยนหน่วยการส่งสูงสุด (MTU) เป็นค่าที่มากกว่าค่าเริ่มต้น 1500 ซึ่งจะทำให้สามารถถ่ายโอนข้อมูลในแพ็คเก็ตขนาดใหญ่ภายในสภาพแวดล้อมเครือข่ายได้ การตั้งค่านี้อาจปรับปรุงปริมาณงานและลดการใช้ CPU สำหรับเวิร์กโหลด I/O ขนาดใหญ่ อย่างไรก็ตาม อาจส่งผลกระทบต่อแพ็คเก็ตขนาดเล็กหรือเวิร์กโหลดที่ไวต่อความล่าช้า
บันทึก
ต้องกำหนดค่าเฟรมจัมโบ้หรือการตั้งค่า MTU ขนาดใหญ่ให้ถูกต้องในสภาพแวดล้อมเครือข่ายของคุณ
ใช้คำสั่ง ifconfig เพื่อเพิ่มขนาด MTU ตัวอย่างเช่นample ให้ใส่ข้อความต่อไปนี้ โดยที่ คือหมายเลขอินเทอร์เฟซ: ifconfig mtu 9000ขึ้นไป
นอกจากนี้คุณยังสามารถใช้คำสั่ง ip ดังต่อไปนี้: ip link set mtu 9000 dev ตั้งค่าลิงค์ ip dev
การปรับแต่งแพลตฟอร์ม (i40e ไม่เฉพาะเจาะจง)
5.1 การตั้งค่าไบออส
- เปิดใช้งาน Intel® VT-d สำหรับเวิร์กโหลดเสมือนจริง
- ไฮเปอร์เธรดดิ้ง (โปรเซสเซอร์เชิงตรรกะ) อาจส่งผลต่อประสิทธิภาพการทำงาน ลองเปิดหรือปิดไฮเปอร์เธรดดิ้งสำหรับเวิร์กโหลดของคุณ
- Intel® Turbo Boost ช่วยให้คอร์ CPU ทำงานที่ความถี่สูงกว่าความถี่พื้นฐานของ CPU การเปิดใช้งาน Intel® Turbo Boost จะช่วยปรับปรุงประสิทธิภาพสำหรับเวิร์กโหลดจำนวนมาก แต่จะใช้พลังงานมากขึ้นเพื่อให้คอร์ทำงานที่ความถี่ที่สูงขึ้น ทดลองใช้ Turbo Boost ปิด/เปิดสำหรับเวิร์กโหลดของคุณ
บันทึก
ไม่รับประกันความถี่เทอร์โบหากแพลตฟอร์มกำลังใช้งาน CPU โดยรวมสูง ความถี่เทอร์โบคอร์ที่สูงขึ้นจะลดลงเมื่อการใช้งาน CPU โดยรวมเพิ่มขึ้น
5.2 การจัดการพลังงาน
การจัดการพลังงานอาจส่งผลกระทบต่อประสิทธิภาพการทำงาน โดยเฉพาะในเวิร์กโหลดที่มีความล่าช้าต่ำ หากประสิทธิภาพมีความสำคัญมากกว่าการลดการใช้พลังงาน Intel ขอแนะนำให้คุณลองจำกัดผลกระทบของการจัดการพลังงาน มีหลายวิธีในการจำกัดการจัดการพลังงานโดยใช้เครื่องมือระบบปฏิบัติการ การตั้งค่า BIOS และพารามิเตอร์การบูตเคอร์เนล เลือกวิธีและระดับที่ดีที่สุดเพื่อให้เหมาะกับสภาพแวดล้อมของคุณ
5.2.1 การควบคุมสถานะ C
การจำกัดการเข้า C-state ให้เป็น CO หรือ C1 จะช่วยปรับปรุงประสิทธิภาพการทำงานและเพิ่มการใช้พลังงาน
การปิดใช้งานรายการสถานะ C6 ของแพ็คเกจ CPU จะช่วยปรับปรุงประสิทธิภาพของเครือข่ายได้ อย่างไรก็ตาม การทำเช่นนี้จะเพิ่มการใช้พลังงาน
มีตัวเลือกให้เลือกดังนี้:
- ควบคุมรายการ C-state แบบไดนามิก:
เปิด
/dev/cpu_dma_latency และเขียนค่าเวลาแฝงสูงสุดที่อนุญาตลงไป
บันทึก
มีโปรแกรมขนาดเล็กชื่อ cpudmalatency.c ที่สามารถดาวน์โหลดได้จากชุมชนโอเพนซอร์ส คอมไพล์และรันจากบรรทัดคำสั่งเพื่อดำเนินการดังกล่าวโดยเฉพาะ
ตัวอย่างต่อไปนี้ample อนุญาตให้มีเวลาปลุก 1 μs และอนุญาตให้เข้า C5 ได้: cpudmalatency XNUMX &
- จำกัดค่า C-state สูงสุดในการตั้งค่าการบูตเคอร์เนล:
สำหรับ CPU ของ Intel: intel_idle.max_cstates=1
สำหรับ CPU ที่ไม่ใช่ของ Intel: processor.max_cstates=1 - ใช้คำสั่ง cpupower เพื่อตรวจสอบและปิดใช้งานสถานะ CPU C6: ตรวจสอบ: cpupower monitor หรือ cpupower idle-info
ปิดใช้งาน C6: cpupower idle-set -d3 หรือ
ปิดใช้งาน C-States: cpupower idle-set -D0
หมายเหตุ:
- ปิดใช้งาน C-state บน CPU หากเซิร์ฟเวอร์มีโปรเซสเซอร์ Intel® Xeon® Scalable รุ่นที่ 4 ของ Intel® เมื่อเปิดใช้งานหรือปิดใช้งาน Hyper Threading การปิดใช้งานสถานะว่าง (-D0) จะป้องกันไม่ให้คอร์เข้าสู่สถานะพลังงานต่ำในช่วงเวลาว่าง และลดเวลาแฝงสำหรับ CPU ในการเปลี่ยนระหว่างสถานะว่างและสถานะใช้งาน
- การจัดการพลังงานของโปรเซสเซอร์ Intel® Xeon® Scalable รุ่นที่ 4 ของ Intel® นั้นเข้มงวดมาก หากต้องการหลีกเลี่ยงไม่ให้คอร์เข้าสู่สถานะพลังงานต่ำ ให้ลองลดจำนวนคอร์ที่ใช้งานเพื่อให้คอร์ทำงานได้นานขึ้น (ethtool -L รวมกัน ) นอกจากนี้ ให้ผูกการขัดจังหวะกับคอร์เฉพาะโดยใช้ set irq affinity (ส่วนใหญ่มักจะใช้ -x local หรือรายการคอร์ CPU) และให้แน่ใจว่าเวิร์กโหลดทำงานบนคอร์เดียวกันนั้นด้วย tasket หรือ numactl วิธีนี้จะช่วยปรับปรุงประสิทธิภาพการทำงานโดยทำให้คอร์ทำงานอยู่และเพิ่มประสิทธิภาพการจัดการการขัดจังหวะ
เปิดใช้งาน C6:
cpupower ตั้งค่าว่าง -d3
เปิดใช้งาน C-States:
cpupower idle-set -E
- อีกวิธีหนึ่งคือใช้เครื่องมือปรับแต่ง (รวมอยู่ในระบบปฏิบัติการ Linux หลายรุ่น) เพื่อตั้งค่าประสิทธิภาพการทำงานfile- โปรเหล่านี้files ปรับเปลี่ยนการตั้งค่าระบบปฏิบัติการหลายๆ อย่างซึ่งอาจส่งผลต่อประสิทธิภาพการทำงานของแอปพลิเคชันต่างๆ ได้ พบว่าประสิทธิภาพการรับส่งข้อมูลผ่านเครือข่ายfile ช่วยปรับปรุงภาระงานส่วนใหญ่
ตรวจสอบ:
ปรับใช้งาน adm
ชุด:
ปรับแต่ง-adm profile การรับส่งข้อมูลผ่านเครือข่าย
บันทึก
บริการที่ปรับแต่งจะต้องทำงานสำหรับคำสั่งข้างต้น หากต้องการตรวจสอบ/รีสตาร์ท ให้ปรับแต่ง: systemctl status tuned systemctl restart tuned
คุณสามารถไม่อนุญาตให้มีรายการ C-state ใด ๆ ได้โดยเพิ่มสิ่งต่อไปนี้ลงในบรรทัดการบูตเคอร์เนล:
ว่าง=สำรวจความคิดเห็น - จำกัดสถานะ 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 การปรับขนาดความถี่ซีพียู
การปรับขนาดความถี่ซีพียู (หรือการปรับขนาดความเร็วซีพียู) เป็นเทคนิคการจัดการพลังงานของ Linux ซึ่งความเร็วสัญญาณนาฬิกาของระบบจะถูกปรับแบบ on-the-fly เพื่อประหยัดพลังงานและความร้อน เช่นเดียวกับ C-state วิธีนี้อาจทำให้เกิดความล่าช้าที่ไม่ต้องการบนการเชื่อมต่อเครือข่าย
เครื่องมือ cpupower ยังใช้ตรวจสอบและปรับเปลี่ยนค่าเริ่มต้นและขีดจำกัดประสิทธิภาพของ CPU ได้อีกด้วย:
- ตรวจสอบ: ตรวจสอบพลังงานซีพียูหรือ
- ตั้งค่า CPU ให้เป็นโหมดประสิทธิภาพ: cpupower frequency-set -g performance
บันทึก
การปรับเปลี่ยนขีดจำกัดความถี่ CPU อาจส่งผลกระทบต่อเวิร์กโหลดหลายอย่าง และอาจปิดใช้งานฟีเจอร์อื่นๆ เช่น โหมดเทอร์โบ CPU
หากต้องการปิดการใช้งานการปรับขนาดความถี่ CPU ให้ปิดการใช้งานบริการพลังงาน CPU โดยใช้คำสั่งต่อไปนี้:
systemctl หยุดการทำงานของ cpupower.service
systemctl ปิดใช้งาน cpupower.service
5.2.4 คำแนะนำการจัดการพลังงานเพิ่มเติม
รายละเอียดเพิ่มเติมมีอยู่ในเอกสารระดับสูงนี้view ของฟีเจอร์การจัดการพลังงานมากมายในโปรเซสเซอร์ Intel® Xeon® Scalable รุ่นที่ 3 รวมถึงแนวทางเกี่ยวกับวิธีการรวมฟีเจอร์เหล่านี้ในระดับแพลตฟอร์ม: https://networkbuilders.intel.com/solutionslibrary/power-management-technologyoverview-technology-guide
5.3 โปรเซสเซอร์ Intel® Turbo Boost
Intel® Turbo Boost ช่วยให้โปรเซสเซอร์ทำงานเร็วขึ้นเมื่อจำเป็น แต่อาจใช้พลังงานเพิ่มเติม การปิด Turbo Boost จะทำให้โปรเซสเซอร์ทำงานด้วยความเร็วคงที่ ช่วยให้คุณมีประสิทธิภาพที่สม่ำเสมอสำหรับเวิร์กโหลดเฉพาะ
5.4 ไฟร์วอลล์
ไฟร์วอลล์อาจส่งผลกระทบต่อประสิทธิภาพ โดยเฉพาะประสิทธิภาพด้านความล่าช้า
ปิดใช้งาน iptables/firewalld หากไม่จำเป็น
5.5 การตั้งค่าแอปพลิเคชัน
เธรดเดียว (ซึ่งสอดคล้องกับคิวเครือข่ายเดียว) มักไม่เพียงพอที่จะบรรลุแบนด์วิดท์สูงสุด สถาปัตยกรรมแพลตฟอร์มบางอย่าง เช่น AMD มีแนวโน้มที่จะทิ้งแพ็กเก็ต Rx มากขึ้นด้วยเธรดเดียวเมื่อเทียบกับแพลตฟอร์มที่ใช้โปรเซสเซอร์บนพื้นฐาน Intel
พิจารณาใช้เครื่องมือเช่น tasket หรือ 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 MB):
sysctl-w net.core.rmem_max=16777216 สูงสุด
sysctl-w net.core.wmem_max=16777216 สูงสุด = XNUMX
ขนาดบัฟเฟอร์ซ็อกเก็ต เรียกอีกอย่างว่าบัฟเฟอร์รับ (rmem) และบัฟเฟอร์ส่ง (wmem) เป็นพารามิเตอร์ของระบบที่ระบุจำนวนหน่วยความจำที่สำรองไว้สำหรับการรับส่งข้อมูลเครือข่ายขาเข้าและขาออก
การรัน sysctl โดยไม่มีอาร์กิวเมนต์ -w จะแสดงรายการพารามิเตอร์พร้อมการตั้งค่าปัจจุบัน
การตั้งค่าสแต็ค | คำอธิบาย |
ค่าเริ่มต้นของ net.core.rmem | ขนาดหน้าต่างรับค่าเริ่มต้น |
ค่าเริ่มต้น net.core.wmem | ขนาดหน้าต่างการส่งเริ่มต้น |
เน็ต.คอร์.อาร์เอ็มเอ็ม_แม็กซ์ | ขนาดหน้าต่างรับสูงสุด |
เน็ต.คอร์.wmem_แม็กซ์ | ขนาดหน้าต่างการส่งสูงสุด |
เน็ต.คอร์.ออปเมม_แม็กซ์ | บัฟเฟอร์หน่วยความจำตัวเลือกสูงสุด |
บันทึกการคั่งค้างของ net.core.netdev_max | มีแพ็กเก็ตที่ยังไม่ได้ประมวลผลค้างอยู่ก่อนที่เคอร์เนลจะเริ่มลดลง |
เน็ต.ipv4.tcp_rmem | หน่วยความจำสำรองสำหรับบัฟเฟอร์อ่าน TCP |
เน็ต.ipv4.tcp_wmem | หน่วยความจำสำรองสำหรับบัฟเฟอร์ส่ง TCP |
เคอร์เนล สแต็กเครือข่าย ตัวจัดการหน่วยความจำ ความเร็ว CPU และพารามิเตอร์การจัดการพลังงานอาจส่งผลกระทบอย่างมากต่อประสิทธิภาพของเครือข่าย คำแนะนำทั่วไปคือให้นำไปใช้กับโปรเจ็กต์ทรูพุตเครือข่ายfile โดยใช้คำสั่งปรับแต่ง ซึ่งจะแก้ไขการตั้งค่าระบบปฏิบัติการบางส่วนเพื่อกำหนดการตั้งค่าให้กับแอปพลิเคชันเครือข่าย
ตรวจสอบ:
ปรับใช้งาน adm
ชุด:
ปรับแต่ง-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 โปรเซสเซอร์ Intel® Xeon® Scalable รุ่นที่ 4
การจัดการพลังงานของโปรเซสเซอร์ Intel® Xeon® Scalable รุ่นที่ 4 ของ Intel® นั้นเข้มงวดมากเมื่อเทียบกับโปรเซสเซอร์ Intel® Xeon® Scalable รุ่นที่ 3 หากต้องการหลีกเลี่ยงไม่ให้คอร์เข้าสู่สถานะพลังงานต่ำ ให้ลองลดจำนวนคอร์ที่ใช้งานอยู่เพื่อให้คอร์ทำงานได้นานขึ้น
การตั้งค่า BIOS ที่แนะนำเพื่อประสิทธิภาพสูงสุด
- เปิด/ปิดไฮเปอร์เธรดดิ้ง (ขึ้นอยู่กับความต้องการเวิร์กโหลดและเป้าหมายประสิทธิภาพ) บน CPU
- ตั้งค่าระบบโปรfile เพื่อประสิทธิภาพการทำงานให้สูงสุด
บันทึก
ส่งผลให้มีการใช้พลังงานที่สูงขึ้น - ตั้งค่าการจัดการพลังงาน CPU เป็นประสิทธิภาพสูงสุดเพื่อให้ความสำคัญกับประสิทธิภาพ CPU สูงสุดมากกว่าประสิทธิภาพการใช้พลังงาน
- เปิดใช้งาน Turbo Boost การปิดใช้งาน Turbo Boost ในการตั้งค่า BIOS ของระบบโดยปกติจะป้องกันไม่ให้ CPU เพิ่มความเร็วสัญญาณนาฬิกาแบบไดนามิกเกินความถี่พื้นฐาน
- บันทึก
การปิดใช้งาน Turbo Boost อาจเหมาะสำหรับกรณีการใช้งานบางกรณีที่ต้องให้ความสำคัญกับประสิทธิภาพที่สม่ำเสมอ ประสิทธิภาพการใช้พลังงาน หรือการจัดการความร้อนมากกว่าประสิทธิภาพสูงสุด - ปิดใช้งานคุณลักษณะ Single Root I/O Virtualization (SR-IOV) หากระบบไม่ได้ใช้เทคโนโลยีเสมือนจริง
- ปิดใช้งาน C-states เพื่อสั่งให้ CPU ยังคงทำงานอยู่และป้องกันไม่ให้เข้าสู่สถานะว่างที่ลึกกว่า
- ปิดใช้งาน C1E เพื่อให้แน่ใจว่า CPU ยังคงทำงานอยู่และไม่เข้าสู่สถานะว่าง C1E
- ตั้งค่าความถี่นอกแกนเป็นสูงสุดเพื่อสั่งให้ระบบทำงานที่ความถี่สูงสุดที่มี
- บนแพลตฟอร์ม Dell ให้ตั้งค่าการจำลองแกนกลาง Multiple APIC Description Table (MADT) ให้เป็นเชิงเส้น (หรือ Round-Robin ขึ้นอยู่กับ BIOS) เพื่อให้มีการแมปแกนกลาง CPU ที่ชัดเจนและคาดเดาได้
การปรับระดับ OS ที่แนะนำเพื่อประสิทธิภาพที่เหมาะสมที่สุด
- ตั้งค่าตัวควบคุมการปรับขนาดความถี่ CPU ให้เป็นไปตามประสิทธิภาพ cpupower frequency-set -g performance cpupower frequency-info
- ปิดใช้งาน C-States cpupower idle-set -D0
- ตั้งค่าบัฟเฟอร์ core 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 (ปริมาณงานขึ้นอยู่กับปริมาณงาน/ความหน่วง)
ปรับแต่ง-adm profile การรับส่งข้อมูลผ่านเครือข่าย
การปรับระดับอะแดปเตอร์ที่แนะนำเพื่อประสิทธิภาพการทำงานที่เหมาะสมที่สุด
- จำกัดจำนวนคิวที่จะใช้สำหรับการรับส่งข้อมูลแอปพลิเคชัน ใช้จำนวนคิวขั้นต่ำที่จำเป็นเพื่อให้แกน CPU ที่เกี่ยวข้องทำงานอยู่ เพื่อป้องกันไม่ให้แกนเหล่านั้นเข้าสู่สถานะว่างที่ลึกกว่า (ปรับตามปริมาณงาน): ethtool -L รวม 32
- ตั้งค่าอัตราการลดการขัดจังหวะ ethtool -C ปิด rx แบบปรับตัว ปิด rx-usecs-high 50 rx-usecs 50 tx-usecs 50
ลองปรับตัวจับเวลาการรวมสัญญาณที่มีความสำคัญสูงในการส่ง/รับ/ให้สูงขึ้น (80/100/150/200) หรือต่ำลง (25/20/10/5) เพื่อค้นหาค่าที่เหมาะสมที่สุดสำหรับปริมาณงาน - ตั้งค่าขนาดวงแหวน Rx/Tx ethtool -G 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 เป็น CPU ทรงพลังที่สร้างขึ้นสำหรับเซิร์ฟเวอร์และศูนย์ข้อมูล โดยสร้างขึ้นบนสถาปัตยกรรม Zen ของ AMD การตั้งค่าด้านล่างนี้มาจากซีรีส์ EPYC รุ่นที่ 4 ของ AMD
การตั้งค่า BIOS ที่แนะนำเพื่อประสิทธิภาพสูงสุด
- เปิดใช้งานโหมดกำหนดเองเพื่อให้ผู้ใช้ปรับประสิทธิภาพของ CPU การใช้พลังงาน และการตั้งค่าอื่นๆ ได้ ซึ่งจะช่วยปรับแต่งระบบให้มีสมดุลที่ดีที่สุดระหว่างประสิทธิภาพและประสิทธิภาพการใช้พลังงาน
- เปิดใช้งานการเพิ่มประสิทธิภาพแกนหลักเพื่อให้ CPU สามารถเพิ่มความเร็วโดยอัตโนมัติเพื่อจัดการกับงานที่ต้องใช้ทักษะมากขึ้น ช่วยปรับปรุงประสิทธิภาพโดยรวม
- ปิดใช้งานการควบคุม C-state ทั่วโลก เพื่อป้องกันไม่ให้ CPU เข้าสู่สถานะประหยัดพลังงานที่ลึกกว่า ซึ่งเรียกว่า C-state ซึ่งสามารถรักษาการตอบสนองได้
บันทึก
การปิดใช้งาน C-states อาจทำให้ใช้พลังงานเพิ่มขึ้นและเพิ่มอุณหภูมิความร้อน ตรวจสอบทั้งสองอย่างเพื่อดูปริมาณงาน - เปิดใช้งาน/ปิดใช้งาน Simultaneous Multithreading (SMT) บน CPU โดยอิงตามความต้องการเวิร์กโหลดและเป้าหมายประสิทธิภาพ SMT เทียบเท่ากับ Hyper Threading บน CPU ของ Intel
บันทึก
หากต้องการประสิทธิภาพการทำงานที่เหมาะสมที่สุด โปรดดูการปรับแต่งการตั้งค่าไดรเวอร์ i40e บนหน้า 13 และการปรับแต่งแพลตฟอร์ม (i40e แบบไม่เฉพาะเจาะจง) บนหน้า 19 สำหรับการปรับแต่งระดับระบบปฏิบัติการและอะแดปเตอร์ที่แนะนำ
การยึดอะแดปเตอร์
การเชื่อมต่อ Linux เป็นฟีเจอร์อันทรงพลังที่สามารถปรับปรุงประสิทธิภาพของเครือข่าย ความซ้ำซ้อน และความทนทานต่อความผิดพลาดในสภาพแวดล้อมเซิร์ฟเวอร์ได้อย่างมาก อย่างไรก็ตาม สิ่งสำคัญคือต้องทราบว่าฟีเจอร์นี้ต้องใช้ฮาร์ดแวร์เครือข่ายที่เข้ากันได้และการกำหนดค่าที่เหมาะสมทั้งบนเซิร์ฟเวอร์และสวิตช์จึงจะทำงานได้อย่างถูกต้อง
ไดรเวอร์การเชื่อมต่อใน Linux ช่วยให้คุณรวมอินเทอร์เฟซเครือข่ายทางกายภาพหลายรายการเข้าเป็นอินเทอร์เฟซที่เชื่อมต่อกัน อินเทอร์เฟซที่เชื่อมต่อกันนี้ปรากฏเป็นอินเทอร์เฟซเครือข่ายเสมือนเดียวสำหรับระบบปฏิบัติการและแอปพลิเคชัน
บันทึก
บอนด์เป็นอินเทอร์เฟซเชิงตรรกะ ดังนั้นจึงไม่สามารถตั้งค่าความสัมพันธ์ของ CPU โดยตรงบนอินเทอร์เฟซบอนด์ได้ (เช่นample, bond0) นั่นคือ ไม่มีการควบคุมโดยตรงต่อการจัดการการขัดจังหวะหรือความสัมพันธ์ของ CPU ความสัมพันธ์ของ CPU จะต้องกำหนดค่าสำหรับอินเทอร์เฟซพื้นฐานที่เป็นส่วนหนึ่งของพันธะ
การเชื่อมต่อมีโหมดการทำงานหลายโหมด โดยแต่ละโหมดมีคุณลักษณะเฉพาะของตัวเอง
โหมด | พิมพ์ |
0 | รอบโรบิน |
1 | การสำรองข้อมูลที่ใช้งานอยู่ |
2 | แฮ็กเกอร์ |
3 | ออกอากาศ |
4 | แอลเอซีพี |
5 | ส่งสมดุลโหลด |
6 | สมดุลโหลดแบบปรับได้ |
มีหลายวิธีในการสร้างการเชื่อมต่อใน Linux หนึ่งในวิธีที่ใช้กันทั่วไปที่สุดคือการใช้การกำหนดค่าเครือข่าย files (เช่นample, /etc/network/ อินเทอร์เฟซหรือ /etc/sysconfig/network-scripts/ifcfg-bondX)
การกำหนดค่าโดยใช้การกำหนดค่าเครือข่าย Files
ขั้นตอนต่อไปนี้จะสร้างการเชื่อมโยงผ่านการกำหนดค่าเครือข่าย files.
- เลือกพอร์ต NIC สองพอร์ตขึ้นไปสำหรับการเชื่อมต่อ (เช่นample, ethX และ ethY)
- เปิดการกำหนดค่า NIC Fileภายใต้ /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=yes USERCTL=no BOOTPROTO=dhcp (หรือ) none
IPADDR=200.20.2.4 [จำเป็นหาก BOOTPROTO=ไม่มี] NETMASK=255.255.255.0 [จำเป็นหาก BOOTPROTO=ไม่มี] NETWORK=200.20.2.0 [จำเป็นหาก BOOTPROTO=ไม่มี] BROADCAST=200.20.2.255 [จำเป็นหาก BOOTPROTO=ไม่มี] BONDING_OPTS=”mode=1 miimon=100″
บันทึก
โหมดสามารถเป็นจำนวนเต็มใดๆ ตั้งแต่ 0 ถึง 6 ขึ้นอยู่กับความต้องการ - เริ่มบริการเครือข่ายใหม่โดยใช้ service network restart หรือ systemctl restart NetworkManager.service
การแก้ไขปัญหาประสิทธิภาพ
7.1 การใช้งานซีพียู
ตรวจสอบการใช้งาน CPU ต่อคอร์ในขณะที่เวิร์กโหลดกำลังทำงาน
โปรดทราบว่าการใช้งานต่อคอร์นั้นเกี่ยวข้องกับประสิทธิภาพมากกว่าการใช้งาน CPU โดยรวม เนื่องจากข้อมูลดังกล่าวให้แนวคิดเกี่ยวกับการใช้งาน CPU ต่อคิวเครือข่าย หากคุณมีเธรดเพียงไม่กี่เธรดที่รันการรับส่งข้อมูลบนเครือข่าย แสดงว่าคุณอาจใช้คอร์เพียงไม่กี่คอร์เท่านั้น อย่างไรก็ตาม หากคอร์เหล่านั้นอยู่ที่ 100% ทรูพุตเครือข่ายของคุณอาจถูกจำกัดด้วยการใช้งาน CPU และถึงเวลาแล้วที่จะดำเนินการต่อไปนี้:
- ปรับแต่งการควบคุม IRQ/ขนาดเสียงเรียกเข้าตามรายละเอียดในการควบคุมการขัดจังหวะ
- เพิ่มจำนวนเธรดแอปพลิเคชันเพื่อกระจายโหลด CPU ให้ครอบคลุมคอร์มากขึ้น หากคอร์ทั้งหมดทำงานที่ 100% แอปพลิเคชันของคุณอาจถูกจำกัดด้วย CPU มากกว่าเครือข่าย
เครื่องมือที่สามารถใช้ได้ทั่วไป:
- สูงสุด
— กด 1 เพื่อขยายรายการ CPU และตรวจสอบว่ากำลังใช้ CPU ตัวใดอยู่
— สังเกตระดับการใช้ประโยชน์
— สังเกตว่ากระบวนการใดแสดงเป็นกระบวนการที่มีการใช้งานมากที่สุด (ด้านบนสุดของรายการ) - เอ็มพีสแตท
ตัวอย่างต่อไปนี้ampบรรทัดคำสั่งได้รับการทดสอบบน Red Hat Enterprise Linux 7.x
มันแสดงการใช้งาน CPU ต่อคอร์ (โดยค้นหาเปอร์เซ็นต์รวมที่ไม่ได้ใช้งานและลบออกจาก 100) และเน้นค่าที่มากกว่า 80% ด้วยสีแดง mpstat -P ALL 1 1 | grep -v Average | tail -n +5 | head -n -1 | awk '{ print (100-$13)}' | egrep -color=always '[^\.][8-9][0-9][\.]?.*|^[8-9][0-9][\.]?.*| 100|' | column - perf top ตรวจสอบว่ารอบการใช้งานอยู่ที่ใด
7.2 i40e ตัวนับ
ไดรเวอร์ i40e มอบรายการตัวนับจำนวนมากสำหรับการดีบักอินเทอร์เฟซและการตรวจสอบผ่านคำสั่ง ethtool -S ethX การดูเอาต์พุตในขณะที่เวิร์กโหลดกำลังทำงานและ/หรือเปรียบเทียบค่าตัวนับก่อนและหลังการรันเวิร์กโหลดอาจเป็นประโยชน์
- หากต้องการรับข้อมูลตัวนับ i40e ทั้งหมด: ethtool -S ethX
- หากต้องการดูเฉพาะตัวนับที่ไม่ใช่ศูนย์: watch -d (ethtool -S ethX) | egrep -v :\ 0 | column
สิ่งที่ต้องมองหาบางประการ: - rx_dropped หมายถึง CPU ไม่ให้บริการบัฟเฟอร์เร็วพอ
- port.rx_dropped หมายความว่ามีบางสิ่งบางอย่างไม่เร็วพอในสล็อต/หน่วยความจำ/ระบบ
7.3 เคาน์เตอร์เครือข่าย
ตรวจสอบ netstat -s ก่อน/หลังการรันเวิร์กโหลด
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 สำหรับปัญหาประสิทธิภาพที่เกี่ยวข้องกับอีเทอร์เน็ต อย่าลืมรวมเอาต์พุต svr-info (ข้อความ file) สำหรับแต่ละเซิร์ฟเวอร์ Linux ในการกำหนดค่าการทดสอบ
- ดาวน์โหลดและติดตั้ง svr-info:
wget-qO- ถูกต้อง https://github.com/intel/svr-info/releases/latest/download/svrinfo.tgz| tar xvz cd svr-ข้อมูล
./ข้อมูล svr
> ชื่อโฮสต์.txt - เก็บรวบรวมผลลัพธ์:
./svr-info > ชื่อโฮสต์.txt - แนบข้อความหนึ่งข้อ (.txt) file สำหรับแต่ละเซิร์ฟเวอร์สำหรับกรณีการสนับสนุน Intel ของคุณเพื่อการวิเคราะห์
คำแนะนำสำหรับสถานการณ์ประสิทธิภาพทั่วไป
8.1 การส่งต่อ IP
- อัพเดตเคอร์เนล
เคอร์เนลใน distro ล่าสุดบางเคอร์เนลมีประสิทธิภาพการกำหนดเส้นทางลดลงเนื่องจากการเปลี่ยนแปลงเคอร์เนลในโค้ดการกำหนดเส้นทางซึ่งเริ่มจากการลบแคชการกำหนดเส้นทางเนื่องจากปัญหาความปลอดภัย เคอร์เนลนอก distro ล่าสุดควรมีแพตช์ที่ช่วยบรรเทาผลกระทบต่อประสิทธิภาพจากการเปลี่ยนแปลงเหล่านี้ และอาจให้ประสิทธิภาพที่ดีขึ้น - ปิดใช้งานไฮเปอร์เธรดดิ้ง (คอร์ลอจิก)
- แก้ไขพารามิเตอร์การบูตเคอร์เนล
— บังคับปิด iommu (intel_iommu=off หรือ iommu=off) จากบรรทัดการบูตเคอร์เนล เว้นแต่จำเป็นสำหรับการจำลองเสมือน
— ปิดการจัดการพลังงาน: processor.max_cstates=1 idle=poll pcie_aspm=off - จำกัดจำนวนคิวให้เท่ากับจำนวนคอร์บนซ็อคเก็ตท้องถิ่น (12 ในกรณีนี้ampเลอ) ethtool -L ethX รวม 12
- การขัดจังหวะพินจะไปยังซ็อคเก็ตในพื้นที่เท่านั้น set_irq_affinity -X local ethX หรือ set_irq_affinity -X local ethX
บันทึก
สามารถใช้ -X หรือ -x ได้ ขึ้นอยู่กับปริมาณงาน - เปลี่ยนขนาดวงแหวน Tx และ Rx ตามต้องการ ค่าที่มากขึ้นจะใช้ทรัพยากรมากขึ้นแต่สามารถให้อัตราการส่งต่อที่ดีกว่าได้ ethtool -G ethX rx 4096 tx 4096
- ปิดการใช้งาน GRO เมื่อกำหนดเส้นทาง
เนื่องจากปัญหาเคอร์เนลที่ทราบแล้ว จำเป็นต้องปิด GRO เมื่อกำหนดเส้นทาง/ส่งต่อ ethtool -K ethX gro off โดยที่ ethX คืออินเทอร์เฟซอีเทอร์เน็ตที่ต้องการปรับเปลี่ยน - ปิดใช้งานการขัดจังหวะแบบปรับได้และตั้งค่าคงที่ ethtool -C ethX adaptive-rx off adaptive-tx off ethtool -C ethX rx-usecs 64 tx-usecs 64
บันทึก
ขึ้นอยู่กับประเภทของโปรเซสเซอร์และปริมาณงาน พารามิเตอร์การรวมตัวสำหรับ RX และ TX สามารถปรับเพื่อประสิทธิภาพที่ดีขึ้น (หรือสูญเสียเฟรมน้อยลง)
- ปิดใช้งานไฟร์วอลล์ sudo systemctl ปิดใช้งานไฟร์วอลล์ sudo systemctl หยุดไฟร์วอลล์
- เปิดใช้งานการส่งต่อ 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 โดยใช้ tasket -c 0
- ปิด irqbalance โดยใช้ systemctl stop irqbalance หรือ systemctl disabled irqbalance
- เรียกใช้สคริปต์ affinity เพื่อกระจายไปทั่วคอร์ ลองใช้แบบโลคัลหรือทั้งหมด
- ปิดการทำงานของการขัดจังหวะ ethtool -C ethX rx-usecs 0 tx-usecs 0 adaptive-rx off adaptive-tx off rxusecs- high 0
- จำกัดจำนวนคิวให้เท่ากับจำนวนคอร์บนซ็อคเก็ตท้องถิ่น (32 ในกรณีนี้ampเลอ) ethtool -L ethX รวม 32
- การขัดจังหวะพินจะไปยังซ็อกเก็ตในพื้นที่เท่านั้น (สคริปต์ที่รวมอยู่ในแหล่งที่มาของไดรเวอร์ i40e) set_irq_affinity -X local ethX
- ใช้เกณฑ์มาตรฐานที่จัดทำแล้ว เช่น netperf -t TCP_RR, netperf -t UDP_RR หรือ NetPipe netperf -t TCP_RR หรือ netperf -t UDP_RR
- ปักหมุดเกณฑ์มาตรฐานไปที่แกนเดียวในโหนด NUMA ในพื้นที่ tasket -c
ซีรีส์ Intel® Ethernet 700
คู่มือการปรับแต่งประสิทธิภาพการทำงานของ Linux
เดือนธันวาคม 2024
เลขที่เอกสาร: 334019, ปรับปรุง: 1.2
เอกสาร / แหล่งข้อมูล
![]() |
การปรับแต่งประสิทธิภาพ Linux ของ Intel Ethernet 700 Series [พีดีเอฟ] คู่มือการใช้งาน 334019 การปรับแต่งประสิทธิภาพ Linux ซีรีส์ Ethernet 700 ซีรีส์ Ethernet 700 การปรับแต่งประสิทธิภาพ Linux การปรับแต่งประสิทธิภาพ การปรับแต่ง |