#!/bin/sh
set -u
#set -x
set -e

SIZE=20G
FILES=128
ALL_MODES="seqrd rndrd seqwr rndwr rndrw"
ALL_BLOCKSIZES="16384 8192 4096 2048 1024 512"
ALL_BLOCKSIZES="512 1024 2048 4096 8192 16384"
ALL_THREADS="001 002 004 008 016 032 064 128"
ODIRECT=""
ODIRECT=--file-extra-flags=direct
POWERSOCKET=1

MKFS="mkfs.xfs -s size=512"
FSTYPE=xfs
#MKFS="mkfs.ext4 -b 1024"
#FSTYPE=ext4
#MKFS="mkfs.btrfs"
#FSTYPE=btrfs

for BLOCKSIZE in 512 1024 2048 4096 8192 16384 ; do
	for MODE in seqwr rndwr rndrd seqrd ; do
		ARG1="--test=fileio --file-num=$FILES --file-total-size=$SIZE"
		for THREADS in 128 064 032 016 008 004 002 001 ; do
			LOGFILE=sysbench-$SIZE-$MODE-b-$BLOCKSIZE-t-$THREADS
			SSH="ssh -- root@sandy"

			strom -o $POWERSOCKET
			echo "Size      $SIZE" | tee $LOGFILE
			echo "Mode      $MODE" | tee -a $LOGFILE
			echo "Threads   $THREADS" | tee -a $LOGFILE
			echo "Blocksize $BLOCKSIZE" | tee -a $LOGFILE
			while ! `nc -zw1 sandy 22`; do true; done
			$SSH "echo 8 > /proc/sys/kernel/printk"
			$SSH "$MKFS drais"
			$SSH "mount drais /mnt/ -t $FSTYPE"
			$SSH "cd /mnt/ && sysbench $ARG1 \
				prepare" | tee -a $LOGFILE
			$SSH "cd /mnt/ && sysbench $ARG1 \
				--file-test-mode=$MODE \
				--max-time=120 \
				--max-requests=100000000 \
				--num-threads=$THREADS \
				--init-rng=on \
				--file-fsync-freq=0 \
				--file-block-size=$BLOCKSIZE \
				$ODIRECT \
				run" | tee -a $LOGFILE 2>&1
			#$SSH "cd /mnt/ && sysbench $ARG1 cleanup"
			#$SSH "cat /proc/lock_stat" > $LOGFILE.lock_stat
			strom -f $POWERSOCKET
			sleep 1
		done
	done
done
