hi
adalah waktu yang dihabiskan untuk memproses interupsi perangkat keras. Interupsi perangkat keras dihasilkan oleh perangkat keras (kartu jaringan, pengontrol keyboard, pengatur waktu eksternal, sensor perangkat keras, ...) saat mereka perlu memberi sinyal sesuatu ke CPU (data telah tiba, misalnya).
Karena hal ini dapat terjadi sangat sering, dan karena pada dasarnya memblokir CPU saat ini saat sedang berjalan, penangan interupsi perangkat keras kernel dibuat secepat dan sesederhana mungkin.
Jika pemrosesan yang panjang atau rumit perlu dilakukan, tugas-tugas ini ditangguhkan menggunakan pemanggilan mekanisme softirqs
. Ini dijadwalkan secara independen, dapat berjalan di CPU apa pun, bahkan dapat berjalan secara bersamaan (tidak ada yang benar untuk penangan interupsi perangkat keras).
Bagian tentang IRQ keras yang memblokir CPU saat ini, dan bagian tentang softirqs
dapat berjalan di mana saja tidak sepenuhnya benar, mungkin ada batasan, dan beberapa IRQ keras dapat mengganggu yang lain.
Sebagai contoh, interupsi perangkat keras "data diterima" dari kartu jaringan dapat dengan mudah menyimpan informasi "kartu ethX perlu dilayani" di suatu tempat dan menjadwalkan softirq
. softirq
akan menjadi hal yang memicu perutean paket sebenarnya.
si
mewakili waktu yang dihabiskan dalam softirqs
ini .
Bacaan yang bagus tentang softirq
mekanisme (dengan sedikit sejarah juga) adalah Matthew Wilcox's I'll Do It Later:Softirqs, Tasklets, Bottom Halfs, Task Queues,Work Queues and Timers (PDF, 64k).
st
, "mencuri waktu", hanya relevan di lingkungan virtual. Ini mewakili waktu ketika CPU sebenarnya tidak tersedia untuk mesin virtual saat ini — itu "dicuri" dari VM tersebut oleh hypervisor (baik untuk menjalankan VM lain, atau untuk kebutuhannya sendiri).
Dokumen akuntansi waktu CPU dari IBM memiliki lebih banyak informasi tentang mencuri waktu, dan akuntansi CPU di lingkungan virtual. (Ini ditujukan untuk perangkat keras tipe zSeries, tetapi ide umumnya sama untuk sebagian besar platform.)
- us - Waktu yang dihabiskan di ruang pengguna
- sy - Waktu yang dihabiskan di ruang kernel
- ni - Waktu yang dihabiskan untuk menjalankan proses pengguna yang baik (Prioritas yang ditentukan pengguna)
- id - Waktu yang dihabiskan dalam operasi menganggur
- wa - Waktu yang dihabiskan untuk menunggu di periferal IO (mis. disk)
- hai - Waktu yang dihabiskan untuk menangani rutinitas interupsi perangkat keras. (Setiap kali unit periferal menginginkan perhatian dari CPU, ia benar-benar menarik garis, untuk memberi sinyal kepada CPU untuk memperbaikinya)
- si - Waktu yang dihabiskan untuk menangani rutinitas interupsi perangkat lunak. (sepotong kode, memanggil rutinitas interupsi...)
- st - Waktu yang dihabiskan untuk menunggu tanpa disengaja oleh cpu virtual saat hypervisor melayani prosesor lain (dicuri dari mesin virtual)
Nilai "st" dapat dengan mudah dijelaskan dengan menggunakan instans 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 mengizinkan Anda mengakses sejumlah daya komputasi. Ini memperlambat Anda dengan sengaja karena Anda hanya menggunakan jenis instance tingkat rendah.
Saya harap ini membuat segalanya sedikit lebih mudah untuk dipahami.