1ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos# print summary of output generated by pwrtest.sh 2ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos# 3ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos# default results directories are <device>-<date>[-experiment]. By default 4ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos# match any device and the year 201*. 5ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos# 6ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos# Examples: 7ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos# 8ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos# - show output for all bullhead tests in july 2015: 9ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos# ./pwrsummary.sh -r "bh-201507*" 10ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos# 11ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos# - generate CSV file for import into spreadsheet: 12ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos# ./pwrsummary.sh -o csv 13ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos# 14ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos 15ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd KjosCMDDIR=$(dirname $0 2>/dev/null) 16ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd KjosCMDDIR=${CMDDIR:=.} 17ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjoscd $CMDDIR 18ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd KjosCMDDIR=$(pwd) 19ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjoscd - 20ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd KjosPOWERAVE="python $CMDDIR/powerave.py" 21ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos 22ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd KjosdefaultPattern="*-201*" 23ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd KjosdefaultVoltage=4.3 24ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd KjosdefaultFrequency=5 25ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos 26ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjosfunction Usage { 27ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos echo "$0 [-o format] [-v voltage] [-h freq] [-f resultsDirectories]" 28ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos} 29ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos 30ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjoswhile [ $# -gt 0 ] 31ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjosdo 32ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos case "$1" in 33ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos (-o) format=$2; shift;; 34ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos (-v) voltage=$2; shift;; 35ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos (-h) hz=$2; shift;; 36ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos (-r) testResults="$2"; shift;; 37ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos (--help) Usage; exit 0;; 38ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos (--) shift; break;; 39ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos (*) 40ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos echo Unknown option: $1 41ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos Usage 42ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos exit 1;; 43ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos esac 44ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos shift 45ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjosdone 46ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos 47ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd KjostestResults=${testResults:=$defaultPattern} 48ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjosvoltage=${voltage:=$defaultVoltage} 49ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjoshz=${hz:=$defaultFrequency} 50ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos 51ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjosfunction printHeader { 52ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos workload=$1 53ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos units="unknown" 54ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos case $workload in 55ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos (suntemple|shadowgrid2) 56ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos units="FPS";; 57ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos (recentfling|youtube|chrome) 58ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos units="FPS from app point of view: 1/(90th percentile render time)";; 59ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos (sysapps) 60ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos units="App start/switch per second";; 61ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos esac 62ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos 63ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos echo "Performance unit for $workload is: $units" 64ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos if [ "$format" = csv ]; then 65ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos printf "%s,%s,%s,%s,%s,%s,%s,%s,%s\n" " " build min ave max net-mA@${voltage}v base-mW net-mW perf/W 66ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos else 67ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos printf "%-30s %-8s %12.12s %12.12s %12.12s %12.12s %12.12s %12.12s %12.12s\n" " " build min ave max net-mA@${voltage}v base-mW net-mW perf/W 68ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos fi 69ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos} 70ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos 71ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjosfunction average { 72ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos awk 'BEGIN { count=0; sum=0; max=-1000000000; min=1000000000; } 73ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos { 74ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos cur = $1; 75ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos sum = sum + cur; 76ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos if (cur > max) max = cur; 77ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos if (cur < min) min = cur; 78ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos count++; 79ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos } 80ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos 81ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos END { 82ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos if (count > 0) { 83ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos ave = sum / count; 84ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos printf "%.2f %.2f %.2f\n", min, ave, max; 85ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos } 86ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos }' 87ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos} 88ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos 89ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjosfunction hwuiOutputParser { 90ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos # Stats since: 60659316905953ns 91ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos # Total frames rendered: 150 92ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos # Janky frames: 89 (59.33%) 93ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos # 90th percentile: 23ms 94ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos # 95th percentile: 27ms 95ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos # 99th percentile: 32ms 96ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos # Number Missed Vsync: 0 97ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos # Number High input latency: 0 98ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos # Number Slow UI thread: 0 99ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos # Number Slow bitmap uploads: 12 100ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos # Number Slow draw: 89 101ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos # use with "stdbuf -o0 " to disable pipe buffering 102ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos # stdbuf -o0 adb shell /data/hwuitest shadowgrid2 400 | stdbuf -o0 ./hwuitestfilter.sh | tee t.csv 103ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos sed -e 's/ns//' -e 's/[\(\)%]/ /g' | awk ' 104ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos BEGIN { startTime=0; lastTime=0; } 105ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos /^Stats since:/ { 106ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos curTime = $3; 107ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos if (startTime == 0) { 108ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos startTime = curTime; 109ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos } 110ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos if (lastTime) { 111ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos interval = curTime - lastTime; 112ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos fps = totalFrames*1000000000 / interval; 113ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos diffTime = curTime - startTime; 114ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos printf "%.2f, %.2f, ",diffTime/1000000, fps; 115ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos } 116ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos } 117ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos /^Total frames/ { totalFrames=$4; } 118ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos /^Janky frames:/ { 119ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos if (lastTime) { 120ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos printf "%.2f\n",$4; lastTime=curTime; 121ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos } 122ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos lastTime = curTime; 123ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos }' 124ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos} 125ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos 126ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjosfunction sysappOutputParser { 127ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos awk ' 128ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos BEGIN { fmt=0; count=0; sum=0; } 129ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos /^App/ { 130ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos if (count != 0) { 131ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos if (fmt > 2) printf "Ave: %0.2fms\n", sum/count; 132ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos else printf " %0.2f\n", sum/count; 133ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos count = 0; 134ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos sum = 0; 135ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos } 136ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos } 137ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos /^[a-z]/ { val=$2; if (val != 0) { count++; sum+=val; } } 138ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos /^Iteration/ { if (fmt > 2) printf "%s : ", $0; else if (fmt) printf "%d ", $2; } 139ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos ' 140ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos} 141ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos 142ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjosfunction calcPerfData { 143ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos testdir=$1 144ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos workload=$2 145ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos baselineCurrent=$3 146ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos baselinePower=$4 147ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos 148ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos file=${workload}.out 149ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos powerfile=${workload}-power.out 150ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos build="$(cat build 2>/dev/null)" 151ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos build=${build:="Unknown"} 152ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos 153ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos lines=$(wc -l $file 2>/dev/null | cut -f1 -d\ ) 154ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos 155ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos if [ ${lines:=0} -eq -0 ]; then 156ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos # No performance data captured 157ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos if [ "$format" = csv ]; then 158ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos printf "%s,%s,%s\n" $testdir "$build" "no data" 159ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos else 160ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos printf "%-30s %-8s %12.12s\n" $testdir "$build" "no data" 161ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos fi 162ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos return 1 163ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos fi 164ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos 165ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos set -- $($POWERAVE $hz $voltage $powerfile) 166ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos current=$(echo $1 $baselineCurrent | awk '{ printf "%.2f", $1-$2; }') 167ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos power=$(echo $2 $baselinePower | awk '{ printf "%.2f", $1-$2; }') 168ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos 169ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos case $workload in 170ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos (idle) 171ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos set -- 0 0 0 172ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos ;; 173ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos (suntemple) 174ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos # units are fps 175ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos set -- $(grep "FPS average" $file | sed 's/^.*seconds for a //' | awk '{ print $1; }' | average) 176ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos ;; 177ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos (recentfling|youtube|chrome) 178ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos # units are ms, so need to convert to app/ms 179ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos set -- $(grep ^Frames: $file | tr "/" " " | awk '{ print $4; }' | average | awk '{ printf "%.3f %.3f %.3f\n", 1000/$3, 1000/$2, 1000/$1;}' ) 180ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos ;; 181ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos (sysapps) 182ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos # units are ms, so need to convert to app/ms 183ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos set -- $(cat $file | sysappOutputParser | average | awk '{ printf "%.3f %.3f %.3f\n", 1000/$3, 1000/$2, 1000/$1;}' ) 184ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos ;; 185ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos (shadowgrid2) 186ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos # units are fps 187ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos set -- $(cat $file | hwuiOutputParser | tr ',' ' ' | awk '{print $2;}' | average) 188ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos ;; 189ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos esac 190ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos 191ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos minperf=$1 192ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos aveperf=$2 193ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos maxperf=$3 194ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos perfPerWatt=$(echo $aveperf $power | awk '{ if ($2) { val=$1*1000/$2; printf "%.3f\n", val; } else print "unknown"; }') 195ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos if [ "$format" = csv ]; then 196ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos printf "%s,%s,%f,%f,%f,%f,%f,%f," $testdir "$build" $minperf $aveperf $maxperf $current $baselinePower $power 197ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos printf "%s\n" $perfPerWatt 198ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos else 199ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos printf "%-30s %-8s %12.2f %12.2f %12.2f %12.2f %12.2f %12.2f " $testdir "$build" $minperf $aveperf $maxperf $current $baselinePower $power 200ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos printf "%12s\n" $perfPerWatt 201ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos fi 202ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos} 203ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos 204ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjosfunction calcBaselinePower { 205ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos workload=$1 206ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos defaultPowerFile="idle-display-power.out" 207ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos powerFile=$defaultPowerFile 208ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos case $workload in 209ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos (shadowgrid2|suntemple|recentfling) 210ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos powerFile="idle-airplane-display-power.out" 211ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos if [ ! -f $powerFile ]; then 212ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos powerFile=$defaultPowerFile 213ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos fi;; 214ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos esac 215ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos if [ -f $powerFile ]; then 216ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos $POWERAVE 5 4.3 $powerFile 217ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos fi 218ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos} 219ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos 220ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjosfor t in $(cat tests) 221ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjosdo 222ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos echo .======================= $t ================================ 223ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos printHeader $t 224ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos for i in $testResults 225ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos do 226ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos cd $i 227ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos baseline="$(calcBaselinePower $t)" 228ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos if [ "$baseline" != "" ]; then 229ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos calcPerfData $i $t $baseline 230ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos else 231ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos echo "$i : no baseline current" 232ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos fi 233ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos cd - > /dev/null 234ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos done 235ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjosdone 236