Apa artinya sebenarnya ketika proses "Waktu" telah berhenti di atas?

11

Saya akan mencari tahu mengapa kita mendapatkan peringatan swap kritis, dan saya akan menemukan sesuatu seperti:

  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  SWAP COMMAND
14683 user1     30  10 16.0g 772m  744 S  0.3  0.3 277:24.87 6.5g MATLAB
14576 user1     30  10 8125m 1.1g  736 S  0.3  0.4 261:16.73 4.1g MATLAB

di mana kolom TIME + dibekukan untuk proses tersebut.

Pertanyaan saya adalah, di atas, apa artinya ini?

Seperti yang saya pahami, stop time berarti proses yang tidak aktif / tidak sedang diproses oleh CPU. Namun contoh di atas menunjukkan penggunaan CPU 0,3%, jadi meskipun faktanya sangat kecil, bukankah kolom waktu terus bertambah?

Apakah proses ini "selesai"? Dalam hal apa, bagaimana mereka dibersihkan? Apakah pengguna yang memulai mereka perlu mengakuinya atau sesuatu agar sumber daya itu dibebaskan?

CptSupermrkt
sumber
1
0,3%, itu 1 centi-detik setiap 3/4 detik. Sudahkah Anda menunggu cukup lama?
Stéphane Chazelas
1
Wahyu yang bertiup: peningkatan waktu dihitung sebagai persentase dari penggunaan CPU? Wow. Jadi jika itu CPU 100%, itu akan sama dengan waktu nyata?
CptSupermrkt
5
TIME adalah waktu kumulatif yang dihabiskan CPU (CPU apa pun) untuk menjalankan utas apa pun sejak proses dimulai. Jadi bahkan bisa lebih cepat daripada waktu nyata jika Anda memiliki beberapa core CPU dan prosesnya adalah multi-threaded.
Stéphane Chazelas

Jawaban:

10

Jika Anda menjalankan pekerjaan palsu seperti sleep 120dan kemudian menontonnya di htopAnda akan melihat bahwa negara itu Salias "TIDUR" dan prosesnya TIMEtetap pada 0: 00.00 selama durasi.

Itu karena proses itu memakan waktu 0 CPU, yang merupakan maksud dari TIMEkolom. Ini melacak jumlah waktu CPU proses yang digunakan telah digunakan.

              ss # 1

Hitungan ini kadang-kadang membingungkan jika suatu proses dapat berjalan pada banyak inti CPU, karena tampaknya dapat menghabiskan lebih banyak waktu daripada yang tersedia. Semua yang terjadi di sana adalah bahwa jika Anda memiliki jumlah inti X, maka waktu Anda dapat muncul sebagai X * WAKTU.

slm
sumber
4

Alasan Anda mungkin mendapatkan disparitas seperti itu adalah karena kolom TIME + tidak memperhitungkan waktu CPU yang digunakan oleh anak-anak yang telah mati dari proses yang terdaftar .. Jadi, saya membayangkan garis yang Anda tampilkan menunjukkan aplikasi yang (mungkin, cepat) menelurkan anak-anak yang sekarat segera ..

So, the CPU usage is due to spawned children which do not count in the TIME+ column. Anda dapat mengubah atas untuk melakukan waktu kumulatif melalui sakelar 'S'.

Tapi saya pikir Anda melihat indikator yang salah untuk apa yang ingin Anda selidiki.

strace -p <pid> adalah teman Anda di sini, dan akan memungkinkan Anda mengintip ke dalam proses yang sedang berjalan dan apa yang sebenarnya dilakukannya.

Strace mengambil segudang opsi. beberapa opsi penting termasuk -f, -ff, -i, v, dll. Strace adalah alat yang paling berguna, jadi paling baik untuk melakukan man stracedan mencari sendiri pada opsi yang diberikannya untuk mengatasi masalah seperti ini

Chux Uzoeto
sumber