ผู้ดูแลระบบได้พึ่งพาเปอร์เซ็นต์การใช้งาน CPU มาเป็นเวลานานเพื่อประเมินความจุของเซิร์ฟเวอร์และวางแผนการขยายระบบ สมมติฐานทั่วไปนั้นง่ายมาก หากเซิร์ฟเวอร์แสดงการใช้งาน CPU 50% ก็ควรจะสามารถรับมือกับปริมาณงานเป็นสองเท่าได้ อย่างไรก็ตาม การทดสอบล่าสุดเผยให้เห็นว่าการคิดแบบเชิงเส้นนี้นำไปสู่การคำนวณที่ผิดพลาดอย่างร้ายแรงในสถานการณ์จริง
![]() |
---|
การสำรวจความไม่แม่นยำของเมตริกการใช้งาน CPU ในการวางแผนความจุของเซิร์ฟเวอร์ |
โปรเซสเซอร์สมัยใหม่ทำลายโมเดลการใช้งานแบบเชิงเส้น
ปัญหาหลักอยู่ที่วิธีการทำงานจริงของโปรเซสเซอร์สมัยใหม่เมื่อเปรียบเทียบกับวิธีที่เครื่องมือตรวจสอบรายงานกิจกรรมของมัน เมื่อทำการทดสอบความเครียดบนโปรเซสเซอร์ AMD Ryzen 9 5900X 12 คอร์ ผลลัพธ์แสดงความแตกต่างอย่างมากระหว่างการใช้งานที่รายงานกับความสามารถในการทำงานจริง ที่การใช้งาน 50% ที่รายงาน ระบบจริงๆ แล้วกำลังทำงาน 60-85% ของงานสูงสุดที่เป็นไปได้ ขึ้นอยู่กับประเภทของปริมาณงาน
ความแตกต่างนี้จะยิ่งชัดเจนมากขึ้นกับงานที่ใช้การคำนวณหนัก การดำเนินการทางคณิตศาสตร์เมทริกซ์แสดงผลลัพธ์ที่รุนแรงที่สุด โดยการใช้งาน 50% ที่รายงานจริงๆ แล้วแทนความจุจริงของโปรเซสเซอร์ 80-100% ชุมชนได้สังเกตประสบการณ์ที่คล้ายกันในสภาพแวดล้อมการผลิต โดยผู้ดูแลหลายคนได้เรียนรู้อย่างยากลำบากว่าเซิร์ฟเวอร์จะไม่เสถียรก่อนที่จะถึงการใช้งานสูงสุดตามทฤษฎี
สรุปผลการทดสอบ
ประเภทภาระงาน | การใช้งานที่รายงาน 50% | ความสามารถในการทำงานจริง |
---|---|---|
CPU ทั่วไป | 50% | 60-65% |
การคำนวณจำนวนเต็ม 64-bit | 50% | 65-85% |
การคำนวณเมทริกซ์ | 50% | 80-100% |
![]() |
---|
การวิเคราะห์การใช้งาน CPU เทียบกับประสิทธิภาพจริงเพื่อการจัดการ workload ที่ดีขึ้น |
Hyperthreading สร้างความคาดหวังความจุที่ผิด
ตัวการหลักที่อยู่เบื้องหลังเมตริกที่ทำให้เข้าใจผิดเหล่านี้คือเทคโนโลยี hyperthreading โปรเซสเซอร์สมัยใหม่เช่น Ryzen 9 5900X ปรากฏว่ามี 24 คอร์ต่อระบบปฏิบัติการ แต่จริงๆ แล้วมีเพียง 12 คอร์ทางกายภาพที่มีทรัพยากรร่วมกัน เมื่อปริมาณงานใช้เธรดมากกว่า 12 เธรด เธรดเพิ่มเติมจะต้องแบ่งปันหน่วยประมวลผล แคช และส่วนประกอบอื่นๆ กับเธรดที่มีอยู่
การจัดการแบ่งปันนี้ทำงานได้ดีสำหรับงานบางประเภท แต่ให้ประโยชน์น้อยมากสำหรับงานอื่นๆ ปริมาณงาน CPU ทั่วไปอาจเห็นการปรับปรุงเล็กน้อยจาก hyperthreading ในขณะที่การดำเนินการที่ใช้หน่วยความจำมากมักไม่แสดงการเพิ่มขึ้นเลย ระบบปฏิบัติการถือว่าแต่ละ hyperthread เป็นคอร์เต็มสำหรับการคำนวณการใช้งาน สร้างภาพลวงตาของการขยายแบบเชิงเส้นที่ไม่มีอยู่จริงในทางปฏิบัติ
Hyperthread: เทคโนโลยีที่ช่วยให้คอร์โปรเซสเซอร์ทางกายภาพเดียวสามารถประมวลผลสตรีมคำสั่งหลายรายการพร้อมกันได้โดยการแบ่งปันทรัพยากรการประมวลผล
ข้อมูลจำเพาะของโปรเซสเซอร์
- รุ่น: AMD Ryzen 9 5900X
- คอร์ฟิสิคัล: 12
- เธรด: 24 (พร้อม hyperthreading )
- ความเร็วคลอกพื้นฐาน: 4.3 GHz (เมื่อคอร์ทั้งหมดทำงาน)
- ความเร็วคลอก Boost: 4.9 GHz (เมื่อใช้งานน้อย)
- การเปลี่ยนแปลงความเร็วคลอก: ลดลง 15% จากการใช้งานน้อยไปสู่การใช้งานสูง
![]() |
---|
ผลกระทบของ hyperthreading ต่อเมตริกการใช้งาน CPU และการประเมินประสิทธิภาพ |
Turbo Boost เพิ่มความซับซ้อนอีกชั้นหนึ่ง
เทคโนโลยี Turbo Boost ทำให้การวัดการใช้งานซับซ้อนยิ่งขึ้นโดยการปรับความเร็วนาฬิกาโปรเซสเซอร์แบบไดนามิกตามโหลดปัจจุบันและสภาวะความร้อน เมื่อคอร์น้อยลงทำงาน โปรเซสเซอร์สามารถรันคอร์แต่ละตัวที่ความถี่สูงขึ้น บางครั้งเร็วกว่า 15% เมื่อเปรียบเทียบกับเมื่อคอร์ทั้งหมดยุ่ง เมื่อการใช้งานเพิ่มขึ้นและคอร์มากขึ้นเริ่มทำงาน โปรเซสเซอร์จะต้องลดความเร็วนาฬิกาเพื่อจัดการความร้อนและการใช้พลังงาน
สิ่งนี้สร้างเป้าหมายที่เคลื่อนไหวสำหรับการคำนวณประสิทธิภาพ ตัวส่วนในการคำนวณการใช้งาน (รอบที่ใช้ได้ทั้งหมด) หดตัวลงเมื่อตัวเศษ (รอบที่ยุ่ง) เพิ่มขึ้น ทำให้การใช้ความจุจริงเพิ่มขึ้นเร็วกว่าการก้าวหน้าแบบเชิงเส้นที่เครื่องมือตรวจสอบแนะนำ
แนวทางการวางแผนความจุที่แนะนำ
- ทดสอบ Benchmark กับ Workload จริง: ทดสอบแอปพลิเคชันจริงด้วยข้อมูลและสถานการณ์ที่เป็นจริง
- วัดผลลัพธ์การทำงาน: ติดตามคำขอต่อวินาที ธุรกรรมที่เสร็จสิ้น หรือเมตริกที่เกี่ยวข้องอื่นๆ
- ตรวจสอบเวลาตอบสนอง: มุ่งเน้นที่เปอร์เซ็นไทล์ของความหน่วง ( P95 , P99 ) มากกว่าแค่ throughput
- กำหนดเกณฑ์แบบระมัดระวัง: ขยายขนาดที่การใช้งาน 60-70% ที่รายงานแทนที่จะรอให้ตัวเลขสูงขึ้น
- ใช้เมตริกเฉพาะแอปพลิเคชัน: แทนที่การใช้งาน CPU แบบทั่วไปด้วยตัวชี้วัดประสิทธิภาพเฉพาะ workload
ผลกระทบการผลิตและกลยุทธ์การแก้ไขชั่วคราว
ผลกระทบในทางปฏิบัติขยายไปไกลเกินกว่าข้อกังวลเชิงทฤษฎี ผู้ดูแลระบบรายงานว่าเซิร์ฟเวอร์ไม่ตอบสนองหรือแสดงเวลาแฝงที่ไม่สามารถยอมรับได้ก่อนที่จะถึงการใช้งาน 100% ที่รายงาน หลายคนได้เรียนรู้ที่จะขยายโครงสร้างพื้นฐานของพวกเขาเมื่อการใช้งานถึง 60-70% แทนที่จะรอเกณฑ์ที่สูงกว่า
เรื่องนี้ใกล้เคียงกับบ้านมาก ครั้งหนึ่งฉันเคยพยายามอธิบายให้ผู้จัดการฟังว่าเซิร์ฟเวอร์ที่ใช้งาน 60% ไม่มีพื้นที่เหลือเลย และพวกเขามองฉันเหมือนฉันมีสองหัว
วิธีแก้ไขที่แนะนำเกี่ยวข้องกับการเปลี่ยนโฟกัสจากเมตริกเปอร์เซ็นต์ CPU ไปสู่การวัดงานจริง วิธีการนี้ต้องการการเปรียบเทียบแอปพลิเคชันเฉพาะภายใต้สภาวะที่เป็นจริง การวัดปริมาณงานและเวลาตอบสนองจริง และการใช้เมตริกเหล่านี้แทนการใช้งาน CPU ทั่วไปสำหรับการวางแผนความจุ แม้ว่าจะซับซ้อนกว่าการตรวจสอบเปอร์เซ็นต์ง่ายๆ วิธีการนี้ให้ข้อมูลเชิงลึกที่แม่นยำเกี่ยวกับความจุระบบจริงและขีดจำกัดประสิทธิภาพ
อ้างอิง: %CPU Utilization Is A Lie