เมื่อต้นเดือนนี้ ฉันสังเกตเห็นว่าตัวกำหนดตารางเวลาของ Linux มีการเปลี่ยนแปลงใน sched/core ก่อนรอบ Linux 5.18 นั่นคือ คาดว่าจะช่วยโปรเซสเซอร์ AMD EPYC และโปรเซสเซอร์ Zen อื่น ๆ ที่ได้รับการคัดเลือกในเวิร์กโหลดต่างๆ การเปลี่ยนแปลงนี้ดำเนินการมาเป็นเวลาหลายเดือนแล้ว และเกี่ยวกับการปรับความไม่สมดุลของ NUMA ที่อนุญาตเมื่อขยาย LLC หลายรายการ ตอนนี้ฉันได้ใช้เกณฑ์มาตรฐานของตัวเองบนฮาร์ดแวร์ EPYC แล้ว และกำลังเร่งประสิทธิภาพของเคอร์เนล Linux ต่อไป
แพตช์พูดถึงประสิทธิภาพที่เพิ่มขึ้น… ตอนนี้กำลังทดสอบฝั่งของฉัน.
การเปลี่ยนแปลงนี้อยู่ในคิว”sched/core”ก่อนหน้าต่างผสาน Linux 5.18 ของเดือนหน้าไม่ใช่การเปลี่ยนแปลงเฉพาะของ AMD แต่เป็นการเปลี่ยนแปลงที่เกิดขึ้นกับโปรเซสเซอร์ Zen เนื่องจากเลย์เอาต์แคช Mel Gorman ผู้เขียนแพตช์อธิบายว่า”[ตัวกำหนดตารางเวลาเคอร์เนลเปลี่ยนจากปี 2020] ทำให้เกิดความไม่สมดุลระหว่างโหนด NUMA เพื่อให้โหลดบาลานเซอร์แยกงานการสื่อสารได้ สิ่งนี้ใช้ได้ดีเมื่อมีความสัมพันธ์แบบ 1:1 ระหว่าง LLC และโหนดแต่อาจไม่เหมาะสมสำหรับ LLC หลายรายการหากงานอิสระใช้แคชการแชร์ CPU ก่อนเวลาอันควร Zen* มี LLC หลายรายการต่อโหนดพร้อมช่องหน่วยความจำในเครื่อง และเนื่องจากความไม่สมดุลที่อนุญาต ฮาร์ดแวร์ที่มี 1 LLC ต่อโหนด แพตช์นี้ช่วยให้เกิดความไม่สมดุลจนถึงจุดที่ LLC ควรมีความสมดุลระหว่างโหนดต่างๆ”
สามารถยืนยันการเพิ่มประสิทธิภาพที่ยอดเยี่ยมในซีรีส์ EPYC 7003 ในหลากหลายรูปแบบ ของปริมาณงานที่มีการเปลี่ยนแปลงตารางเวลา/แกนหลัก TIP ล่าสุด
เกณฑ์มาตรฐานของ Mel เมื่อทำงานกับโปรแกรมแก้ไขนี้พบว่ามีการปรับปรุง 272% สำหรับเกณฑ์มาตรฐานหน่วยความจำสตรีมและการชนะขนาดใหญ่อื่นๆ เช่น ประสิทธิภาพที่ดีขึ้น 10% ใน Coremark และค่าสูงสุด สูงสุด 17%, ประสิทธิภาพของ SPECjbb Java เพิ่มขึ้นมากถึง 18%, เกณฑ์มาตรฐานคู่ขนานที่น่าอายของ NPB เร็วขึ้นประมาณ 17% และชัยชนะที่โดดเด่นอื่นๆ จากผลลัพธ์ที่มีแนวโน้มดีมากที่รายงาน ฉันได้ดำเนินการทดสอบของฉันเองในพื้นที่ และตัวเลขที่ฉันเห็นก็น่าตื่นเต้นไม่แพ้กัน โดยเฉพาะอย่างยิ่งสำหรับตัวกำหนดตารางเวลาเคอร์เนลของ Linux ที่เปลี่ยนเพียงโค้ดใหม่ประมาณ 50 บรรทัด!
อย่างแรกคือการวัดประสิทธิภาพที่รันด้วยเซิร์ฟเวอร์ AMD EPYC 75F3 2P ที่สร้างขึ้นจากมาเธอร์บอร์ด ASRockRack ROME2D16-2T และใช้งาน Ubuntu 21.10 ประสิทธิภาพถูกเปรียบเทียบระหว่าง Linux 5.17 Git และจากนั้น sched/core Git ที่มี”sched/fair: ปรับความไม่สมดุล NUMA ที่อนุญาตเมื่อ SD_NUMA ครอบคลุม LLCs หลายรายการ”ที่เป็นปัญหา ใช้ Kconfig เคอร์เนลเดียวกันระหว่างเคอร์เนลทั้งสอง