เรื่องเล่าจาก stress-ng: เมื่อ 50% CPU utilization อาจหมายถึง 80% ของงานจริงที่ระบบทำได้
Brendan Long จาก MITRE Labs ได้ทดลองกับเครื่อง Ryzen 9 5900X โดยใช้ stress-ng เพื่อทดสอบว่า %CPU utilization ที่ระบบรายงานนั้นสัมพันธ์กับงานจริงที่เครื่องทำได้มากน้อยแค่ไหน ผลลัพธ์กลับชวนให้ตั้งคำถามกับสิ่งที่เราคิดว่า “เข้าใจดี” มาตลอด

เขารัน stress-ng ด้วย worker 24 ตัวที่ทำงานในระดับ utilization ต่าง ๆ และอีกชุดที่รัน 1–24 worker ที่ 100% utilization เพื่อดูว่าระบบจัดการงานอย่างไร และพบว่า:

ในงานทั่วไป เช่น CPU benchmark ทั่วไป: ที่ระบบรายงานว่าใช้ CPU 50% จริง ๆ แล้วเครื่องทำงานได้ถึง 60–65% ของความสามารถสูงสุด

ในงานคำนวณ 64-bit integer: 50% utilization กลับเท่ากับ 65–85% ของงานจริง

ในงาน matrix math ที่ใช้ SIMD หนัก ๆ: 50% utilization เท่ากับ 80–100% ของงานจริง—และการเพิ่ม worker ไม่ได้เพิ่มงานเลย แต่แค่ทำให้ตัวเลข utilization สูงขึ้น

สาเหตุหลักคือ hyperthreading และ turbo boost:

Hyperthreading ทำให้ core เสมือนแชร์ทรัพยากรกับ core จริง เมื่อใช้เกินจำนวน core จริง ประสิทธิภาพจะลดลงอย่างไม่เป็นเชิงเส้น

Turbo boost ทำให้ CPU ลดความเร็วเมื่อมี core ทำงานมากขึ้น เพื่อควบคุมความร้อนและพลังงาน ส่งผลให้การคำนวณ utilization (busy cycles / total cycles) ผิดเพี้ยนไป

Brendan สรุปว่า %CPU utilization ไม่สามารถใช้เป็นตัวแทนของ “งานจริง” ได้ และแนะนำให้วัดจาก benchmark ที่ดูจำนวนงานที่ทำได้จริง เช่น Bogo ops หรือ latency ของระบบแทน

https://www.brendanlong.com/cpu-utilization-is-a-lie.html
🎙️ เรื่องเล่าจาก stress-ng: เมื่อ 50% CPU utilization อาจหมายถึง 80% ของงานจริงที่ระบบทำได้ Brendan Long จาก MITRE Labs ได้ทดลองกับเครื่อง Ryzen 9 5900X โดยใช้ stress-ng เพื่อทดสอบว่า %CPU utilization ที่ระบบรายงานนั้นสัมพันธ์กับงานจริงที่เครื่องทำได้มากน้อยแค่ไหน ผลลัพธ์กลับชวนให้ตั้งคำถามกับสิ่งที่เราคิดว่า “เข้าใจดี” มาตลอด เขารัน stress-ng ด้วย worker 24 ตัวที่ทำงานในระดับ utilization ต่าง ๆ และอีกชุดที่รัน 1–24 worker ที่ 100% utilization เพื่อดูว่าระบบจัดการงานอย่างไร และพบว่า: ℹ️ ในงานทั่วไป เช่น CPU benchmark ทั่วไป: ที่ระบบรายงานว่าใช้ CPU 50% จริง ๆ แล้วเครื่องทำงานได้ถึง 60–65% ของความสามารถสูงสุด ℹ️ ในงานคำนวณ 64-bit integer: 50% utilization กลับเท่ากับ 65–85% ของงานจริง ℹ️ ในงาน matrix math ที่ใช้ SIMD หนัก ๆ: 50% utilization เท่ากับ 80–100% ของงานจริง—และการเพิ่ม worker ไม่ได้เพิ่มงานเลย แต่แค่ทำให้ตัวเลข utilization สูงขึ้น สาเหตุหลักคือ hyperthreading และ turbo boost: ℹ️ Hyperthreading ทำให้ core เสมือนแชร์ทรัพยากรกับ core จริง เมื่อใช้เกินจำนวน core จริง ประสิทธิภาพจะลดลงอย่างไม่เป็นเชิงเส้น ℹ️ Turbo boost ทำให้ CPU ลดความเร็วเมื่อมี core ทำงานมากขึ้น เพื่อควบคุมความร้อนและพลังงาน ส่งผลให้การคำนวณ utilization (busy cycles / total cycles) ผิดเพี้ยนไป Brendan สรุปว่า %CPU utilization ไม่สามารถใช้เป็นตัวแทนของ “งานจริง” ได้ และแนะนำให้วัดจาก benchmark ที่ดูจำนวนงานที่ทำได้จริง เช่น Bogo ops หรือ latency ของระบบแทน https://www.brendanlong.com/cpu-utilization-is-a-lie.html
WWW.BRENDANLONG.COM
%CPU Utilization Is A Lie
I deal with a lot of servers at work, and one thing everyone wants to know about their servers is how close they are to being at max utilization. It should be easy, right? Just pull up top or another system monitor tool, look at network, memory and CPU utilization …
0 Comments 0 Shares 48 Views 0 Reviews