เหตุใดรายงานยอดนิยมถึงการใช้งาน cpu ที่แตกต่างจาก CloudWatch


9

topแสดงการใช้งาน CPU โดยเฉลี่ยในช่วงเวลาสูงสุดประมาณ 20% ในขณะที่การตรวจสอบ CloudWatch แสดงการใช้งาน CPU โดยเฉลี่ย 40% อะไรเป็นสาเหตุของความคลาดเคลื่อนนี้

คำตอบ:


15

การสังเกตที่ดีมากและเราก็พบกับสิ่งนี้เช่นกัน นี่คือสิ่งที่ฉันพบ:

ระวังการวัดการใช้ CPU จากภายใน EC2 เช่น เป็นไปได้ที่จะเห็นการใช้งาน CPU ต่ำกว่า 100% และยังได้รับการขยายออกจนหมด เชื่อฉันสิ: อยู่ที่นั่นทำอย่างนั้น (CloudWatch CPUUtilization โดยวิธีการวัดจากนอกอินสแตนซ์และถูกต้องเสมอ)

มีคำอธิบายที่ดีมากของสิ่งทั้งหมดที่นี่: https://axibase.com/news/ec2-monitoring-the-case-of-stolen-cpu/

ในตัวอย่างข้างต้นอินสแตนซ์ m1.small EC2 ได้รับการจัดสรร 0.4 หน่วยประมวลผลและ 40% ของ CPU ไม่ว่างหมายถึงการใช้เปอร์เซ็นต์ของแกนหลัก อย่างไรก็ตามเนื่องจาก 40% เป็น CPU ที่แบ่งใช้สูงสุดที่สามารถจัดสรรให้กับ VM นี้การใช้งาน CPU ที่มีประสิทธิภาพคือ 40% / 40% = 100% หมายเลขใดที่ CloudWatch แสดง

หากคุณสงสัยว่า 40% มาจากไหนคณิตศาสตร์นั้นค่อนข้างง่าย ระบบ m1.small linux มีสิทธิ์ในการคำนวณ 1 EC2 ซึ่งให้ความจุ CPU เท่ากับ 1.0–1.2 GHz 2007 Opteron หรือโปรเซสเซอร์ 2007 Xeon เนื่องจาก VM ทำงานบนเครื่องที่มีความเร็วสัญญาณนาฬิกา 2.6 GHz จึงได้รับสิทธิ์ในการแชร์โปรเซสเซอร์ 38.4% - 46.2% ในโหนด XEN นี้ คุณสามารถเรียกใช้คำสั่ง cat / proc / cpuinfo เพื่อค้นหาสถาปัตยกรรม CPU หลังอินสแตนซ์ EC2 ของคุณ

ให้ความสนใจเป็นพิเศษกับคำแนะนำเกี่ยวกับวิธีจัดการกับเครื่องมือที่ไม่รู้เกี่ยวกับคณิตศาสตร์พิเศษ:

ตัวเลือกอื่นที่สามารถใช้ในการติดตั้งเอเจนต์หรือเครื่องมือตรวจสอบที่ใช้ SNMP ซึ่งไม่ได้รวมกับ CloudWatch ที่มีอยู่คือการใช้ตัวชี้วัดความไม่ได้ใช้งาน CPU สิ่งที่คุณต้องทำคือการเขียนกฎใหม่เพื่อวัด CPU idle แทน CPU busy เช่นถ้าคุณมีเกณฑ์ที่กำหนด> 75% สำหรับ CPU busy, ให้สร้างกฎ <25% สำหรับ idle ของ CPU ถ้า CPU idle เป็น 0 แสดงว่าเซิร์ฟเวอร์ของคุณเชื่อมโยงกับ CPU

ง่ายมาก. ดีมาก.

เมื่อคุณรันบนสุดในอินสแตนซ์ EC2 มันจะวัดการใช้งาน CPU ของเครื่องฟิสิคัลคอร์ที่ใช้งานอินสแตนซ์ของคุณและอื่น ๆ การใช้งานนี้ไม่ถูกต้องหากคุณต้องการวัดการใช้งาน cpu ของอินสแตนซ์ของคุณคนเดียว (หน่วยคำนวณ EC2 ที่กำหนดให้กับอินสแตนซ์ของคุณ)

ซึ่งเป็นสาเหตุที่ทำให้การวัดคลาวด์วอชเป็นจริงเนื่องจากมีการวัดภายนอกอินสแตนซ์สำหรับหน่วยคำนวณ EC2 ที่กำหนดให้กับอินสแตนซ์ของคุณเพียงอย่างเดียว

ดูที่นี่ - https://forums.aws.amazon.com/thread.jspa?threadID=99993


กล่าวอีกนัยหนึ่งพวกเขาทั้งสองถูก แต่วัดต่าง ๆ
บาฮามาต

1
คุณสามารถใช้วิธีนี้ อย่างไรก็ตาม OP กังวลว่าสิ่งที่เขาคิดว่าเขาเห็นไม่ใช่สิ่งที่อเมซอนพูดว่าเขาเห็น ดังนั้นในกรณีของเขาข้อมูลยอดนิยมไม่ถูกต้องสำหรับเขา แต่ถ้าคุณจะวัดการใช้ซีพียูของแกนหลักเพื่อแก้ปัญหาประสิทธิภาพการทำงานมันมีประโยชน์มากในการรันบน หากคุณกังวลเกี่ยวกับการใช้งานอินสแตนซ์ของคุณเท่านั้น cloudwatch คือหนทางที่จะไป ใช่พวกเขาทั้งสองวัดสิ่งต่างกัน
Chida

1
ผมคิดว่าผมควรจะได้ปฏิบัติตามคำสั่งของฉันด้วย "อดีตคือสิ่งที่คุณคิดว่าคุณต้องการหลังคือสิ่งที่คุณจริงๆต้องการ" แต่ผมคิดว่าได้รับแล้วปกคลุม
บาฮามาต

+1 สำหรับสิ่งที่คุณเพิ่งกล่าวว่า :)
Chida

1
ฉันดึงเนื้อหาของลิงค์ที่ตายแล้วจากเครื่อง wayback และเพิ่มลงในโพสต์โดยตรง
Johano Fierra
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.