Mengapa top melaporkan penggunaan cpu berbeda dari CloudWatch?

9

topmenunjukkan penggunaan CPU rata-rata selama waktu puncak sekitar 20% sementara pemantauan CloudWatch menunjukkan penggunaan CPU rata-rata 40%. Apa yang menyebabkan perbedaan ini?


sumber

Jawaban:

15

Pengamatan yang sangat bagus dan kami juga mengalami hal ini. Inilah yang saya temukan:

Berhati-hatilah mengukur penggunaan CPU dari dalam instance EC2. Adalah mungkin untuk melihat penggunaan CPU di bawah 100% —dan belum sepenuhnya maksimal. Percayalah: pernah ke sana, lakukan itu. (CloudWatch CPUUtilization, omong-omong, diukur dari luar mesin virtual dan selalu benar.)

Ada deskripsi yang sangat baik dari semuanya di sini: https://axibase.com/news/ec2-monitoring-the-case-of-stolen-cpu/

Pada contoh di atas, instance m1.small EC2 dialokasikan 0,4 unit prosesor dan karenanya 40% CPU sibuk berarti persentase penggunaan inti yang mendasarinya. Namun karena 40% adalah share CPU maksimum yang dapat dialokasikan untuk VM ini, penggunaan CPU yang efektif adalah 40% / 40% = 100%. Yang merupakan nomor yang ditampilkan oleh CloudWatch.

Jika Anda bertanya-tanya dari mana 40% berasal, matematika itu cukup sederhana. Sistem linux m1.small berhak atas 1 unit komputasi EC2 yang menyediakan kapasitas CPU yang setara dengan prosesor 1.0-1.2.2 GHz 2007 Opteron atau 2007 Xeon. Karena VM berjalan pada mesin dengan kecepatan clock 2,6 GHz, VM berhak atas 38,4% -46,2% berbagi prosesor pada simpul XEN khusus ini. Anda dapat menjalankan perintah cat / proc / cpuinfo untuk mengetahui arsitektur CPU di belakang instance EC2 Anda.

Berikan perhatian khusus pada petunjuk tentang cara menangani alat yang tidak tahu tentang matematika khusus:

Opsi lain yang dapat digunakan untuk retrofit alat pemantauan berbasis agen atau SNMP yang ada, yang tidak berintegrasi dengan CloudWatch, adalah menggunakan metrik idle CPU. Yang perlu Anda lakukan adalah menulis kembali aturan untuk mengukur CPU idle bukan CPU sibuk. Misalnya jika Anda memiliki ambang> 75% yang ditentukan untuk sibuk CPU, buat aturan <25% untuk CPU idle. Jika CPU idle 0, maka server Anda terikat CPU.

Sangat sederhana. Sangat bagus.

Ketika Anda menjalankan teratas dalam instance EC2, ia mengukur penggunaan CPU dari mesin core fisik yang menjalankan instance Anda dan lainnya. Penggunaan ini salah jika Anda ingin mengukur penggunaan cpu dari instance Anda (unit komputasi EC2 yang ditugaskan untuk instance Anda).

Itulah sebabnya metrik cloudwatch nyata karena diukur eksternal dari instance untuk unit komputasi EC2 yang ditetapkan untuk instance Anda saja.

Lihat di sini - https://forums.aws.amazon.com/thread.jspa?threadID=99993

Chida
sumber
Dengan kata lain, keduanya benar tetapi mengukur hal-hal yang berbeda.
bahamat
1
Anda bisa bicara seperti itu. Namun, OP khawatir bahwa apa yang dia pikir dia lihat bukanlah apa yang dikatakan amazon dia lihat. Jadi, dalam kasusnya, data teratas salah baginya. Tapi, jika Anda akan mengukur penggunaan cpu dari inti yang mendasari untuk men-debug masalah kinerja, itu sangat berguna untuk menjalankan teratas. Jika Anda hanya khawatir tentang penggunaan instance Anda, cloudwatch adalah jalan yang harus ditempuh. Jadi, ya, mereka berdua mengukur hal yang berbeda.
Chida
1
Saya kira saya seharusnya mengikuti pernyataan saya dengan "yang pertama adalah apa yang Anda pikir Anda inginkan, yang terakhir adalah apa yang benar - benar Anda inginkan", tetapi saya pikir itu sudah dibahas.
bahamat
+1 untuk apa yang baru saja Anda katakan :)
Chida
1
Saya mengambil konten tautan mati dari mesin wayback dan menambahkannya ke pos secara langsung.
Johano Fierra