Menentukan proses mana yang menyebabkan disk I / O berat?

19

Saya telah melihat pertanyaan ini: Bagaimana mengidentifikasi penulisan yang berat ke disk?

Dan saya telah menggunakan dstat dan di atas sebelumnya ... tetapi mereka tampaknya tidak menunjukkan proses apa yang menyebabkan disk I / O. Misalnya, dari dstat:

dstat -ta --top-bio
----system---- ----total-cpu-usage---- -dsk/total- -net/total- ---paging-- ---system-- ----most-expensive----
     time     |usr sys idl wai hiq siq| read  writ| recv  send|  in   out | int   csw |  block i/o process
14-12 16:16:25| 22   3  49  26   0   0|2324k    0 |  17k 6144B|   0     0 |1324     0 |
14-12 16:16:26| 24   3  30  43   0   0|4960k 8192B|1498B 4322B|   0     0 |1494     0 |wget          0  4096B
14-12 16:16:27| 25   4  38  33   0   0|4612k  548k|5011B   27k|   0     0 |1582     0 |kjournald     0    24k
14-12 16:16:28| 23   3  42  32   0   0|5072k    0 |  24k 4368B|   0     0 |1495     0 |

Perhatikan seberapa tinggi dsk / total - antara 2 dan 5 MB / detik. Tapi kemudian lihat kolom 'paling mahal' - hanya beberapa byte di sini, beberapa KB di sana, dan kadang-kadang bahkan tidak ada. Ini sama halnya dengan 'di atas'. Menunjukkan penggunaan disk keseluruhan tinggi, tetapi penggunaan rendah dari proses individual. Saya menjalankan CentOS 5, kernel 2.6.18-53.

Apakah saya memerlukan versi kernel yang lebih baru? Mungkin beberapa pengaturan konfigurasi sistem di suatu tempat? Beranda 'atas' merekomendasikan untuk menginstal beberapa patch kernel, tetapi saya lebih suka tidak melalui kerumitan mengkonfigurasi & mengkompilasi kernel saya sendiri.

davr
sumber

Jawaban:

26

iotop ( tautan ) untuk pemula;) Saya belum melihat Anda memposting output darinya.

1: Saya telah mengalami situasi yang hampir sama dengan sistem berkas logging dan atime - namun dengan lebih banyak menulis.

Coba remount dengan noatime dan matikan logging sistem file (nanti hanya untuk pengujian) untuk melihat apakah itu berbasis sistem file dan seperti dikatakan, iotop jika itu berbasis proses.

2: Saya kira partisi ini bukan bagian dari array raid yang baru dibangun kembali, bukan?

3: Jika Anda memiliki banyak file yang sangat kecil (jauh lebih kecil dari ukuran sebenarnya perangkat blok dan / atau blok sistem file), dan Anda membaca file-file kecil itu, Anda akhirnya membaca seluruh blok dari sistem, dan sebagian besar dari blok-blok itu akan dibaca secara gratis.

4: Jika tidak ada yang membantu di atas, Anda selalu bisa mendapatkan daftar file yang diakses dengan mengeksekusi

echo 1 > /proc/sys/vm/block_dump

harap dicatat bahwa ini banyak menurunkan kinerja sistem. Instruksi tersedia di posting saya sebelumnya di sini

asdmin
sumber
1
Kalahkan saya dengan sekitar 5 detik;) +1
jam
Saya baru saja beruntung, tetapi segera memberikan jawaban, karena itu bukan jawaban untuk pertanyaan;)
asdmin