Add scripts for automatically testing reads at different settings.
[bluesky.git] / microbench / run.sh
diff --git a/microbench/run.sh b/microbench/run.sh
new file mode 100755 (executable)
index 0000000..f122370
--- /dev/null
@@ -0,0 +1,65 @@
+#!/bin/bash
+#
+# Run a set of benchmarks on the NFS frontend and report performance.
+
+source "$HOME/bin/aws-keys"
+BLUESKY="$HOME/local/bluesky.git"
+NFSD="$BLUESKY/nfs3/nfsproxy"
+
+die() {
+    echo "FATAL ERROR: $@"
+    exit 1
+}
+
+run_setup() {
+    echo "Starting nfsproxy..." 1>&2
+    $NFSD &
+    NFSPID=$!
+    sleep 0.5
+    sudo mount -t nfs -o tcp,hard,intr localhost:/bluesky /mnt/bluesky || die "Mounting NFS"
+}
+
+run_cleanup() {
+    echo "Stopping nfsproxy..." 1>&2
+    sudo umount -f /mnt/bluesky
+    kill -TERM $NFSPID
+    wait $NFSPID
+}
+
+benchmark_setup() {
+    echo "Checking for sudo access..." 1>&2
+    sudo whoami
+    echo "Preparing for benchmark run..." 1>&2
+    $HOME/docs/2009/fall/s3test/s3-cleanup.py mvrable-bluesky
+    run_setup
+    for i in {1..64}; do
+        dd if=/dev/urandom of=/mnt/bluesky/file-$i bs=32k count=1
+    done
+    sleep 15
+    run_cleanup
+}
+
+benchmark_cleanup() {
+    echo "Cleaning up from benchmark runs..." 1>&2
+}
+
+run_test() {
+    run_setup
+    echo "Running test" 1>&2
+    (cd /mnt/bluesky; $BLUESKY/microbench/readbench "$@") >results-t$1-s$BLUESKY_OPT_SYNC_FRONTENDS
+    run_cleanup
+}
+
+benchmark_setup
+
+export BLUESKY_OPT_SYNC_FRONTENDS=0
+for t in 1 2 4 6 8 10 12 14 16 20 24 28 32 40 48 56 64; do
+    run_test $t
+done
+
+export BLUESKY_OPT_SYNC_FRONTENDS=1
+for t in 1 2 4 6 8 10 12 14 16 20 24 28 32 40 48 56 64; do
+    run_test $t
+done
+
+benchmark_cleanup