ตอนนี้มีแพตช์ตัวกำหนดตารางเวลาเคอร์เนลของ Linux ที่เข้าคิวผ่านสาขา sched/core ของ TIP ที่สามารถช่วยจัดตารางงานบนโปรเซสเซอร์ AMD ที่มีแคชระดับสุดท้ายหลายตัว (แคช LLCs/L3) ต่อการตาย การปรับปรุงเล็กน้อยนี้เกิดขึ้นหลังจากการค้นพบโดยนักพัฒนาเคอร์เนล Linux บนเดสก์ท็อป AMD Zen 2 ของเขา

การเปลี่ยนแปลงนี้ที่ควรผสานสำหรับ Linux 6.5 ในตอนนี้ที่อยู่ในสาขา sched/core ของ tip/tip.git เป็นการใช้งาน select_idle_sibling() แบบ multi-LLC-aware ในปัจจุบันเมื่อตัวกำหนดตารางเวลาค้นหา CPU ที่ไม่ได้ใช้งานในโดเมนตัวกำหนดตารางเวลา ตัวกำหนดตารางเวลาจะไม่ดูภายนอกกลุ่มแกนปัจจุบันที่ใช้ร่วมกันใน LLC แต่ตอนนี้ด้วยเวอร์ชัน multi-LLC นี้จะพิจารณา LLC อื่น ๆ หาก LLC ในพื้นที่ว่างเปล่า

แพทช์โดย Peter Zijlstra วิศวกรเคอร์เนล Linux ที่รู้จักกันมานานอธิบายว่า:

sched/fair: Multi-LLC select_idle_sibling()

[Tejun Heo ผู้พัฒนา Linux] รายงานว่าเมื่อเขากำหนดเป้าหมายคิวงานไปยัง LLC เฉพาะบนเครื่อง Zen2 ของเขาที่มี 3 คอร์/LLC และ 4 LLC ทั้งหมด เขาจะมีเวลาว่างอย่างมาก

แน่นอนว่าเป็นเพราะวิธีการ select_idle_sibling() จะไม่พิจารณาสิ่งใดๆ นอก LLC ในพื้นที่ และเนื่องจากงานเหล่านี้ทำงานสั้น ๆ ตัวจัดสรรภาระงานที่ไม่ได้ใช้งานเป็นระยะจึงไม่ได้ผล

และแม้ว่าการเก็บแคชงานไว้ในเครื่องจะเป็นการดี แต่ก็ดีกว่าที่จะไม่มีเวลาว่างมาก ดังนั้น ให้ select_idle_sibling() ลองใช้ LLC อื่นๆ ภายในโหนดเดียวกันเมื่อโหนดในเครื่องว่างเปล่า

ผู้ที่มีระบบ AMD สมัยใหม่โดยเฉพาะ และต้องการทดสอบแพตช์นี้ก่อนที่จะถึงกำหนด หน้าต่างผสาน Linux 6.5 สามารถหาได้จาก กำหนดการ/สาขาหลัก

Categories: IT Info