Cara Memonitor Penggunaan CPU pada Droplet DigitalOcean - Jumlah memori, ukuran cache, kecepatan membaca dari dan menulis ke disk, kecepatan dan ketersediaan daya pemrosesan adalah elemen kunci yang mempengaruhi kinerja infrastruktur server Anda. Pada artikel ini, kita akan fokus pada konsep pemantauan CPU pengantar dan strategi peringatan. Kita akan menjelaskan bagaimana menggunakan dua utilitas Linux yang umum, uptime dan top, untuk mempelajari tentang beban dan utilisasi CPU Anda, dan bagaimana mengatur DigitalOcean Alert Policies untuk memberi tahu Anda tentang perubahan signifikan yang terkait dengan CPU Droplet.
Sebelum kita menggali ke rincian uptime, top dan pemantauan DigitalOcean, kami akan mempertimbangkan bagaimana penggunaan CPU diukur dan jenis pola yang diinginkan.
CPU Load vs CPU Utilization
CPU Load dan CPU Utilization adalah dua cara berbeda untuk melihat penggunaan daya pemrosesan komputer.
Untuk mengkonseptualisasikan perbedaan utama di antara keduanya, kita bisa membayangkan prosesor sebagai kasir di toko kelontong dan tugas sebagai pelanggan. Beban CPU seperti memiliki satu jalur checkout dimana pelanggan menunggu kasir berikutnya tersedia. Beban pada dasarnya adalah jumlah jumlah orang yang ada, termasuk yang ada di register kas. Semakin panjang garis, semakin lama menunggu. Sebaliknya, penggunaan CPU hanya terkait dengan seberapa sibuknya kasir dan tidak tahu berapa banyak pelanggan yang mengantri.
Lebih khusus lagi, tugas mengantri untuk menggunakan CPU server. Ketika seseorang tiba di puncak antrian, dijadwalkan untuk menerima sejumlah waktu pemrosesan. Jika selesai, maka pintu keluar; Jika tidak kembali ke akhir antrian. Dalam kedua kasus, tugas berikutnya sejalan.
Beban CPU adalah panjang antrian tugas terjadwal, termasuk yang sedang diproses. Tugas dapat beralih dalam hitungan milidetik, jadi satu cuplikan dari beban tidak semudah rata-rata beberapa bacaan yang diambil selama periode waktu tertentu, jadi nilai beban sering diberikan sebagai rata-rata beban.
Beban CPU memberitahu kita tentang berapa banyak permintaan yang ada untuk waktu CPU. Permintaan yang tinggi dapat menyebabkan perdebatan untuk waktu CPU dan kinerja terdegradasi.
Pemanfaatan CPU, di sisi lain, memberitahu kita bagaimana sibuknya CPU, tanpa kesadaran akan berapa banyak proses yang menunggu. Pemantauan pemanfaatan dapat menunjukkan tren dari waktu ke waktu, menyoroti lonjakan, dan membantu mengidentifikasi aktivitas yang tidak diinginkan,
Non-Normalized vs Normalized Values
Pada sistem prosesor tunggal, total kapasitas selalu 1. Pada sistem multiprosesor, data dapat ditampilkan dalam dua cara yang berbeda. Kapasitas gabungan semua prosesor dihitung 100% terlepas dari jumlah prosesor, dan ini dikenal sebagai dinormalisasi. Pilihan lainnya adalah menghitung setiap prosesor sebagai satu unit, sehingga sistem 2 prosesor yang digunakan penuh pada kapasitas 200%, sistem 4 prosesor yang digunakan penuh berada pada kapasitas 400%, dan seterusnya.
Untuk menafsirkan dengan benar jumlah beban CPU atau penggunaan, kita perlu mengetahui berapa banyak prosesor yang dimiliki server.
Menampilkan Informasi CPU
Kita bisa menggunakan nproc perintah dengan --all pilihan untuk menampilkan jumlah prosesor. Tanpa perintah --all , akan menampilkan jumlah unit pemrosesan yang tersedia untuk proses saat ini, yang akan kurang dari jumlah total prosesor jika ada yang digunakan.
nproc --all
Pada sebagian besar distribusi Linux modern, kita juga bisa menggunakan lscpuperintah tersebut, yang tidak hanya menampilkan jumlah prosesor tapi juga arsitektur, nama model, kecepatan,dan lebih banyak lagi:
lscpuMaka hasilnya akan tampak seperti ini :
Apa Nilai Optimal untuk Load dan Pemanfaatan?
Optimal penggunaan CPU bervariasi tergantung dari jenis pekerjaan yang diharapkan server. Penggunaan CPU yang tinggi terus berlanjut datang dengan harga interaktivitas yang kurang responsif dengan sistem. Seringkali sesuai untuk aplikasi dan aplikasi batch yang intuitif secara konsisten untuk berjalan pada atau mendekati kapasitas penuh. Namun, jika sistem diharapkan menyajikan halaman web atau memberikan sesi interaktif responsif untuk layanan seperti SSH, mungkin diperlukan beberapa kekuatan pemrosesan menganggur yang tersedia.
Seperti banyak aspek kinerja, belajar tentang kebutuhan spesifik layanan pada sistem dan pemantauan perubahan tak terduga adalah kunci untuk mengoptimalkan sumber daya.
Pemantauan CPU
Ada banyak alat yang dapat memberi wawasan tentang status CPU sistem. Kita akan melihat dua perintah, uptime dan top. Keduanya adalah bagian dari instalasi default distribusi Linux yang paling populer dan biasanya digunakan sesuai permintaan untuk menyelidiki beban dan utilisasi CPU. Dalam contoh berikut, kita akan memeriksa Droplet 2 inti yang kami rekam di atas.
Uptime
Kita akan mulai dengan uptime perintah untuk melihat beban CPU yang, sementara hanya menampilkan rata-rata beban CPU dasar, dapat membantu saat sistem merespons pertanyaan interaktif secara perlahan karena memerlukan sedikit sumber daya sistem.
Acara uptime:
- Waktu sistem pada saat perintah dijalankan
- Berapa lama server telah berjalan
- Berapa banyak koneksi yang harus dimiliki pengguna mesin
- Rata-rata beban CPU selama satu, lima, dan lima belas menit terakhir.
uptimeHasilnya seperti ini:
14:08:15 up 22:54, 2 users, load average: 2.00, 1.37, 0.63
Dalam contoh ini, perintah dijalankan pada pukul 2:08 di server yang sudah hampir 23 jam. Dua pengguna terhubung saat uptime dijalankan. Karena server ini memiliki 2 CPU, pada saat sebelum perintah dijalankan, rata-rata beban CPU sebesar 2,00 berarti pada saat itu, rata-rata, dua proses menggunakan CPU dan tidak ada proses yang menunggu. Rata-rata beban 5 menit menunjukkan bahwa untuk beberapa interval itu, ada prosesor menganggur sekitar 60% dari waktu. Nilai 15 menit menunjukkan bahwa ada waktu pemrosesan yang lebih lama lagi. Ketiga figur tersebut menunjukkan peningkatan beban selama lima belas menit terakhir.
Uptime memberikan gambaran sekilas tentang rata-rata beban, namun untuk mendapatkan informasi lebih mendalam, kami akan kembali ke atas.
TOP
Seperti uptime, top tersedia pada sistem Linux dan Unix, namun selain menampilkan rata-rata beban untuk interval historis yang telah ditentukan sebelumnya, ini menyediakan informasi penggunaan CPU real-time periodik serta metrik kinerja terkait lainnya. Sedangkan uptime berjalan dan keluar, bagian atas tetap berada di latar depan dan menyegarkan secara berkala.
top
Header Block
Lima baris pertama memberikan ringkasan informasi tentang proses di server:
- Baris pertama hampir sama dengan output dari uptime. Seperti uptime rata-rata beban satu, lima, dan lima belas menit yang ditampilkan. Satu-satunya perbedaan antara baris ini dan outputnya uptimeadalah bahwa permulaan baris menunjukkan nama perintah top, dan waktu diperbarui setiap kali top refresh data.
- Baris kedua memberikan ringkasan keadaan tugas: jumlah total proses, diikuti oleh berapa banyak yang berjalan, tidur, berhenti, atau zombie.
- Baris ketiga memberitahu kita tentang utilisasi CPU. Angka-angka ini dinormalisasi dan ditampilkan sebagai persentase (tanpa simbol%) sehingga semua nilai pada baris ini harus menambahkan hingga 100% terlepas dari jumlah CPU.
- Baris keempat dan kelima informasi header memberi tahu kami tentang penggunaan memori dan swap.
Akhirnya, blok header diikuti oleh sebuah tabel dengan informasi tentang setiap proses individu, yang akan kita lihat sebentar lagi.
Pada contoh blok header di bawah, rata-rata beban satu menit melebihi jumlah prosesor sebesar 0,77, yang mengindikasikan antrian pendek dengan sedikit waktu menunggu. Kapasitas total CPU 100% digunakan dan ada banyak memori bebas.
Mari kita lihat masing-masing bidang pada garis CPU secara lebih mendalam:
- us, user: time running un-niced user processes
Kategori ini mengacu pada proses pengguna yang dimulai tanpa prioritas penjadwalan yang eksplisit.
Lebih khusus lagi, sistem Linux menggunakan niceperintah untuk menetapkan prioritas penjadwalan proses , jadi "un-niced" berarti nice tidak digunakan untuk mengubah nilai default. Nilai pengguna dan nilai bagus untuk semua proses pengguna. Penggunaan CPU yang tinggi dalam kategori ini mungkin menunjukkan proses pelarian, dan Anda dapat menggunakan output dalam tabel proses untuk mengidentifikasi apakah ini masalahnya.
- sy, system: time running kernel processes
Sebagian besar aplikasi memiliki komponen pengguna dan kernel. Ketika kernel Linux melakukan sesuatu seperti membuat panggilan sistem, memeriksa perizinan, atau berinteraksi dengan perangkat atas nama aplikasi, penggunaan kernel CPU akan ditampilkan di sini. Ketika sebuah proses melakukan pekerjaannya sendiri, maka akan muncul baik dalam bentuk gambar pengguna yang dijelaskan di atas atau, jika prioritasnya ditetapkan secara eksplisit menggunakan nice perintah tersebut, pada gambar bagus berikut ini.
- ni, nice: time running niced user processes
Seperti pengguna ini mengacu pada proses tugas yang tidak melibatkan kernel. Tidak seperti pengguna, prioritas penjadwalan untuk tugas ini ditetapkan secara eksplisit. Tingkat niceness suatu proses ditunjukkan pada kolom keempat dalam tabel proses di bawah header NI . Proses dengan nilai niceness antara 1 dan 20 yang mengkonsumsi banyak waktu CPU pada umumnya tidak menjadi masalah karena tugas dengan prioritas normal atau lebih tinggi akan bisa mendapatkan daya proses saat mereka membutuhkannya. Namun, jika tugas dengan peningkatan niceness, antara -1 dan -20, menggunakan CPU yang tidak proporsional, mereka dapat dengan mudah mempengaruhi responsivitas sistem dan menjamin penyelidikan lebih lanjut. Perhatikan bahwa banyak proses yang berjalan dengan prioritas penjadwalan tertinggi, -19 atau -20 tergantung pada sistemnya, ditelurkan oleh kernel untuk melakukan tugas penting yang mempengaruhi stabilitas sistem. Jika Anda tidak yakin dengan proses yang Anda lihat, sebaiknya Anda menyelidiki mereka daripada membunuh mereka.
- id, idle: time spent in the kernel idle handler
Angka ini menunjukkan persentase waktu CPU tersedia dan menganggur. Sebuah sistem umumnya dalam keadaan baik sesuai dengan CPU ketika pengguna , bagus , dan angka menganggurdigabungkan mendekati 100%.
- wa, IO-wait : time waiting for I/O completion
Angka IO-wait menunjukkan saat prosesor memulai aktivitas baca atau tulis dan menunggu operasi I / O selesai. Membaca / menulis tugas untuk sumber daya jarak jauh seperti NFS dan LDAP akan dihitung dalam IO-wait juga. Seperti waktu idle, lonjakan di sini adalah normal, namun segala jenis waktu yang sering atau berkelanjutan di negara ini menunjukkan tugas yang tidak efisien, perangkat yang lambat, atau masalah hard disk potensial.
- hi : time spent servicing hardware interrupts
Ini adalah waktu yang dihabiskan untuk interupsi fisik yang dikirim ke CPU dari perangkat periferal seperti disk dan antarmuka jaringan perangkat keras. Bila nilai interupsi perangkat keras tinggi, salah satu perangkat periferal mungkin tidak berfungsi sebagaimana mestinya.
- si : time spent servicing software interrupts
Perangkat lunak dikirim oleh proses daripada perangkat fisik. Tidak seperti interupsi perangkat keras yang terjadi pada tingkat CPU, interupsi perangkat lunak terjadi pada tingkat kernel. Bila nilai interrupt software menggunakan banyak daya proses, selidiki proses spesifik yang menggunakan CPU.
- st: time stolen from this vm by the hypervisor
Nilai "mencuri" mengacu pada berapa lama CPU virtual menghabiskan menunggu CPU fisik sementara hypervisor melayani dirinya sendiri atau CPU virtual yang berbeda. Pada dasarnya, jumlah penggunaan CPU di bidang ini menunjukkan berapa banyak daya pemrosesan yang VM siap Anda gunakan, namun tidak tersedia untuk aplikasi Anda karena digunakan oleh host fisik atau mesin virtual lainnya. Umumnya, melihat nilai mencuri hingga 10% untuk periode singkat bukanlah hal yang perlu dikhawatirkan. Jumlah mencuri yang lebih besar untuk jangka waktu yang lebih lama dapat mengindikasikan bahwa server fisik memiliki permintaan CPU yang lebih banyak daripada yang dapat didukungnya.
Sekarang setelah kita melihat ringkasan penggunaan CPU yang diberikan di top blok header, kita akan melihat tabel proses yang muncul di bawahnya, memperhatikan kolom khusus CPU.
Tabel Proses
Semua proses yang berjalan di server, dalam keadaan apapun, tercantum di bawah blok ringkasan. Contoh di bawah ini mencakup enam baris pertama tabel proses dari top perintah pada bagian di atas. Secara default, tabel proses diurutkan oleh CPU%, jadi kita melihat proses yang paling banyak memakan CPU.
%CPU disajikan sebagai nilai persen, namun tidak dinormalisasi, jadi pada sistem dua inti ini, total semua nilai dalam tabel proses harus menambahkan hingga 200% saat kedua prosesor benar-benar dimanfaatkan.
Sejauh ini, kami telah memeriksa dua perintah Linux yang biasa digunakan untuk melihat ke CPU load dan utilisasi CPU. Pada bagian selanjutnya, kita akan melihat ke dalam alat pemantau CPU yang tersedia tanpa biaya tambahan untuk tetesan DigitalOcean.
Grafik ini memvisualisasikan penggunaan masing-masing sumber daya untuk 6 jam terakhir, 24 jam, 7 hari dan 24 jam. Grafik CPU menyediakan informasi penggunaan CPU. Garis biru gelap menunjukkan penggunaan CPU oleh proses pengguna. Biru muda mengindikasikan penggunaan CPU oleh proses sistem. Nilai pada grafik dan detailnya dinormalisasi sehingga total kapasitasnya 100% terlepas dari jumlah virtual core.
%CPU disajikan sebagai nilai persen, namun tidak dinormalisasi, jadi pada sistem dua inti ini, total semua nilai dalam tabel proses harus menambahkan hingga 200% saat kedua prosesor benar-benar dimanfaatkan.
Catatan: Jika Anda memilih untuk melihat nilai yang dinormalisasi, Anda dapat menekan SHIFT + I, dan layar akan beralih dari mode Irix ke mode Solaris. Ini akan menampilkan informasi yang sama, dirata-ratakan di seluruh jumlah CPU server, sehingga jumlah yang digunakan tidak akan melebihi 100%. Saat kita beralih ke mode Solaris, kita akan mendapat pesan singkat bahwa mode Irix tidak aktif, dan nilai untuk proses stres kita akan beralih dari hampir 100% masing-masing menjadi sekitar 50%.
Sejauh ini, kami telah memeriksa dua perintah Linux yang biasa digunakan untuk melihat ke CPU load dan utilisasi CPU. Pada bagian selanjutnya, kita akan melihat ke dalam alat pemantau CPU yang tersedia tanpa biaya tambahan untuk tetesan DigitalOcean.
Pemantauan DigitalOcean untuk Pemanfaatan CPU
Secara default, semua Droplets menampilkan grafik Bandwidth, CPU, dan Disk I / O saat Anda mengklik nama Droplet di Control Panel:Grafik ini memvisualisasikan penggunaan masing-masing sumber daya untuk 6 jam terakhir, 24 jam, 7 hari dan 24 jam. Grafik CPU menyediakan informasi penggunaan CPU. Garis biru gelap menunjukkan penggunaan CPU oleh proses pengguna. Biru muda mengindikasikan penggunaan CPU oleh proses sistem. Nilai pada grafik dan detailnya dinormalisasi sehingga total kapasitasnya 100% terlepas dari jumlah virtual core.
Grafik tersebut memungkinkan Anda melihat apakah Anda mengalami intermiten atau perubahan penggunaan yang berkelanjutan dan sangat membantu dalam melihat perubahan pada pola penggunaan CPU server.
Selain grafik default ini, Anda dapat menginstal DigitalOcean Agent pada Droplet untuk mengumpulkan dan menampilkan data tambahan. Agen juga memungkinkan Anda menyetel Kebijakan Lansiran untuk sistem.
Setelah agen terinstal, Anda dapat menetapkan kebijakan lansiran untuk memberi tahu Anda tentang penggunaan sumber daya. Ambang batas yang Anda pilih akan bergantung pada beban kerja.
Contoh Lansiran
Pemantauan Perubahan: CPU di atas 1%
Jika Anda menggunakan Droplet terutama untuk mengintegrasikan dan merendam kode pengetesan, Anda mungkin mengatur peringatan yang hanya sedikit di atas pola historis sehingga mendeteksi apakah kode baru didorong ke server telah meningkatkan penggunaan CPU. Untuk grafik di atas dimana CPU tidak pernah mencapai 1%, ambang penggunaan CPU 1% selama 5 menit dapat memberikan peringatan dini tentang perubahan berbasis kode yang mempengaruhi penggunaan CPU.
Pada kebanyakan sistem, ada kemungkinan besar ambang batas ini benar-benar tidak sesuai, namun dengan menyesuaikan durasi dan menetapkan ambang sedikit di atas rata-rata beban saat ini, Anda dapat belajar sejak dini ketika kode baru atau layanan baru mempengaruhi utilisasi CPU.
Pemantauan Situasi Darurat: Pemanfaatan CPU di atas 90%
Anda mungkin juga ingin menetapkan ambang jauh di atas rata-rata, yang menurut Anda penting dan akan memerlukan penyelidikan segera. Misalnya, jika server yang mengalami penggunaan CPU berkelanjutan sebesar 50% selama interval lima menit cukup teratur tiba-tiba melonjak hingga 90%, Anda mungkin ingin masuk segera untuk menyelidiki situasinya. Sekali lagi, ambang batas spesifik untuk beban kerja sistem.