rcutorture: Print grace-period performance statistics
authorPaul E. McKenney <paulmck@linux.vnet.ibm.com>
Thu, 19 Dec 2013 00:56:22 +0000 (16:56 -0800)
committerPaul E. McKenney <paulmck@linux.vnet.ibm.com>
Tue, 18 Feb 2014 20:24:22 +0000 (12:24 -0800)
Sometime problems can manifest themselves as unusually slow grace periods.
This commit therefore prints the number of rcutorture updates during the
test and the number per second.  These statistics are harvested from the
config.out and qemu-cmd files, and are silently omitted if these files
are not available, as would be the case if there was a build failure or
a boot-time hang.

Signed-off-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
Reviewed-by: Josh Triplett <josh@joshtriplett.org>
tools/testing/selftests/rcutorture/bin/kvm-recheck.sh

index baef09f3469b1dbb914ad0459076adbd027a1cd0..e3b1af3677e3a046a495b4e039877d0a1f994e77 100755 (executable)
@@ -31,7 +31,24 @@ do
        for i in $dirs
        do
                configfile=`echo $i | sed -e 's/^.*\///'`
-               echo $configfile
+               ngps=`grep ver: $i/console.log 2> /dev/null | tail -1 | sed -e 's/^.* ver: //' -e 's/ .*$//'`
+               if test -z "$ngps"
+               then
+                       echo $configfile
+               else
+                       title="$configfile ------- $ngps grace periods"
+                       dur=`sed -e 's/^.* rcutorture.shutdown_secs=//' -e 's/ .*$//' < $i/qemu-cmd 2> /dev/null`
+                       if test -z "$dur"
+                       then
+                               :
+                       else
+                               ngpsps=$((ngps / dur))
+                               ngpsps=`awk -v ngps=$ngps -v dur=$dur '
+                                       BEGIN { print ngps / dur }' < /dev/null`
+                               title="$title ($ngpsps per second)"
+                       fi
+                       echo $title
+               fi
                configcheck.sh $i/.config $i/ConfigFragment
                parse-build.sh $i/Make.out $configfile
                parse-rcutorture.sh $i/console.log $configfile