#!/bin/sh

# choose this so the first test lasts about 1 second
bytes=2000000000

min=1024
step=`echo 8*1024 | bc`
max=`echo 4096*1024 | bc`

# use the CPU for some time to get cpufreq out of the way
dd if=/dev/zero of=/dev/null count=2000000 >/dev/null 2>&1


for bs in `seq $min $step $max`
do
	count=$(( $bytes / $bs ))

	#ddout=`dd bs="$bs" count="$count" 2>&1 </dev/zero \
	#	| dd bs="$bs" count="$count" 2>&1 >/dev/null \
	#	| tail -n1 \
	#	| cut -d' ' -f1,6`

	ddout=`dd bs="$bs" count="$count" if=/dev/zero of=/dev/null 2>&1 \
		| tail -n1 \
		| cut -d' ' -f1,6`

	ddbytes=${ddout%% *}
	ddtime=${ddout##* }
	rate=`echo $ddbytes/$ddtime | bc`

	echo $bs $rate $count

	bytes=$rate

	rate=${rate%%[0-9][0-9][0-9]}
	rate=${rate%%[0-9][0-9][0-9]}
	echo "$bs, $rate MB/s, $count, time: $ddtime s" >&2
done
