Whamcloud - gitweb
Did improvements in README.obdfilter-survey as per new
[fs/lustre-release.git] / lustre-iokit / sgpdd-survey / sgpdd-survey
index 2b6c419..cabfb79 100755 (executable)
 rslt=${rslt:-"/tmp/sgpdd_survey_`date +%F@%R`_`uname -n`"}
 
 # what to do (read or write)
-actions="write read"
+actions=${actions:-"write read"}
 
 # total size per device (MBytes)
 # NB bigger than device cache is good
 size=${size:-8192}
 
 # record size (KBytes)
-rszlo=1024
-rszhi=1024
+rszlo=${rszlo:-1024}
+rszhi=${rszhi:-1024}
 
 # Concurrent regions per device
 crglo=${crglo:-1}
@@ -37,8 +37,6 @@ thrhi=${thrhi:-4096}
 #####################################################################
 # leave the rest of this alone unless you know what you're doing...
 
-# sgp_dd's idea of disk sector size (Bytes)
-bs=512
 # and max # threads one instance will spawn
 SG_MAX_QUEUE=16
 
@@ -80,6 +78,13 @@ fi
 
 ndevs=${#devs[@]}
 
+# determine block size. This should also work for raw devices
+# If it fails, set to 512
+bs=$((`sg_readcap -b ${devs[0]}  |awk '{print $2}'`))
+if [ $bs == 0  ];then
+       echo "sg_readcap failed, setting block size to 512"
+       bs=512
+fi
 rsltf=${rslt}.summary
 workf=${rslt}.detail
 echo -n > $rsltf
@@ -95,14 +100,7 @@ print_summary () {
     echo $minusn "$*"
 }
 
-time_v=`date`
-hostname=`hostname`
-if [ "$rawdevs" ]; then
-       print_summary "$time_v sgpdd-survey on $rawdevs from $hostname"
-fi
-if [ "$scsidevs" ]; then
-       print_summary "$time_v sgpdd-survey on $scsidevs from $hostname"
-fi
+print_summary "$(date) sgpdd-survey on $rawdevs$scsidevs from $(hostname)"
 
 for ((rsz=$rszlo;rsz<=$rszhi;rsz*=2)); do
     for ((crg=$crglo;crg<=$crghi;crg*=2)); do 
@@ -158,7 +156,9 @@ for ((rsz=$rszlo;rsz<=$rszhi;rsz*=2)); do
                for ((i=0;i<ndevs;i++)); do
                    for ((j=0;j<crg;j++)); do
                        rtmp=${tmpf}_${i}_${j}
-                       if grep 'time to transfer data' $rtmp > /dev/null 2>&1; then
+                       if grep 'error' $rtmp > /dev/null 2>&1; then
+                               echo "Error found in $rtmp"
+                       elif grep 'time to transfer data' $rtmp > /dev/null 2>&1; then
                            ok=$((ok + 1))
                        fi
                        cat ${rtmp} >> $tmpf