Bagaimana cara membaca htop

9

Saya mengalami kesulitan memahami informasi yang ditampilkan oleh htoppengganti populer untuk perintah top Linux.

dump layar htop

Dalam cuplikan layar di atas, ada banyak contoh java yang terdaftar, tetapi hanya induk yang menggunakan waktu CPU. Apa yang lainnya?

Mengapa bar penggunaan CPU menunjukkan core yang sibuk ketika kolom CPU% menunjukkan tidak banyak terjadi di semua proses? Bahkan, mereka bergerak tanpa korelasi sebagian besar waktu.

Mengapa Load Average, kanan atas, yang saya asumsikan adalah sejarah 3 langkah, begitu rendah ketika core hampir selalu hijau dan terlihat sibuk?

Akankah seseorang berbaik hati menjelaskan cara membaca informasi ini?

Terima kasih!

Luke Puplett
sumber
Saya telah membuat beberapa perubahan yang banyak membantu. Tampilkan utas dalam warna berbeda, tampilkan nama utas, perbarui nama proses saat refresh, dan sebagian besar, ubah penundaan menjadi 2/10 detik. Kecepatan pembaruan default hanya menunjukkan jeda besar antara meter CPU dan proses.
Luke Puplett
1
Setidaknya untuk rata-rata beban, itu tidak selalu bernilai rendah. Beban pada dasarnya merupakan indikator jika sistem harus menunggu untuk melakukan sesuatu. Nilai yang dapat diterima kurang dari jumlah core, dalam hal ini 4. Jadi rata-rata itu masuk akal. Itu adalah 1, 5, dan 15 menit terakhir. Untuk info lebih lanjut, lihat [Wikipedia] ( en.wikipedia.org/wiki/Load_(computing))
ssmy

Jawaban:

5
  1. Mengenai "Load" dan CPU%, wikipedia memiliki penjelasan detail dan contoh, berikut ini adalah kutipan parsial

    Komputer idle memiliki jumlah beban 0 dan setiap proses menggunakan atau menunggu CPU (antrian siap atau menjalankan antrian) menambah jumlah beban dengan 1. Sebagian besar sistem UNIX hanya menghitung proses dalam menjalankan (pada CPU) atau berjalan (menunggu) CPU) menyatakan. Namun, Linux juga menyertakan proses dalam kondisi tidur yang tidak terputus (biasanya menunggu aktivitas disk), yang dapat menyebabkan hasil yang sangat berbeda jika banyak proses tetap diblokir di I / O karena sistem I / O yang sibuk atau macet. Ini, misalnya, termasuk proses pemblokiran karena kegagalan server NFS atau memperlambat media (misalnya, perangkat penyimpanan USB 1.x). Keadaan seperti itu dapat menghasilkan rata-rata beban yang tinggi, yang tidak mencerminkan peningkatan aktual dalam penggunaan CPU (tetapi masih memberi gambaran tentang berapa lama pengguna harus menunggu).

    Sistem menghitung rata-rata beban sebagai rata-rata bergerak yang teredam / tertimbang secara eksponensial dari jumlah beban. Tiga nilai rata-rata beban merujuk pada operasi sistem satu, lima, dan lima belas menit terakhir.

    Untuk sistem CPU tunggal yang terikat CPU, orang dapat menganggap rata-rata beban sebagai persentase dari pemanfaatan sistem selama periode waktu masing-masing. Untuk sistem dengan banyak CPU, seseorang harus membagi angka dengan jumlah prosesor untuk mendapatkan persentase yang sebanding.

    Bar mungkin sibuk bergerak, tetapi tidak pernah mencapai 100%, yang akan menunjukkan cpu / core sepenuhnya digunakan. Bilah ini hanya merupakan visualisasi dari% pemanfaatan cpu, yaitu 27%, 26,5%, 24,5%, 24,7% dan 71,7%. Semua core cpu masih memiliki kekuatan untuk "cadangan". Mereka semua kurang dimanfaatkan pada saat itu.

    Sistem 5 core / cpu yang sepenuhnya digunakan akan memiliki muatan 5 atau lebih.

  2. Mengenai baris Java, mereka adalah induk (PID = 5073) dan proses anak. Saya tidak bisa menjelaskan mengapa orang tua mengumpulkan waktu cpu paling banyak. Itu benar-benar tergantung pada logika internal program. Namun, menurut TIME +, proses anak-anak itu menghabiskan waktu cpu, dengan yang terakhir (PID = 5074) paling banyak terakumulasi.

John Siu
sumber
Apakah mungkin bahwa proses anak adalah threadpool JVM? Ketika saya mengatur opsi untuk menampilkan nama utas, mereka semua diberi nama yang sama. Saya seorang programmer Windows + .NET, fyi.
Luke Puplett
Ya, mungkin mereka thread.
John Siu