-#!/bin/sh
-#
-# Does a dbench run (10 clients if $DBENCH_CLIENTS is not set),
-# then massages the output into CSV format.
-#
-DBENCH_CLIENTS=${DBENCH_CLIENTS:=10}
+##/bin/sh
-run_dbench()
+_run_dbench()
{
mkdir ./dbench || exit 1
cd dbench
- dbench $DBENCH_CLIENTS
+ dbench $1
status=$?
cd ..
rm -fr ./dbench
[ $status -ne 0 ] && exit 1
}
-#
+#
# Sample dbench output:
# "Throughput 40.6701 MB/sec (NB=50.8376 MB/sec 406.701 MBit/sec)"
#
-if [ $# -gt 0 ]; then
+
+# Output for a single-shot dbench run.
+_format_header()
+{
printf "%8s, %s\n" clients MB/sec
- exit 0
-fi
-run_dbench | awk 'END { printf "%8u, %s\n", '$DBENCH_CLIENTS', $2 }'
+}
+_filter_dbench()
+{
+ clients=$1
+ perl -ne 'm/Throughput (\S+) MB\/sec/ &&
+ { printf "%8u, %s\n", '$clients', $1 }'
+}
+
+# Output for a "multipass" dbench run.
+_format_header_multipass()
+{
+ for i in $@; do
+ printf "%4s::MB/sec," $i
+ done
+ printf "\n"
+}
+_filter_dbench_multipass()
+{
+ perl -ne '
+ if (m/Throughput (\S+) MB\/sec/) {
+ $results[$count++] = $1;
+ }
+ END { for ($i = 0; $i < $count - 1; $i++) {
+ printf "%12.3f,", $results[$i];
+ }
+ printf "%12.3f\n", $results[$count-1];
+ }'
+}
#
# Does a single-client dbench run
#
-DBENCH_CLIENTS=1
-export DBENCH_CLIENTS
-[ ! -d "$here" ] && here=`pwd`
+[ -z "$here" ] && here=`pwd`
+. $here/common.dbench
-exec $here/common.dbench $@
+if [ $# -gt 0 ]; then
+ _format_header
+ exit 0
+fi
+_run_dbench 1 | _filter_dbench 1
#
# Does a dbench run with 10 clients
#
-DBENCH_CLIENTS=10
-export DBENCH_CLIENTS
-[ ! -d "$here" ] && here=`pwd`
+[ -z "$here" ] && here=`pwd`
+. $here/common.dbench
-exec $here/common.dbench $@
+if [ $# -gt 0 ]; then
+ _format_header
+ exit 0
+fi
+_run_dbench 10 | _filter_dbench 10
#
# Does a dbench run with 100 clients
#
-DBENCH_CLIENTS=100
-export DBENCH_CLIENTS
-[ ! -d "$here" ] && here=`pwd`
+[ -z "$here" ] && here=`pwd`
+. $here/common.dbench
-exec $here/common.dbench $@
+if [ $# -gt 0 ]; then
+ _format_header
+ exit 0
+fi
+_run_dbench 100 | _filter_dbench 100
#
# Does a dbench run with 2 clients
#
-DBENCH_CLIENTS=2
-export DBENCH_CLIENTS
-[ ! -d "$here" ] && here=`pwd`
+[ -z "$here" ] && here=`pwd`
+. $here/common.dbench
-exec $here/common.dbench $@
+if [ $# -gt 0 ]; then
+ _format_header
+ exit 0
+fi
+_run_dbench 2 | _filter_dbench 2
#
# Does a dbench run with 20 clients
#
-DBENCH_CLIENTS=20
-export DBENCH_CLIENTS
-[ ! -d "$here" ] && here=`pwd`
+[ -z "$here" ] && here=`pwd`
+. $here/common.dbench
-exec $here/common.dbench $@
+if [ $# -gt 0 ]; then
+ _format_header
+ exit 0
+fi
+_run_dbench 20 | _filter_dbench 20
#
# Does a dbench run with 50 clients
#
-DBENCH_CLIENTS=50
-export DBENCH_CLIENTS
-[ ! -d "$here" ] && here=`pwd`
+[ -z "$here" ] && here=`pwd`
+. $here/common.dbench
-exec $here/common.dbench $@
+if [ $# -gt 0 ]; then
+ _format_header
+ exit 0
+fi
+_run_dbench 50 | _filter_dbench 50
--- /dev/null
+#!/bin/sh
+#
+# Does several dbench runs with increasing numbers of client
+#
+
+[ -z "$here" ] && here=`pwd`
+. $here/common.dbench
+
+if [ $# -gt 0 ]; then
+ _format_header_multipass 1 2 10 20 #50
+ exit 0
+fi
+tmpfile=/var/tmp/dbench.$$
+rm -f $tmpfile
+_run_dbench 1 >> $tmpfile
+_run_dbench 2 >> $tmpfile
+_run_dbench 10 >> $tmpfile
+_run_dbench 20 >> $tmpfile
+#_run_dbench 50 >> $tmpfile
+_filter_dbench_multipass < $tmpfile
+rm -f $tmpfile
# Use 1000 files, 10 iterations.
#
+[ -z "$here" ] && here=`pwd`
. $here/common.metaperf
if [ $# -gt 0 ]; then
# Use 1 file, 10 iterations.
#
+[ -z "$here" ] && here=`pwd`
. $here/common.metaperf
if [ $# -gt 0 ]; then