#!/bin/ksh set -e (( debug = 0 )) function plot { [[ -z $3 ]] && echo function plot needs at least \ && exit 1 output=$1 file1=$2 file2=$3 file3=$4 file4=$5 file5=$6 [[ ! -r $file1 ]] && echo could not read $file1 && exit 1 [[ ! -r $file2 ]] && echo could not read $file2 && exit 1 [[ -n $file3 ]] && [[ ! -r $file3 ]] && echo could not read $file3 && exit 1 [[ -n $file4 ]] && [[ ! -r $file4 ]] && echo could not read $file4 && exit 1 [[ -n $file5 ]] && [[ ! -r $file5 ]] && echo could not read $file5 && exit 1 # assuming all benchs have same amount of runs lines=`wc -l < $file1` (( debug > 0 )) && echo lines is $lines echo -n writing bonnie.dat ... rm -f bonnie.dat (( line = 1 )) until (( line > lines )); do (( debug > 0 )) && echo line is $line (( debug > 0 )) && echo sets is $sets # new plot data row of values for every type of IOPS for set in $sets; do value1=`sed -n ${line}p $file1 | cut -f$set -d,` value2=`sed -n ${line}p $file2 | cut -f$set -d,` [[ -n $file3 ]] && value3=`sed -n ${line}p $file3 | cut -f$set -d,` [[ -n $file4 ]] && value4=`sed -n ${line}p $file4 | cut -f$set -d,` [[ -n $file5 ]] && value5=`sed -n ${line}p $file5 | cut -f$set -d,` (( debug > 0 )) && echo value2 is $value2 cat <> bonnie.dat $line $set $value1 $value2 $value3 $value4 $value5 EOF done; unset set (( line++ )) done && echo done # 5 test runs [[ ! -f bonnie.dat ]] && echo something went wrong, bonnie.dat is not there && exit 1 (( `cat bonnie.dat | wc -l` < lines * 5 )) && echo bonnie.dat has less than $(( lines * 5 )) lines && exit 1 echo -n writing bonnie.plot ... rm -f bonnie.plot cat > bonnie.plot <> bonnie.plot [[ -n $file3 ]] && echo ", \\" >> bonnie.plot && echo -ne "\t'bonnie.dat' u 1:2:5 with lines tit \"${file3%\.bon}\"" >> bonnie.plot [[ -n $file4 ]] && echo ", \\" >> bonnie.plot && echo -ne "\t'bonnie.dat' u 1:2:6 with lines tit \"${file4%\.bon}\"" >> bonnie.plot [[ -n $file5 ]] && echo ", \\" >> bonnie.plot && echo -ne "\t'bonnie.dat' u 1:2:7 with lines tit \"${file5%\.bon}\"" >> bonnie.plot # add carriage return on the last values echo >> bonnie.plot echo -n writing $output ... gnuplot -c bonnie.plot && echo done unset output file1 file2 file3 file4 file5 } function many { sets="3 5 7 9 11" plot $@ unset sets } function percent { sets="4 6 8 10 12" plot $@ unset sets } #many performance0.png ext4.bon xfs.bon btrfs.bon f2fs.bon #percent cpu-usage0.png ext4.bon xfs.bon btrfs.bon f2fs.bon #echo #many butterfs-algo.png btrfs-lzo.bon btrfs-zstd.bon btrfs-zlib.bon #percent butterfs-algo-cpu.png btrfs-lzo.bon btrfs-zstd.bon btrfs-zlib.bon #echo #many reiser4-algo.png reiser4-lzo1.bon reiser4-zstd1.bon reiser4-gzip1.bon #percent reiser4-algo-cpu.png reiser4-lzo1.bon reiser4-zstd1.bon reiser4-gzip1.bon #echo #many performance-lzo.png btrfs-lzo.bon reiser4-lzo1.bon f2fs-lzo-rle.bon #percent performance-lzo-cpu.png btrfs-lzo.bon reiser4-lzo1.bon f2fs-lzo-rle.bon #echo #many performance-zstd.png btrfs-zstd.bon reiser4-zstd1.bon f2fs-zstd.bon #percent performance-zstd-cpu.png btrfs-zstd.bon reiser4-zstd1.bon f2fs-zstd.bon #echo #many f2fs-z.png f2fs-lz4.bon f2fs-lzo-rle.bon f2fs-zstd.bon #percent f2fs-z-cpu.png f2fs-lz4.bon f2fs-lzo-rle.bon f2fs-zstd.bon #echo #many xfs-vs-lzo.png btrfs-lzo.bon xfs.bon #percent xfs-vs-lzo-cpu.png btrfs-lzo.bon xfs.bon #echo echo all done # 1024,768