Memahami Metrik Penggunaan CPU
Andy Librian
Jun 30, 2016·5 min read
Dalam membaca metrik performa, banyak hal yang dapat membuat kita gagal paham, yang akhirnya dapat menyebabkan kita salah mengambil kesimpulan.
Tulisan ini mengulas tentang bagaimana menghindari kesalahan yang mungkin terjadi ketika membaca metrik tersebut, khususnya metrik CPU.
Informasi apa yang bisa ditangkap dari grafik di atas?
- Rata-rata 50% CPU digunakan untuk user space program
- Rata-rata 0% CPU digunakan untuk operating system / kernel
- Total rata-rata penggunaan CPU = 50%
- Angka tersebut merupakan rata-rata selama observasi selama 78 detik.
Dengan informasi tersebut, bisakah kita menyimpulkan bahwa aktivitas CPU tidak begitu padat, jadi bukan faktor yang menyebabkan system kita lambat? Kemudian mari kita lanjutkan untuk menganalisa resource berikutnya [memory]?
Tunggu dulu. Kita perlu tahu dari mana angka 50% tersebut dihitung.
Dalam percobaan ini, saya menggunakan 2 core CPU pada sebuah virtual machine. Angka 50% adalah penggunaan rata-rata dari seluruh [core] CPU. Apakah itu berarti core pertama digunakan 50% dan core kedua digunakan 50%? Belum tentu.
Maka kita butuh metric yang lebih detail, yaitu per-core CPU utilization.
Dari grafik di atas didapat informasi bahwa angka 50% tadi, berasal dari rata-rata : [0% cpu[0] + 100% cpu[1]] / 2 = 50%.
Ini adalah informasi yang penting, karena ada sebuah program yang sedang menggunakan 1 cpu sampai 100%, dan tidak menggunakan cpu lainnya. Biasanya karakteristik seperti ini dimiliki oleh single-threaded application.
Pada kasus ini, 1 cpu digunakan sampai 100%, sehingga menjadi faktor pembatas. Performa bisa ditingkatkan dengan cara membagi beban komputasi ke cpu lainnya.
Selain dengan grafik, metrik cpu juga bisa dibaca menggunakan command line.
top total cpu utilization
top dapat menampilkan per cpu utilization, yaitu dengan cara tekan angka 1 di keyboard.
htop per cpu utilization
vmstat total cpu utilization
mpstat per cpu utilization
Ketika kita membaca sebuah grafik CPU utilization yang mengatakan 50% usr + 20% sys, kemana 30% sisanya? Idle-kah? Belum tentu.
Coba perhatikan kembali contoh mpstat di atas. Selain, %usr, %sys, dan %idle, masih banyak angka lainnya. Mari kita bahas satu per satu.
%usr
adalah waktu yang digunakan CPU menjalankan un-niced user process. Un-niced proses adalah proses standard, yang tidak diberi attribute nice. Sedangkan niced process adalah process yang diberi prioritas tertentu, yang berbeda dengan standard bisa lebih rendah atau lebih tinggi.
Untuk membuat 1 cpu mencapai 100% usr, bisa dilakukan dengan mengeksekusi kode loop seperti di bawah ini. Simpan kode berikut ke dalam file loop.php