#!/bin/ksh93 typeset -A -i TIME STYLE integer C T N M MIN MAX MIN_C MIN=16#7FFFFFFF MAX=0 MIN_C=16#7FFFFFFF typeset -a -i SEC typeset -F AVG SZ=${1:-450} typeset -A -F1 SPEED COLORS=( '#FF0000' '#FF0500' '#FF0B00' '#FF1000' '#FF1600' '#FF1B00' '#FF2100' '#FF2600' '#FF2B00' '#FF3100' '#FF3600' '#FF3C00' '#FF4100' '#FF4700' '#FF4C00' '#FF5100' '#FF5700' '#FF5C00' '#FF6200' '#FF6700' '#FF6D00' '#FF7200' '#FF7700' '#FF7D00' '#FF8200' '#FF8800' '#FF8D00' '#FF9200' '#FF9800' '#FF9D00' '#FFA300' '#FFA800' '#FFAE00' '#FFB300' '#FFB800' '#FFBE00' '#FFC300' '#FFC900' '#FFCE00' '#FFD400' '#FFD900' '#FFDE00' '#FFE400' '#FFE900' '#FFEF00' '#FFF400' '#FFFA00' '#FFFF00' '#FFFF08' '#FFFF18' '#FFFF28' '#FFFF38' '#FFFF48' '#FFFF58' '#FFFF68' '#FFFF78' '#FFFF87' '#FFFF97' '#FFFFA7' '#FFFFB7' '#FFFFC7' '#FFFFD7' '#FFFFE7' '#D9FFD0' ) TOSORT='' (( SZ*=1024 )) for F in ~(N)*-summary.txt ; do read CTD X Y <$F # 1st line, only [[ ! $Y =~ ^[0-9][0-9]:[0-9][0-9]:[0-9][0-9]$ ]] && continue SEC=( ${Y//:/ } ) (( I=SEC[0] * 3600 + SEC[1] * 60 + SEC[2] )) TIME[${CTD}]=$I if (( I < MIN )); then MIN=$I elif (( I > MAX )); then MAX=$I fi X=${CTD%%t*} C=${X:1} (( C < MIN_C )) && MIN_C=$C (( AVG=SZ/I )) SPEED[${CTD}]=${AVG} TOSORT+="\n${CTD} $Y ${AVG} MiB/s $I s" done print "${TOSORT:2}" | sort -k5,5n -k1 >times-by-ctd.out typeset -F DELTA D (( DELTA=sqrt(MAX-MIN)/${#COLORS[@]} )) TABLE='
${N}..${M} | " N+=4; M+=4 TABLE+="${N}..${M} | " done TABLE+='|||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
${X} | " && continue (( N=$Y - MIN )) (( D=sqrt(N)/DELTA )) (( N=${#COLORS[@]} - D )) (( N == 64 )) && N=63 TABLE+="${X} ${SPEED[$X]} | "
STYLE[$N]=1
done
done
TABLE+='|||||||||||||||
|
Measured as average of a sequential write of a single HDD-Pool from 0..~98.5% of its capacity (mkfile Ng /poolM/bla). For more details have a look at this directory.
' print "${H}\n${TABLE}\n" >heat.html