Note: You are viewing an old version of this page. View the current version.

Differences between version 2 and previous revision of KnowledgeBase/Scripts/diskstats.sh.

Other diffs: Previous Major Revision, Previous Author

Newer page: version 2 Last edited on Sunday, 16 November 2008 2:44:10 by CyberLeo Revert
Older page: version 1 Last edited on Thursday, 4 October 2007 0:28:15 by CyberLeo Revert
@@ -1,63 +1,94 @@
 <verbatim> 
 #!/bin/bash 
  
+sda_r=0  
+sda_w=0  
+sda_r_old=0  
+sda_w_old=0  
 sdb_r=0 
 sdb_w=0 
 sdb_r_old=0 
 sdb_w_old=0 
 sdc_r=0 
 sdc_w=0 
 sdc_r_old=0 
 sdc_w_old=0 
+sdd_r=0  
+sdd_w=0  
+sdd_r_old=0  
+sdd_w_old=0  
+md0_r=0  
+md0_w=0  
+md0_r_old=0  
+md0_w_old=0  
  
 pretty(){ 
- # Digest a single number into a pretty number  
- num=$1  
- zero=000 
+ # Digest a single number into a pretty number  
+ num=$1  
+ zero=000 
  
- tera=$(( $num / 1099511627776 ))  
- num=$(( $num % 1099511627776 ))  
- giga=$(( $num / 1073741824 ))  
- num=$(( $num % 1073741824 ))  
- mega=$(( $num / 1048576 ))  
- num=$(( $num % 1048576 ))  
- kilo=$(( $num / 1024 ))  
- num=$(( $num % 1024 ))  
- byte=${num:-0} 
+ tera=$(( $num / 1099511627776 ))  
+ num=$(( $num % 1099511627776 ))  
+ giga=$(( $num / 1073741824 ))  
+ num=$(( $num % 1073741824 ))  
+ mega=$(( $num / 1048576 ))  
+ num=$(( $num % 1048576 ))  
+ kilo=$(( $num / 1024 ))  
+ num=$(( $num % 1024 ))  
+ byte=${num:-0} 
  
- one=byte && two=zero && sign=B  
- [ $kilo -gt 0 ] && one=kilo && two=byte && sign=kB  
- [ $mega -gt 0 ] && one=mega && two=kilo && sign=MB  
- [ $giga -gt 0 ] && one=giga && two=mega && sign=GB  
- [ $tera -gt 0 ] && one=tera && two=giga && sign=TB 
+ one=byte && two=zero && sign=B  
+ [ $kilo -gt 0 ] && one=kilo && two=byte && sign=kB  
+ [ $mega -gt 0 ] && one=mega && two=kilo && sign=MB  
+ [ $giga -gt 0 ] && one=giga && two=mega && sign=GB  
+ [ $tera -gt 0 ] && one=tera && two=giga && sign=TB 
  
- printf "%0.2f %s\n" $(eval echo \$$one.\$$two) $sign 
+ printf "%0.2f %s\n" $(eval echo \$$one.\$$two) $sign 
 
  
 while true 
 do 
- # Get new values  
- eval $(printf 'sdb _r=%u sdb _w=%u ' $(cat /sys/block/sdb/stat |tr -s ' ' | cut -d' ' -f4,8) )  
- eval $(printf 'sdc_r=%u sdc_w=%u' $(cat /sys/block/sdc/stat |tr -s ' ' | cut -d ' ' -f4,8)
+ # Get new values  
+ eval $(awk '{print "sda _r=" $3 " sda _w=" $7} ' /sys/block/sda/stat)  
+ eval $(awk '{print "sdb_r=" $3 " sdb_w=" $7}' /sys/block/sdb/stat)  
+ eval $(awk '{print " sdc_r=" $3 " sdc_w=" $7}' /sys/block/sdc/stat)  
+ eval $(awk '{print "sdd_r=" $3 " sdd_w=" $7} ' /sys/block/sdd/stat)  
+ eval $(awk '{print "md0_r=" $3 " md0_w=" $7} ' /sys/block/md0/stat
  
- # Compute diffs  
- sdb_r_diff=$(( ($sdb_r - $sdb_r_old) * 512))  
- sdb_w_diff=$(( ($sdb_w - $sdb_w_old) * 512))  
- sdc_r_diff=$(( ($sdc_r - $sdc_r_old) * 512))  
- sdc_w_diff=$(( ($sdc_w - $sdc_w_old) * 512))  
  
- # Print the display  
- printf "\ r sdb: r %s w %s - sdc: r: %s w %s " \  
- " $(pretty $sdb_r_diff)" " $(pretty $sdb_w_diff)" \  
- " $(pretty $sdc_r_diff)" " $(pretty $sdc _w_diff)"  
+ # Compute diffs  
+ sda_ r_diff=$(( ($sda_ r - $sda_ r_old) * 512))  
+ sda_w_diff= $(( ( $sda_w - $sda_w_old) * 512))  
+ sdb_r_diff=$(( ($sdb_r - $sdb_r_old ) * 512))  
+ sdb_w_diff= $(( ( $sdb_w - $sdb_w_old) * 512))  
+ sdc_r _diff=$(( ($sdc_r - $sdc_r_old) * 512) )  
+ sdc_w_diff= $(( ( $sdc_w - $sdc_w_old) * 512))  
+ sdd _r_diff=$(( ($sdd_r - $sdd_r_old ) * 512))  
+ sdd_w_diff= $(( ( $sdd _w - $sdd_w_old) * 512))  
+ md0_r _diff=$(( ($md0_r - $md0_r_old) * 512))  
+ md0_w_diff=$(( ($md0_w - $md0_w_old) * 512)
  
- # Save values  
- sdb _r_old= $sdb _r  
- sdb_w _old= $sdb_w  
- sdc_r_old= $sdc_r  
- sdc _w_old= $sdc _w 
+ # Print the display  
+ printf "\033[0;0H"  
+ printf "sda: %12s %12s \033[K\n" "$(pretty $sda _r_diff)" " $(pretty $sda _w_diff)"  
+ printf "sdb: %12s %12s \033[K\n" "$(pretty $ sdb_r _diff)" "$(pretty $sdb_w_diff)"  
+ printf "sdc: %12s %12s \033[K\n" "$(pretty $ sdc_r_diff)" "$(pretty $sdc_w_diff)"  
+ printf "sdd: %12s %12s \033[K\n" "$(pretty $sdd_r_diff)" "$(pretty $sdd _w_diff)"  
+ printf "md0: %12s %12s \033[K\n" " $(pretty $md0_r_diff)" "$(pretty $md0 _w_diff)"  
  
- # Sleep until the next cycle  
- sleep 1 
+ # Save values  
+ sda_r_old=$sda_r  
+ sda_w_old=$sda_w  
+ sdb_r_old=$sdb_r  
+ sdb_w_old=$sdb_w  
+ sdc_r_old=$sdc_r  
+ sdc_w_old=$sdc_w  
+ sdd_r_old=$sdd_r  
+ sdd_w_old=$sdd_w  
+ md0_r_old=$md0_r  
+ md0_w_old=$md0_w  
+  
+ # Sleep until the next cycle  
+ sleep 1 
 done 
 </verbatim> 

version 2

#!/bin/bash

sda_r=0
sda_w=0
sda_r_old=0
sda_w_old=0
sdb_r=0
sdb_w=0
sdb_r_old=0
sdb_w_old=0
sdc_r=0
sdc_w=0
sdc_r_old=0
sdc_w_old=0
sdd_r=0
sdd_w=0
sdd_r_old=0
sdd_w_old=0
md0_r=0
md0_w=0
md0_r_old=0
md0_w_old=0

pretty(){
  # Digest a single number into a pretty number
  num=$1
  zero=000

  tera=$(( $num / 1099511627776 ))
  num=$(( $num % 1099511627776 ))
  giga=$(( $num / 1073741824 ))
  num=$(( $num % 1073741824 ))
  mega=$(( $num / 1048576 ))
  num=$(( $num % 1048576 ))
  kilo=$(( $num / 1024 ))
  num=$(( $num % 1024 ))
  byte=${num:-0}

  one=byte && two=zero && sign=B
  [ $kilo -gt 0 ] && one=kilo && two=byte && sign=kB
  [ $mega -gt 0 ] && one=mega && two=kilo && sign=MB
  [ $giga -gt 0 ] && one=giga && two=mega && sign=GB
  [ $tera -gt 0 ] && one=tera && two=giga && sign=TB

  printf "%0.2f %s\n" $(eval echo \$$one.\$$two) $sign
}

while true
do
  # Get new values
  eval $(awk '{print "sda_r=" $3 " sda_w=" $7}' /sys/block/sda/stat)
  eval $(awk '{print "sdb_r=" $3 " sdb_w=" $7}' /sys/block/sdb/stat)
  eval $(awk '{print "sdc_r=" $3 " sdc_w=" $7}' /sys/block/sdc/stat)
  eval $(awk '{print "sdd_r=" $3 " sdd_w=" $7}' /sys/block/sdd/stat)
  eval $(awk '{print "md0_r=" $3 " md0_w=" $7}' /sys/block/md0/stat)


  # Compute diffs
  sda_r_diff=$(( ($sda_r - $sda_r_old) * 512))
  sda_w_diff=$(( ($sda_w - $sda_w_old) * 512))
  sdb_r_diff=$(( ($sdb_r - $sdb_r_old) * 512))
  sdb_w_diff=$(( ($sdb_w - $sdb_w_old) * 512))
  sdc_r_diff=$(( ($sdc_r - $sdc_r_old) * 512))
  sdc_w_diff=$(( ($sdc_w - $sdc_w_old) * 512))
  sdd_r_diff=$(( ($sdd_r - $sdd_r_old) * 512))
  sdd_w_diff=$(( ($sdd_w - $sdd_w_old) * 512))
  md0_r_diff=$(( ($md0_r - $md0_r_old) * 512))
  md0_w_diff=$(( ($md0_w - $md0_w_old) * 512))

  # Print the display
  printf "\033[0;0H"
  printf "sda: %12s %12s \033[K\n" "$(pretty $sda_r_diff)" "$(pretty $sda_w_diff)"
  printf "sdb: %12s %12s \033[K\n" "$(pretty $sdb_r_diff)" "$(pretty $sdb_w_diff)"
  printf "sdc: %12s %12s \033[K\n" "$(pretty $sdc_r_diff)" "$(pretty $sdc_w_diff)"
  printf "sdd: %12s %12s \033[K\n" "$(pretty $sdd_r_diff)" "$(pretty $sdd_w_diff)"
  printf "md0: %12s %12s \033[K\n" "$(pretty $md0_r_diff)" "$(pretty $md0_w_diff)"

  # Save values
  sda_r_old=$sda_r
  sda_w_old=$sda_w
  sdb_r_old=$sdb_r
  sdb_w_old=$sdb_w
  sdc_r_old=$sdc_r
  sdc_w_old=$sdc_w
  sdd_r_old=$sdd_r
  sdd_w_old=$sdd_w
  md0_r_old=$md0_r
  md0_w_old=$md0_w

  # Sleep until the next cycle
  sleep 1
done