]> Zhao Yanbai Git Server - minix.git/commitdiff
worldstone: add -s for statistical profiling
authorBen Gras <ben@minix3.org>
Wed, 5 Sep 2012 21:42:41 +0000 (23:42 +0200)
committerBen Gras <ben@minix3.org>
Wed, 19 Sep 2012 11:43:17 +0000 (13:43 +0200)
commands/worldstone/worldstone.1
commands/worldstone/worldstone.sh

index b21384d5f5c0bae85232392b47090ecbd34a2d59..834b47a93e2c493cb01e7c885e4f9dfb644a101b 100644 (file)
@@ -6,6 +6,7 @@
 .Nd shell script to consistently execute benchmarks
 .Sh SYNOPSIS
 .Nm worldstone
+.Op Fl s  
 .Op Fl n Ar iterations
 .Op Fl c Ar command
 .Op Fl p Ar command
@@ -44,6 +45,11 @@ branch in /usr/src.
 
 The options are as follows:
 .Bl -tag -width Ds
+.It Fl s
+If set, perform statistical profiling by invoking
+.Xr profile 1
+and executing sprofalyze, suitable for feeding to sprofdiff. This
+requires building world with SPROFILE.
 .It Fl n Ar iterations
 Set the number of iterations to perform, after the initial run.
 The default is 5.
index 54dfafc40729a9c26299d6a0e35f22ae1e32c4c8..0868219fec4415f11c90f7d14eee6e69980e3e0e 100644 (file)
@@ -7,9 +7,10 @@ TAG=time.$(basename $(git --git-dir=/usr/src/.git describe --all --dirty))
 
 set -e
 
-while getopts "n:d:p:c:r:" c
+while getopts "n:d:p:c:r:s" c
 do
         case "$c" in
+               s)      PROFILE=1 ;;
                n)      ITERATIONS=$OPTARG ;;
                p)      PRECMD="$OPTARG" ;;
                c)      COMMAND="$OPTARG" ;;
@@ -43,12 +44,17 @@ echo "First run."
 sh -c "$PRECMD"
 sh -c "$COMMAND"
 
+if [ "$PROFILE" ]; then profile stop || true; fi
+
 for n in `seq 1 $ITERATIONS`
 do     echo -n "$n"
        sh -c "$PRECMD >/dev/null 2>&1"
        echo -n "."
        sync
+       PROF=$LOGFILE.p.$n
+       if [ "$PROFILE" ]; then profile start --rtc -o $PROF -f 3; fi
        time -C sh -c "$COMMAND >/dev/null 2>&1; sync" 2>>$LOGFILE
+       if [ "$PROFILE" ]; then profile stop; sprofalyze -d $PROF >$PROF.d; fi
        echo -n " "
 done
 echo "Done."