pengembangan-web-mp-pd.com

Bagaimana saya bisa memonitor beban hard disk di Linux?

Apakah ada utilitas baris perintah yang baik untuk memantau beban hard disk di linux? Sesuatu seperti top tetapi kemudian memonitor aktivitas disk i.s.o. penggunaan CPU.

Lebih khusus lagi, saya menduga bahwa untuk beberapa server (beban berat) setelah beberapa optimasi pada berbagai bagian program yang berjalan di atasnya, sekarang bottleneck hanyalah logging ke file pada disk. Tetapi saya merasa sangat sulit untuk menilai seberapa banyak lalu lintas yang dapat ditangani oleh server.

Alat ideal saya adalah sesuatu yang mencetak "Anda menggunakan 35% dari bandwidth disk Anda sekarang". Ada ide?

105
Pieter

Anda bisa mendapatkan ukuran yang cukup bagus dari ini menggunakan alat iostat.

% iostat -dx /dev/sda 5

Device:         rrqm/s   wrqm/s     r/s     w/s   rsec/s   wsec/s avgrq-sz avgqu-sz   await  svctm  %util
sda               0.78    11.03    1.19    2.82    72.98   111.07    45.80     0.13   32.78   1.60   0.64

Pemanfaatan disk tercantum di kolom terakhir. Ini didefinisikan sebagai

Persentase waktu CPU selama permintaan I/O dikeluarkan untuk perangkat (pemanfaatan bandwidth untuk perangkat). Saturasi perangkat terjadi ketika nilai ini mendekati 100%.

85
Dave Cheney

iotop adalah versi teratas yang melihat seberapa banyak IO setiap proses digunakan. Ini dalam repositori standar ubuntu; Saya tidak tahu apakah itu di RHEL atau Fedora, tapi seharusnya begitu.

enter image description here

Untuk kernel yang lebih lama (katakanlah CentOS 5.x atau RHEL 5.x) yang tidak mendukung iotop, gunakan topio sebagai gantinya (didokumentasikan di sini: http://yong321.freeshell.org/freeware/pio.html#linux . Ini bergantung pada/proc // io untuk statistik io dan menyediakan fungsionalitas yang mirip dengan iotop. Lihat tautan untuk perincian lebih lanjut.

82
Tim Howland

Seperti yang disarankan oleh sastanin dalam komentar, Anda dapat memproses langsung nilai yang diberikan dalam /sys/block/sda/stat atau /proc/diskstats. Ini mungkin membantu ketika tidak ada alat lain yang disebutkan tersedia dan Anda tidak dapat menginstalnya dengan mudah.

Misalnya (IIUC) sesuatu seperti ini (dalam bash) harus memberikan jumlah pembacaan per detik:

OLD=`awk '{print $1}' /sys/block/sda/stat` # First field is number of read I/Os processed
DT=1
for ii in `seq 1 10`
do
    sleep $DT
    NEW=`awk '{print $1}' /sys/block/sda/stat`
    echo $((($NEW-$OLD)/$DT))
    OLD=$NEW
done

Lihat https://www.kernel.org/doc/Documentation/iostats.txt dan https://www.kernel.org/doc/Documentation/block/stat.txt untuk dokumentasi.

14

Anda harus melihat di atas , yang menggabungkan kekuatan iotop/top/iftop, semuanya di satu tempat, dan menyoroti bagian-bagian penting pada sistem Anda.

8
Yvan

Saya akan merekomendasikan untuk melihat alat nmon. Ini akan menunjukkan kepada Anda beban langsung pada sejumlah parameter sistem serta merekam data ke file untuk pembacaan selanjutnya. Ini adalah alat gratis yang tersedia di sini :

6
MikeyB

untuk mengetahui berapa total bandwidth Anda, Anda dapat menggunakan hdparm -T /dev/sda untuk menguji kinerja cache cache (fileio) hdparm -t /dev/sda untuk menguji kinerja baca perangkat

contoh: laptop saya mendapat 82MB/detik dari disk SATA dan 2GB/detik dari cache. Dekstop saya mendapatkan 12GB/detik dari cache dan 500MB/detik dari array HW RAID. Saya menduga angka-angka terakhir bisa menjadi dua kali lipat pada perangkat keras kelas server.

atur readahead lebih tinggi dari 256, 4096 paling cocok untuk saya

for i in 128 256 512 1024 2048 4096 8192 16384 32768  
do  
hdparm --setra $i  
  for j in 1 2 4 8 16 32  
  do  
  time dd if=/dev/sda of=/dev/null bs="$j"k  count=<fixthis> 1GB / blocksize  
  done  
done  

kali membaca 1GB pada ukuran blok yang berbeda dan berbagai baca-depan

5
user2987

Alat standar untuk menampilkan beban hard disk adalah iostat.

Itu tidak akan memberi tahu Anda berapa banyak usia disk bandwidth yang Anda gunakan, karena tidak tahu berapa banyak bandwidth yang dimiliki disk Anda. Bagaimanapun, disk Anda hanya memiliki angka yang dikutip dari pabrikan untuk transfer besar data yang berdekatan.

4
Alnitak

Saya pikir RRDtool harus melakukan apa yang Anda inginkan di sini ia menggunakan daemon untuk membuang data sistem dan kemudian memungkinkan Anda untuk memprosesnya sesuka Anda. Saya sering menggunakannya untuk menghasilkan grafik dll untuk mengukur beban sistem.

3
PixelSmack

htop adalah alat yang bagus untuk memeriksa informasi proses. Anda dapat menambah atau menghapus kolom dan di antaranya adalah kecepatan baca dan tulis proses.

0
inquam