+#!/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