it-swarm-id.com

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

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

41
ssanj

Itu membutuhkan beberapa voodoo. Tergantung. Contoh:

  • Jika ada cukup memori dan disk sepertinya tidak terlalu sibuk, itu mungkin CPU-terikat. 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 latensi tampaknya tinggi, sepertinya 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.

16
Sudhanshu

periksa iotop, bisa bermanfaat

11
ithkuil

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.

9
JanC

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

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 Apakah "Saluran Tunggu" dari suatu proses?

4
poolie

Jalankan top dan lihat baris penggunaan cpu. % Pengguna tinggi menunjukkan bahwa ia terikat cpu. % Tunggu tinggi menunjukkan bahwa ia terikat IO.

2
psusi