Skenario: Tiba-tiba, komputer saya terasa lemas. Mouse bergerak tetapi jendela butuh waktu lama untuk dibuka, dll. uptime
Mengatakan bebannya 7,69 dan naik .
Apa cara tercepat untuk mengetahui proses mana yang menjadi penyebab beban?
Sekarang, "top" dan alat-alat serupa bukanlah jawabannya karena mereka menunjukkan penggunaan CPU atau memori tetapi tidak keduanya sekaligus. Yang saya butuhkan adalah perintah tunggal yang saya bisa ketik saat itu terjadi - sesuatu yang akan mencari tahu
Sistem mencoba menukar 8GB RAM ke disk karena proses X ...
atau
proses X mencari seluruh disk
atau
proses X menggunakan CPU 400% "
Jadi yang saya cari adalah iostat, htop / di atas dan alat-alat serupa bertemu menjadi satu dengan output seperti ini:
1235 cp - Disk trashing
87 chrome - Uses 2 GB of RAM
137 nfs_bench - Uses 95% of the network bandwidth
Saya tidak ingin alat yang memberi saya beberapa angka yang dapat saya analisis tetapi alat yang memberi tahu saya persis proses mana yang menyebabkan beban saat ini. Asumsikan bahwa pengguna di depan keyboard hampir tidak tahu bagaimana menulis "proses", tetapi pengguna dengan cepat kewalahan ketika datang ke "ukuran penduduk", "memori virtual" atau "proses siklus hidup".
Argumen saya seperti ini: Seorang pengguna memperhatikan masalah. Mungkin ada ribuan alasan ... well, hampir :-) Pengguna ingin tahu sumber masalahnya.
Solusi saat ini memberi saya banyak angka, dan saya perlu tahu apa arti angka-angka ini. Apa yang saya cari adalah alat meta. 99% dari data tidak relevan dengan masalah. Jadi apa yang harus dilakukan alat ini adalah mencari proses yang menyimpan beberapa sumber daya dan hanya daftar yang disertai dengan "proses ini membutuhkan banyak CPU, ini menghasilkan banyak IRQ, proses ini mengalokasikan banyak RAM (dan masih terus berkembang)".
Ini akan menjadi daftar yang relatif singkat. Akan jauh lebih sederhana bagi seseorang yang baru dalam hal ini untuk menemukan pelakunya dari daftar ini daripada dari output, katakanlah, htop
yang memberi saya sekitar 5.000 angka tetapi mengharuskan saya untuk melipat proses multi-thread sendiri (saya memiliki 50 baris yang mengatakan VIRT 2750M
tetapi hanya 16 GB RAM - mesin harus menukar dirinya sendiri sampai mati tetapi tentu saja, ini adalah salah tafsir dari data yang dapat terjadi dengan cepat).
sumber
top
artinya)Jawaban:
Saya benar-benar harus tersenyum pada respons karena masing-masing menyuruh Anda menjalankan alat X. Satu-satunya masalah adalah jika apa yang Anda lihat berselang tidak akan ada cara untuk menghubungkan sesuatu. Alat seperti sar dapat membantu jika Anda menjalankannya pada frekuensi yang cukup tinggi, tetapi saya akan mengklaim colll lebih baik.
Seperti sar , Anda menjalankannya sebagai daemon dengan menginstal RPM dan melakukan
/etc/init.d/collectl start
.Sekarang ketika Anda melihat sesuatu yang lamban,
collectl -p /var/log/collectl/filename --top
akan memutar data dan menunjukkan kepada Anda proses teratas. Anda juga bisa berlaricollectl --top
dan melihatnya secara langsung. BTW - apa pun yang dapat Anda lakukan secara real time Anda juga dapat memutar.Adapun beban CPU, bagaimana jika Anda mendapatkan kelebihan dengan interupsi?
collectl -sC
tidak hanya akan menampilkan beban pada masing-masing CPU (atau digunakan-sc
untuk beban rata-rata), itu juga akan menunjukkan bagaimana mereka menghabiskan waktu mereka. Sertakan-j
(-scj
) dan Anda akan melihat jumlah interupsi / CPU. Gunakan huruf besar-J
dan Anda akan melihat JENIS setiap interupsi / CPU.Tentu saja, jika Anda benar-benar menyukai vmstat, Anda selalu dapat memutar ulang data yang dikumpulkan dengan
--vmstat
dan itu akan menampilkan data historis dalam format vmstat.Ada jauh lebih banyak switch daripada yang saya punya waktu untuk daftar, tetapi Anda dapat memeriksanya di SourceForge atau hanya google saja.
sumber
"top" bekerja cukup baik, selama Anda melihat angka yang tepat. Ayo lihat:
Sekarang, jika sistemnya lambat karena semua CPU diambil, itu akan ditampilkan sebagai kolom "us" dan "sy" pada "Cpu (s):" baris yang mendekati 100% secara bersamaan.
Jika lambat karena bertukar, "Mem:" "gratis" menunjukkan nilai yang sangat rendah dan "Tukar:" "menggunakan" nilai tinggi.
Jika lambat karena I / O secara umum, maka "Cpu (s):" "wa" mengatakan bahwa waktu dihabiskan untuk menunggu I / O.
Sekarang, jika Anda tahu I / O menunggu adalah masalahnya, Anda dapat menggunakan program "iotop" untuk mengetahui proses mana yang paling banyak membuat I / O.
sumber
top
, begitu juga komputer. Ini bukan Mona Lisa's Smile, itu hanya mencari-cari angka yang "buruk".Berdasarkan penggunaan 400%, saya akan berasumsi bahwa Anda memiliki prosesor quad-core. Rata-rata beban Anda hampir dua kali lipat kapasitas dan setengah dari proses menunggu untuk CPU.
Pertama,
renice
shell Anda ke 0 atau -10 untuk mendapatkan sistem yang lebih responsif, dan kemudian gunakanhtop
untuk menemukan proses yang menyinggung dan ikuti denganstrace
proses yang diberikan. Alat lain yang bisa bermanfaat adalah:vmsat
sar
iostat
pmap
sumber
Mouse yang lamban juga bisa disebabkan oleh beban interupsi yang terlalu tinggi, atau, pengontrol USB menjadi sangat sibuk (saya menganggap itu adalah mouse USB).
sumber
vmstat dapat membantu Anda secara umum. Contoh penggunaannya adalah:
Anda dapat menjalankannya setiap X detik juga - cukup tambahkan angka X setelah perintah.
Sunting: Mengingat komentar ... Tuliskan yang berikut ke file dan buat file itu dapat dieksekusi. Ini akan memberi tahu Anda 3 proses teratas pada mesin.
Jika Anda ingin tahu memori mana yang macet dan bukan CPU, maka baca halaman manual teratas dan ubah urutan tampilan.
sumber