Bagaimana saya bisa mengetahui apakah suatu proses adalah CPU, Memori atau Disk-terikat?


42

Bagaimana saya bisa mengetahui apakah suatu proses terikat ke CPU, Memori atau Disk?


Jika Anda menggunakan GUI gnome, Anda dapat menambahkan applet Monitor Sistem ke panel Anda. Dalam pengaturan Anda dapat mengatur siklus yang hilang ke IO-Tunggu untuk muncul sebagai putih, dan mengatur grafik Memori, CPU dan Disk Baca / Tulis untuk ditampilkan. Saya biasanya mengubah warna grafik default untuk membuatnya lebih mudah untuk membedakan memori pengguna / OS dan disk baca / tulis. Ini bukan solusi nyata, tetapi berguna untuk memiliki bersama semua alat yang disebutkan dalam jawaban.
Jeremy

1
@ luis-alvarado Saya tidak setuju bahwa pertanyaan ini tidak berguna, meskipun saya berpendapat ini mungkin lebih cocok di StackOverflow atau sejenisnya. Saya datang ke sini mencari solusi.
skeggse

Masalah dengan pertanyaan yang ditanyakan adalah tidak mempertimbangkan lingkungan eksekusi. Metode mana yang paling efektif dalam menemukan bottleneck komponen host dari suatu pekerjaan / proses terkait erat dengan runtime, lingkungan eksekusi, OS host, perangkat keras, dll dari pekerjaan dan tooling apa yang tersedia untuk setiap komponen untuk memeriksanya. Beberapa runtime (runtime Erlang atau JVM IBM, misalnya) memiliki alat yang mendalam untuk ini daripada rentang seluruh lingkungan, yang lain sama sekali tidak memiliki tooling dan membuat Anda membuat tebakan yang dididik berdasarkan apa pun htop / iotop / dll. dapat menunjukkan kepada Anda.
zxq9

Jawaban:


19

Itu membutuhkan beberapa voodoo. Tergantung. Contoh:

  • Jika ada cukup memori dan disk sepertinya tidak terlalu sibuk, itu mungkin terikat CPU. Lihatlah penggunaan CPU dan jika berbatasan dengan 100% CPU terikat. Jika tidak ada hambatan buatan dalam implementasi. Misalnya pada CPU dual-core proses threaded tunggal tidak akan lebih dari 50% penggunaan CPU.

  • Jika CPU dan memori tersedia, tetapi disk sangat sibuk, atau IO latency tampaknya tinggi, kemungkinan IO-nya terikat. Lihat apakah menambahkan lebih banyak disk (RAID?) Membantu.

  • Bukan dari salah satu di atas? Periksa memori yang tersedia.

  • Memori yang cukup? Mungkin ada hambatan buatan dalam proses itu sendiri yaitu mungkin seseorang lupa menghapus tidur (1)? Naah biasanya tidak semudah itu. ;)

Ada alasan mengapa kami memiliki laboratorium lengkap untuk insinyur kinerja di sebagian besar perusahaan yang berurusan dengan produk yang peka terhadap kinerja!

Gunakan alat-alat seperti sar, vmstat, iostat, oprofile, lockstat, dtrace, alat pemantauan perf khusus produk dll, untuk men-debug masalah perf.


2
Apakah ada alat yang mengikat semua ini?
ssanj

biasanya tidak, tetapi jika dtrace tersedia di sistem Anda (Solaris / FreeBSD / Mac OS X?), Anda mungkin bisa jauh hanya dengan menggunakan itu.
Sudhanshu

Saya baru ingat ada Systemtap di linux (mirip dengan dtrace), kecuali saya tidak yakin tentang kematangan alat.
Sudhanshu

vmstat bermanfaat.
James


9

Alat yang dapat berguna untuk pengecekan waktu-nyata sejumlah statistik proses (memori, penggunaan CPU, I / O, dll.) Adalah htop . Itu tidak menggantikan alat yang lebih khusus yang dinamai oleh Sudhanshu, tetapi mungkin merupakan awal yang baik.


4

Selain alat-alat lain yang disebutkan, jalankan ps l PID, masukkan id proses yang relevan, atau lihat kolom STATE dan WCHAN di bagian atas atau htop.

Jika dalam keadaan D (untuk disk), maka ia melakukan file IO. Ini bisa karena itu baik membaca banyak file, atau karena itu menggunakan banyak memori dan bertukar. Kolom WCHAN akan memberi tahu Anda apa fungsi kernel di dalamnya; googling untuk mereka atau bertanya di sini dapat memberi Anda beberapa indikasi apa artinya.

Jika dalam kondisi R (run), ia menggunakan CPU di ruang pengguna, dengan kata lain CPU terikat pada saat itu.

Jika dalam kondisi S (sleep), itu ada di dalam system call yang interruptible, yang bisa berarti itu benar-benar tidur, atau sedang melakukan sesuatu seperti menunggu lalu lintas jaringan atau kunci. Sekali lagi, melihat wchan spesifik akan memberi tahu Anda lebih banyak.

Lihat juga Apa "Saluran Tunggu" dari suatu proses?


2

Jalankan topdan lihat baris penggunaan cpu. % Pengguna tinggi menunjukkan bahwa ia terikat cpu. % Tunggu tinggi menunjukkan bahwa itu terikat IO.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.