diff -r 000000000000 -r 624a9ab34425 disk_io_stat.pl --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/disk_io_stat.pl Wed May 07 16:25:00 2014 +0200 @@ -0,0 +1,40 @@ +#!/usr/bin/perl +# disk stat thru sys/block/stats + +$fbase = "/sys/block/"; +$devpattern = qr#^$base(dm-\d+|sd.+)$#i; + +$sleep = 1; + +%nodiff = ( 8 => 1 ); + +@header = qw ( dev r-io r-merge r-sect r-tick w-io w-merge w-sect w-tick inflight iotick timeinQ ); + +@devs = grep { s/^\s+|\s+$//g,1 } grep { /$devpattern/ } qx( ls $fbase ); + +while( 1 ) { + print chr(27), "[2J", chr(27), '[f'; + foreach $h (@header) { + printf "%-12s ", $h; + } + print "\n"; + + for $i ( 0 .. $#devs ) { + $s = qx( cat $fbase$devs[$i]/stat ); chomp $s; $s =~ s/^\s+|\s+$//g; + @a = split /\s+/, $s; + + print $devs[$i], "\t"; + for $j ( 0 .. $#a ) { + if( $nodiff{$j} ) { + printf "%12i;", $a[$j]; + + } else { + printf "%12i ", $a[$j] - $prev[$i][$j]; + $prev[$i][$j] = $a[$j]; + } + } + print "\n"; + } + + sleep $sleep; +}