Perintah "top" Linux: Apa kita, sy, ni, id, wa, hi, si dan st (untuk penggunaan CPU)?

195

Ketika saya menerbitkan topdi Linux, saya mendapatkan hasil yang mirip dengan ini:

Tangkapan layar atas

Salah satu baris memiliki informasi penggunaan CPU diwakili seperti ini:

Cpu(s): 87.3%us,  1.2%sy,  0.0%ni, 27.6%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st

Sementara saya tahu definisi masing-masing (jauh di bawah), saya tidak mengerti apa sebenarnya tugas ini.

  • hi - apa arti servis dari gangguan hardware?
  • si - apa artinya perangkat lunak servis mengganggu?
  • st - mereka mengatakan ini adalah "waktu CPU menunggu tanpa sengaja oleh CPU virtual sementara hypervisor sedang melayani prosesor lain (atau)% waktu CPU dicuri dari mesin virtual".

Tapi apa sebenarnya artinya? Bisakah seseorang lebih jelas?

Aku terdaftar semua us, sy, ni, dll, karena bisa membantu orang lain mencari yang sama. Informasi ini tidak ada di halaman manual.

us: user cpu time (or) % CPU time spent in user space
sy: system cpu time (or) % CPU time spent in kernel space
ni: user nice cpu time (or) % CPU time spent on low priority processes
id: idle cpu time (or) % CPU time spent idle
wa: io wait cpu time (or) % CPU time spent in wait (on disk)
hi: hardware irq (or) % CPU time spent servicing/handling hardware interrupts
si: software irq (or) % CPU time spent servicing/handling software interrupts
st: steal time - - % CPU time in involuntary wait by virtual cpu while hypervisor is servicing another processor (or) % CPU time stolen from a virtual machine
ini aku
sumber

Jawaban:

92

hiadalah waktu yang dihabiskan untuk memproses interupsi perangkat keras. Gangguan perangkat keras dihasilkan oleh perangkat keras (kartu jaringan, pengontrol keyboard, pengatur waktu eksternal, sensor perangkat keras, ...) ketika mereka perlu memberi sinyal sesuatu ke CPU (data telah tiba, misalnya).

Karena ini dapat terjadi sangat sering, dan karena mereka pada dasarnya memblokir CPU saat ini saat mereka sedang berjalan, penangan interupsi perangkat keras kernel ditulis secepat dan sesederhana mungkin.

Jika proses yang panjang atau rumit perlu dilakukan, tugas-tugas ini ditunda menggunakan panggilan mekanisme softirqs. Ini dijadwalkan secara independen, dapat berjalan pada CPU apa pun, bahkan dapat berjalan secara bersamaan (tidak ada yang benar dengan penangan interupsi perangkat keras).

Bagian tentang IRQ keras yang menghalangi CPU saat ini, dan bagian tentang softirqskemampuan untuk menjalankan di mana saja tidak sepenuhnya benar, mungkin ada batasan, dan beberapa IRQ keras dapat mengganggu yang lain.

Sebagai contoh, "data yang diterima" interupsi perangkat keras dari kartu jaringan dapat dengan mudah menyimpan informasi "kartu ethX perlu diservis" di suatu tempat dan menjadwalkan a softirq. Itu softirqakan menjadi hal yang memicu routing paket yang sebenarnya.

simewakili waktu yang dihabiskan dalam ini softirqs.

Bacaan yang bagus tentang softirqmekanisme (dengan sedikit sejarah juga) adalah Matthew Wilcox's I'll I Do It Later: Softirqs, Tasklets, Bottom Half, Antrian Tugas, Antrian Kerja dan Pengatur Waktu (PDF, 64k).

st, "mencuri waktu", hanya relevan di lingkungan yang tervirtualisasi. Ini mewakili waktu ketika CPU nyata tidak tersedia untuk mesin virtual saat ini - itu "dicuri" dari VM oleh hypervisor (baik untuk menjalankan VM lain, atau untuk kebutuhan sendiri).

The akuntansi waktu CPU dokumen dari IBM memiliki informasi lebih lanjut tentang mencuri waktu, dan akuntansi CPU dalam lingkungan tervirtualisasi. (Ini ditujukan untuk perangkat keras tipe zSeries, tetapi ide umumnya sama untuk sebagian besar platform.)

Tikar
sumber
sangat jelas. Jadi, jika saya menghubungkan sistem suara baru, headset dll (perangkat keras apa pun dalam hal ini) juga menyebabkan gangguan perangkat keras, bukan?
its_me
2
Ya, itu bisa menjadi cara bagi chipset suara Anda untuk memberi sinyal bahwa "sesuatu terjadi". Tetapi mencolokkan headset mungkin ditangani sepenuhnya oleh chip suara itu sendiri (routing ulang output suara dari utama ke headphone Anda misalnya), sehingga mungkin tidak menghasilkan interupsi ke CPU utama. Mengetik tombol pada keyboard Anda akan menghasilkan interupsi (dari perangkat hub USB Anda jika Anda memiliki keyboard USB). Lihat juga cat /proc/interrupts(man man procfor doc. Tentang file itu).
Mat
15
  • kami - Waktu yang dihabiskan di ruang pengguna
  • sy - Waktu yang dihabiskan dalam ruang kernel
  • ni - Waktu yang dihabiskan untuk menjalankan proses pengguna yang telah ditentukan (Prioritas yang ditentukan pengguna)
  • id - Waktu yang dihabiskan dalam operasi siaga
  • wa - Waktu yang dihabiskan untuk menunggu peripheral IO (mis. disk)
  • hi - Waktu yang dihabiskan untuk menangani rutinitas interupsi perangkat keras. (Setiap kali unit periferal menginginkan perhatian dari CPU, itu benar-benar menarik garis, untuk memberi sinyal CPU untuk melayani itu)
  • si - Waktu yang dihabiskan untuk menangani rutinitas interupsi perangkat lunak. (sepotong kode, memanggil rutin interupsi ...)
  • st - Waktu yang dihabiskan untuk menunggu dengan cpu virtual tanpa disengaja sementara hypervisor sedang melayani prosesor lain (dicuri dari mesin virtual)
Simon Rigét
sumber
2

Nilai "st" dapat dijelaskan dengan menggunakan instance T2.micro EC2 dari AWS.

Dalam dokumentasi AWS Anda dapat membaca bahwa Anda hanya mendapatkan kinerja dasar 10% per VCPU. Ini berarti bahwa jika Anda memiliki proses yang akan menghabiskan banyak waktu cpu, nilai "st" akan tetap sekitar 90 karena Anda hanya diperbolehkan menggunakan 10% dari VCPU. Jumlah nilai-nilai lain akan tetap sekitar 10.

Jadi AWS menggunakan hypervisor untuk hanya memungkinkan Anda mengakses sejumlah daya komputasi. Ini memperlambat Anda karena niat karena Anda hanya menggunakan jenis contoh tingkat rendah.

Saya harap ini membuat hal-hal sedikit lebih mudah dimengerti.

draufunddran
sumber