พบแพตช์ที่ถูกลืมในเคอร์เนล Linux ซึ่งส่งผลต่อประสิทธิภาพของซีพียู AMD

เคอร์เนล Linux 6.0 ซึ่งคาดว่าจะเปิดตัวในวันจันทร์หน้า รวมถึงการเปลี่ยนแปลงที่แก้ไขปัญหาประสิทธิภาพการทำงานของระบบที่ทำงานบนโปรเซสเซอร์ AMD Zen แหล่งที่มาของประสิทธิภาพที่ลดลงนั้นพบว่ามาจากโค้ดที่เพิ่มเข้ามาเมื่อ 20 ปีที่แล้วเพื่อแก้ไขปัญหาฮาร์ดแวร์ในชิปเซ็ตบางรุ่น ปัญหาฮาร์ดแวร์ได้รับการแก้ไขมานานแล้วและไม่ปรากฏในชิปเซ็ตปัจจุบัน แต่วิธีแก้ปัญหาเก่าสำหรับปัญหานี้ได้ถูกลืมไปแล้ว และกลายเป็นสาเหตุของการเสื่อมประสิทธิภาพของระบบที่ใช้ CPU AMD สมัยใหม่ ระบบใหม่บน CPU ของ Intel ไม่ได้รับผลกระทบจากวิธีแก้ปัญหาแบบเก่า เนื่องจากระบบเหล่านี้เข้าถึง ACPI โดยใช้ไดรเวอร์ intel_idle แยกต่างหาก และไม่ใช่ไดรเวอร์ processor_idle ทั่วไป

มีการเพิ่มวิธีแก้ปัญหาในเคอร์เนลในเดือนมีนาคม พ.ศ. 2002 เพื่อป้องกันลักษณะที่ปรากฏของจุดบกพร่องในชิปเซ็ตที่เกี่ยวข้องกับการตั้งค่าสถานะไม่ได้ใช้งานอย่างเหมาะสม เนื่องจากความล่าช้าในการประมวลผลสัญญาณ STPCLK# เพื่อแก้ไขปัญหานี้ การใช้งาน ACPI ได้เพิ่มคำสั่ง WAIT เพิ่มเติม ซึ่งจะทำให้โปรเซสเซอร์ช้าลงเพื่อให้ชิปเซ็ตมีเวลาเข้าสู่สถานะไม่ได้ใช้งาน เมื่อทำโปรไฟล์โดยใช้คำแนะนำ IBS (Instruction-Based Sampling) บนโปรเซสเซอร์ AMD Zen3 พบว่าโปรเซสเซอร์ใช้เวลาจำนวนมากในการดำเนินการ stub ซึ่งนำไปสู่การตีความสถานะโหลดของโปรเซสเซอร์ที่ไม่ถูกต้องและการตั้งค่าโหมดสลีปที่ลึกขึ้น (C- สถานะ) โดย cpupidle ของโปรเซสเซอร์

ลักษณะการทำงานนี้สะท้อนให้เห็นในประสิทธิภาพที่ลดลงภายใต้ปริมาณงานที่มักสลับไปมาระหว่างสถานะไม่ได้ใช้งานและไม่ว่าง ตัวอย่างเช่น เมื่อใช้แพตช์ที่ปิดใช้งานการบายพาส ค่าเฉลี่ยการทดสอบ tbench จะเพิ่มขึ้นจาก 32191 MB/s เป็น 33805 MB/s

ที่มา: opennet.ru

เพิ่มความคิดเห็น