Bagaimana saya bisa mengetahui apakah suatu proses terikat ke CPU, Memori atau Disk?
Bagaimana saya bisa mengetahui apakah suatu proses terikat ke CPU, Memori atau Disk?
Jawaban:
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.
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?