Řešení 1:
Docela dobrou míru toho můžete získat pomocí iostat
nástroj.
% 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
Využití disku je uvedeno v posledním sloupci. Toto je definováno jako
Procento času CPU, během kterého byly zařízení vydány I/O požadavky (využití šířky pásma pro zařízení). K saturaci zařízení dojde, když se tato hodnota blíží 100 %.
Řešení 2:
iotop je verze top, která sleduje, kolik IO každý proces používá. Je ve standardních ubuntu repozitářích; Nevím, jestli je to v RHEL nebo Fedora, ale mělo by to být.
Pro starší jádra (řekněme CentOS 5.x nebo RHEL 5.x), která nepodporují iotop, použijte místo toho topio (zdokumentováno zde:http://yong321.freeshell.org/freeware/pio.html#linux. Spoléhá na / proc//io pro statistiku io a poskytuje podobné funkce jako iotop. Další podrobnosti naleznete v odkazu.
Řešení 3:
Jak navrhuje sastanin v komentářích, můžete přímo zpracovávat hodnoty uvedené v /sys/block/sda/stat
nebo /proc/diskstats
. To může být užitečné, když žádný z ostatních zmíněných nástrojů není k dispozici a nemůžete je snadno nainstalovat.
Například (IIUC) něco takového (v bash) by mělo udávat počet čtení za sekundu:
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
Dokumentaci najdete na https://www.kernel.org/doc/Documentation/iostats.txt a https://www.kernel.org/doc/Documentation/block/stat.txt.
Řešení 4:
Měli byste se podívat na atop, který kombinuje sílu iotop/top/iftop, vše na jednom místě a zdůrazňuje kritické části vašeho systému.
Řešení 5:
Doporučil bych se podívat na nástroj nmon. Ukáže vám živé zatížení řady parametrů systému a také záznam dat do souboru pro pozdější nahlédnutí. Je to bezplatný nástroj dostupný zde: