From: "Paul E. McKenney" <paul...@linux.vnet.ibm.com>

The kvm-test-1-run.sh currently counts "sleep 1" commands to detect
hangs.  This can fail spectacularly on busy systems, where "sleep 1"
might take far longer than one second to complete.  This commit
therefore changes hang detection to use elapsed time measurements.

Signed-off-by: Paul E. McKenney <paul...@linux.vnet.ibm.com>
---
 .../testing/selftests/rcutorture/bin/kvm-test-1-run.sh | 18 ++++++++++++------
 1 file changed, 12 insertions(+), 6 deletions(-)

diff --git a/tools/testing/selftests/rcutorture/bin/kvm-test-1-run.sh 
b/tools/testing/selftests/rcutorture/bin/kvm-test-1-run.sh
index 51c34a91a375..b1e85b049075 100755
--- a/tools/testing/selftests/rcutorture/bin/kvm-test-1-run.sh
+++ b/tools/testing/selftests/rcutorture/bin/kvm-test-1-run.sh
@@ -161,14 +161,18 @@ $QEMU $qemu_args -m 512 -kernel $builddir/$BOOT_IMAGE 
-append "$qemu_append $boo
 qemu_pid=$!
 commandcompleted=0
 echo Monitoring qemu job at pid $qemu_pid
-for ((i=0;i<$seconds;i++))
+while :
 do
+       kruntime=`awk 'BEGIN { print systime() - '"$kstarttime"' }' < /dev/null`
        if kill -0 $qemu_pid > /dev/null 2>&1
        then
+               if test $kruntime -ge $seconds
+               then
+                       break;
+               fi
                sleep 1
        else
                commandcompleted=1
-               kruntime=`awk 'BEGIN { print systime() - '"$kstarttime"' }' < 
/dev/null`
                if test $kruntime -lt $seconds
                then
                        echo Completed in $kruntime vs. $seconds >> 
$resdir/Warnings 2>&1
@@ -189,20 +193,22 @@ done
 if test $commandcompleted -eq 0
 then
        echo Grace period for qemu job at pid $qemu_pid
-       for ((i=0;i<=$grace;i++))
+       while :
        do
+               kruntime=`awk 'BEGIN { print systime() - '"$kstarttime"' }' < 
/dev/null`
                if kill -0 $qemu_pid > /dev/null 2>&1
                then
-                       sleep 1
+                       :
                else
                        break
                fi
-               if test $i -eq $grace
+               if test $kruntime -ge $((seconds + grace))
                then
-                       kruntime=`awk 'BEGIN { print systime() - 
'"$kstarttime"' }'`
                        echo "!!! Hang at $kruntime vs. $seconds seconds" >> 
$resdir/Warnings 2>&1
                        kill -KILL $qemu_pid
+                       break
                fi
+               sleep 1
        done
 fi
 
-- 
1.8.1.5

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Reply via email to