เรื่องเล่าจาก 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
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
0 ความคิดเห็น
0 การแบ่งปัน
50 มุมมอง
0 รีวิว