Solusi 1:
Jika Anda cukup beruntung untuk mengetahui periode penggunaan puncak berikutnya, Anda dapat mempelajari statistik I/O per proses secara interaktif, menggunakan iotop.
Solusi 2:
Anda dapat menggunakan pidstat untuk mencetak statistik io kumulatif per proses setiap 20 detik dengan perintah ini:
# pidstat -dl 20
Setiap baris akan memiliki kolom berikut:
- PID - ID proses
- kB_rd/s - Jumlah kilobyte yang disebabkan tugas untuk dibaca dari disk per detik.
- kB_wr/s - Jumlah kilobyte yang ditimbulkan oleh tugas, atau akan menyebabkan ditulis ke disk per detik.
- kB_ccwr/s - Jumlah kilobyte yang penulisannya ke disk telah dibatalkan oleh tugas. Ini dapat terjadi ketika tugas memotong beberapa pagecache yang kotor. Dalam hal ini, beberapa IO yang tugas lainnya telah diperhitungkan tidak akan terjadi.
- Perintah - Nama perintah tugas.
Keluaran terlihat seperti ini:
05:57:12 PM PID kB_rd/s kB_wr/s kB_ccwr/s Command
05:57:32 PM 202 0.00 2.40 0.00 jbd2/sda1-8
05:57:32 PM 3000 0.00 0.20 0.00 kdeinit4: plasma-desktop [kdeinit]
05:57:32 PM PID kB_rd/s kB_wr/s kB_ccwr/s Command
05:57:52 PM 202 0.00 0.80 0.00 jbd2/sda1-8
05:57:52 PM 411 0.00 1.20 0.00 jbd2/sda3-8
05:57:52 PM 2791 0.00 37.80 1.00 kdeinit4: kdeinit4 Running...
05:57:52 PM 5156 0.00 0.80 0.00 /usr/lib64/chromium/chromium --password-store=kwallet --enable-threaded-compositing
05:57:52 PM 8651 98.20 0.00 0.00 bash
05:57:52 PM PID kB_rd/s kB_wr/s kB_ccwr/s Command
05:58:12 PM 202 0.00 0.20 0.00 jbd2/sda1-8
05:58:12 PM 3000 0.00 0.80 0.00 kdeinit4: plasma-desktop [kdeinit]
Solusi 3:
Tidak ada yang mengalahkan pemantauan berkelanjutan, Anda tidak bisa mendapatkan kembali data sensitif waktu setelah acara...
Ada beberapa hal yang mungkin Anda lakukan namun dapat memeriksa untuk melibatkan atau menghilangkan — /proc
adalah temanmu.
sort -n -k 10 /proc/diskstats
sort -n -k 11 /proc/diskstats
Bidang 10, 11 adalah akumulasi sektor tertulis, dan akumulasi waktu (ms) penulisan. Ini akan menampilkan partisi sistem file panas Anda.
cut -d" " -f 1,2,42 /proc/[0-9]*/stat | sort -n -k +3
Bidang-bidang itu adalah kutu PID, perintah, dan kumulatif IO-tunggu. Ini akan menampilkan proses panas Anda, meskipun hanya jika masih berjalan . (Anda mungkin ingin mengabaikan utas penjurnalan sistem file Anda.)
Kegunaan di atas tergantung pada waktu aktif, sifat proses Anda yang berjalan lama, dan bagaimana sistem file Anda digunakan.
Peringatan:tidak berlaku untuk kernel pra-2.6, periksa dokumentasi Anda jika tidak yakin.
(Sekarang, pergi dan bantulah masa depan Anda sendiri, instal Munin/Nagios/Cacti/terserah;-)
Solusi 4:
Gunakan atop
. (http://www.atoptool.nl/)
Tulis data ke file terkompresi yaitu atop
dapat dibaca nanti dengan gaya interaktif. Lakukan pembacaan (delta) setiap 10 detik. lakukan 1080 kali (3 jam; jadi jika Anda melupakannya, file keluaran tidak akan membuat Anda kehabisan disk):
$ atop -a -w historical_everything.atop 10 1080 &
Setelah hal buruk terjadi lagi:
(meskipun masih berjalan di latar belakang, itu hanya ditambahkan setiap 10 detik)
% atop -r historical_everything.atop
Karena Anda mengatakan IO, saya akan menekan 3 tombol:tdD
t - move forward to the next data gathering (10 seconds)
d - show the disk io oriented information per process
D - sort the processes based on disk activity
T - go backwards 1 data point (10 seconds probably)
h - bring up help
b - jump to a time (nearest prior datapoint) - e.g. b12:00 - only jumps forward
1 - display per second instead of delta since last datapiont in the upper half of the display
Solusi 5:
Gunakan btrace
. Mudah digunakan, misalnya btrace /dev/sda
. Jika perintah tidak tersedia, mungkin tersedia dalam paket blktrace .
EDIT :Karena debugfs tidak diaktifkan di kernel, Anda dapat mencoba date >>/tmp/wtf && ps -eo "cmd,pid,min_flt,maj_flt" >>/tmp/wtf
atau serupa. Mencatat kesalahan halaman tentu saja tidak sama dengan menggunakan btrace, tetapi jika Anda beruntung, ini MUNGKIN memberi Anda beberapa petunjuk tentang proses yang paling membutuhkan disk. Saya baru saja mencobanya di salah satu server I/O saya yang paling intensif dan daftarnya menyertakan proses yang saya tahu memakan banyak I/O.