it-swarm-id.com

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

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

Screenshot of top

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 dari interupsi hardware servis?
  • si - apa arti dari interupsi perangkat lunak servis?
  • st - mereka mengatakan ini adalah "Waktu CPU dalam menunggu tanpa sengaja oleh CPU virtual sementara hypervisor sedang melayani prosesor lain (atau)% waktu CPU yang dicuri dari mesin virtual".

Tapi apa sebenarnya artinya? Bisakah seseorang lebih jelas?

Saya mencantumkan semua us, sy, ni, dll, karena ini dapat 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
206
its_me

hi adalah 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 memblokir CPU saat ini, dan bagian tentang softirqs yang dapat berjalan di mana saja tidak sepenuhnya benar, mungkin ada batasannya, 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 softirq. softirq akan menjadi hal yang memicu perutean paket yang sebenarnya.

si mewakili waktu yang dihabiskan dalam softirqs ini.

Bacaan yang bagus tentang mekanisme softirq (dengan sedikit sejarah juga) adalah Matthew Wilcox's Saya akan Melakukannya Kemudian: Softirqs, Tasklets, Bagian Bawah, Antrian Tugas, Antrian Kerja dan Pengatur Wakt = (PDF, 64k).

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

Dokumen akuntansi waktu CP 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.)

96
Mat
  • 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 idle
  • wa - Waktu yang dihabiskan untuk menunggu IO peripheral (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)
20
Simon Rigét

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 lainnya 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 segalanya sedikit lebih mudah untuk dipahami.

2
draufunddran