#!/bin/sh # # Do a bonnie++ create/read/delete run using 8192 files (unless # BONNIE_KFILES environment variable is set -- note this number # is multiplied by 1024 by bonnie++). By default the files are # created in the same directory, BONNIE_NDIRS specifies a count # of subdirs to evenly spread files through. Regular files are # created by default (BONNIE_FILETYPE=regular), alternatively # the values "symlinks" and "hardlinks" can be used. # # The script then massages the output into CSV format with the # human-readable output preceding it as a "comment" (#-prefixed). # BONNIE_NDIRS=${BONNIE_NDIRS:=1} BONNIE_KFILES=${BONNIE_KFILES:=8} BONNIE_FILETYPE=${BONNIE_FILETYPE:=regular} [ -z "$here" ] && here=`pwd` . $here/common.bonnie # # Sample bonnie throughput output (stderr): #Version 1.02c ------Sequential Create------ --------Random Create-------- # -Create-- --Read--- -Delete-- -Create-- --Read--- -Delete-- # files /sec %CP /sec %CP /sec %CP /sec %CP /sec %CP /sec %CP # 4 525 27 +++++ +++ 517 26 526 25 +++++ +++ 230 12 # [ Note: the "files" can also be "^files:max" and possibly other things ] filter_stderr() { sed -e 's/^..................../# /g' | awk '{print} END {print "#"}' } # # Sample bonnie IOPs output (stdout): # ",,,,,,,,,,,,,,4,525,27,+++++,+++,517,26,526,25,+++++,+++,230,12" # [ nathans note: always get +++ due to 0:0 for min:max file sizes. ] # [ I will need to fix the filter if I ever start using file sizes. ] # filter_stdout() { perl -ne ' chomp; s/\+*//g; s/,+/,/g; s/^,//; s/,$//; @values = split /,/; printf "%9s", 1024 * shift @values; for ($i = 0; $i <= $#values; $i++) { if ($i % 2) { printf ",%4s%%", $values[$i] } else { printf ",%10s", $values[$i] } } printf "\n"; ' } if [ $# -gt 0 ]; then printf "%9s,%10s,%5s,%10s,%5s,%10s,%5s,%10s,%5s\n" files \ seqCR/s scCPU seqRM/s srCPU randCR/s rcCPU randRM/s rrCPU exit 0 fi case "$BONNIE_FILETYPE" in regular) BONNIE_FILETYPE=0 ;; symlink) BONNIE_FILETYPE=-2 ;; hardlink) BONNIE_FILETYPE=-1 ;; *) echo "BONNIE_FILETYPE has an unrecognised value" && exit 1 ;; esac run_bonnie -s 0 -n $BONNIE_KFILES:$BONNIE_FILETYPE:0:$BONNIE_NDIRS