Set up for benchmark runs with small reads/writes within larger files.
[bluesky.git] / microbench / setup / run-benchmark
1 #!/bin/bash
2 #
3 # Start up the NFS server.
4
5
6 # Defaults
7 SERVER=c09-45.sysnet.ucsd.edu
8 MNTDIR=/mnt/bluesky
9
10 BENCH_FILESIZE=$((1 << 12))
11 BENCH_BLOCKSIZE=0
12 BENCH_FILECOUNT=$((8))
13 BENCH_WRITERATIO=1.0
14 BENCH_THREADS=8
15 BENCH_DURATION=120
16 BENCH_OPS=100
17 BENCH_INTERVALS=4
18 BENCH_DIRSIZE=256
19 BENCH_LOCKEDMEM=$((4096 - 256))
20
21 lock_memory() {
22     MEM=$1
23     while [ $MEM -gt 512 ]; do
24         /scratch/bluesky.git/microbench/lockmem 512 &
25         MEM=$(($MEM - 512))
26     done
27     if [ $MEM -gt 0 ]; then
28         /scratch/bluesky.git/microbench/lockmem $MEM &
29     fi
30 }
31
32 # Export any environment variables specified on the command line
33 for e in "$@"; do
34     echo "$e" 1>&2
35     if echo "$e" | grep = >/dev/null; then
36         eval "$e"
37         export ${e%=*}
38     fi
39 done
40
41 # Prepare to run the benchmark
42 lock_memory $BENCH_LOCKEDMEM
43
44 mount -t nfs -o vers=3,tcp,rw,soft,intr $SERVER:/export $MNTDIR
45
46 pushd $MNTDIR >/dev/null
47
48 /scratch/bluesky.git/microbench/mixedbench \
49     $BENCH_FILESIZE \
50     $BENCH_FILECOUNT \
51     $BENCH_WRITERATIO \
52     $BENCH_THREADS \
53     $BENCH_DURATION \
54     $BENCH_OPS \
55     $BENCH_INTERVALS \
56     $BENCH_DIRSIZE \
57     $BENCH_BLOCKSIZE
58
59 pkill -TERM lockmem
60
61 popd >/dev/null
62
63 umount -f $MNTDIR