dev=/dev/sdb1 # skip these many gigs between tests skipfactor=20 diskbytes=`fdisk -l |grep "${dev}" |awk '{ print $4 }'` diskbytes=`expr $diskbytes \* 1024` maxgig=`expr $diskbytes \/ 1073741824` maxgig=`expr $maxgig - 1` echo "Maximum offset ${maxgig}GB" echo "-------------------------" for q in Read Write; do echo "=== $q: ===" offset=0 while [ $offset -lt $maxgig ]; do if [ "$q" == "Read" ]; then rate=`dd iflag=direct if=${dev} bs=1G skip=${offset} count=1 of=/dev/null 2>&1 |grep seconds |awk '{ print $8" "$9 }'` else rate=`dd oflag=direct if=/dev/zero bs=1G seek=${offset} count=1 of=${dev} 2>&1 |grep seconds |awk '{ print $8" "$9 }'` fi echo "Offset ${offset}GB: $rate" offset=`expr $offset + $skipfactor` done done