1 #!/bin/bash 1 #!/bin/bash 2 # SPDX-License-Identifier: GPL-2.0 2 # SPDX-License-Identifier: GPL-2.0 3 3 4 # Testing and monitor the cpu desire performan 4 # Testing and monitor the cpu desire performance, frequency, load, 5 # power consumption and throughput etc. when t 5 # power consumption and throughput etc. when this script trigger 6 # gitsource test. 6 # gitsource test. 7 # 1) Download and tar gitsource codes. 7 # 1) Download and tar gitsource codes. 8 # 2) Run gitsource benchmark on specific gover 8 # 2) Run gitsource benchmark on specific governors, ondemand or schedutil. 9 # 3) Run tbench benchmark comparative test on 9 # 3) Run tbench benchmark comparative test on acpi-cpufreq kernel driver. 10 # 4) Get desire performance, frequency, load b 10 # 4) Get desire performance, frequency, load by perf. 11 # 5) Get power consumption and throughput by a 11 # 5) Get power consumption and throughput by amd_pstate_trace.py. 12 # 6) Get run time by /usr/bin/time. 12 # 6) Get run time by /usr/bin/time. 13 # 7) Analyse test results and save it in file 13 # 7) Analyse test results and save it in file selftest.gitsource.csv. 14 #8) Plot png images about time, energy and per 14 #8) Plot png images about time, energy and performance per watt for each test. 15 15 16 # protect against multiple inclusion 16 # protect against multiple inclusion 17 if [ $FILE_GITSOURCE ]; then 17 if [ $FILE_GITSOURCE ]; then 18 return 0 18 return 0 19 else 19 else 20 FILE_GITSOURCE=DONE 20 FILE_GITSOURCE=DONE 21 fi 21 fi 22 22 23 git_name="git-2.15.1" 23 git_name="git-2.15.1" 24 git_tar="$git_name.tar.gz" 24 git_tar="$git_name.tar.gz" 25 gitsource_url="https://github.com/git/git/arch 25 gitsource_url="https://github.com/git/git/archive/refs/tags/v2.15.1.tar.gz" 26 gitsource_governors=("ondemand" "schedutil") 26 gitsource_governors=("ondemand" "schedutil") 27 27 28 # $1: governor, $2: round, $3: des-perf, $4: f 28 # $1: governor, $2: round, $3: des-perf, $4: freq, $5: load, $6: time $7: energy, $8: PPW 29 store_csv_gitsource() 29 store_csv_gitsource() 30 { 30 { 31 echo "$1, $2, $3, $4, $5, $6, $7, $8" 31 echo "$1, $2, $3, $4, $5, $6, $7, $8" | tee -a $OUTFILE_GIT.csv > /dev/null 2>&1 32 } 32 } 33 33 34 # clear some special lines 34 # clear some special lines 35 clear_csv_gitsource() 35 clear_csv_gitsource() 36 { 36 { 37 if [ -f $OUTFILE_GIT.csv ]; then 37 if [ -f $OUTFILE_GIT.csv ]; then 38 sed -i '/Comprison(%)/d' $OUTF 38 sed -i '/Comprison(%)/d' $OUTFILE_GIT.csv 39 sed -i "/$(scaling_name)/d" $O 39 sed -i "/$(scaling_name)/d" $OUTFILE_GIT.csv 40 fi 40 fi 41 } 41 } 42 42 43 # find string $1 in file csv and get the numbe 43 # find string $1 in file csv and get the number of lines 44 get_lines_csv_gitsource() 44 get_lines_csv_gitsource() 45 { 45 { 46 if [ -f $OUTFILE_GIT.csv ]; then 46 if [ -f $OUTFILE_GIT.csv ]; then 47 return `grep -c "$1" $OUTFILE_ 47 return `grep -c "$1" $OUTFILE_GIT.csv` 48 else 48 else 49 return 0 49 return 0 50 fi 50 fi 51 } 51 } 52 52 53 pre_clear_gitsource() 53 pre_clear_gitsource() 54 { 54 { 55 post_clear_gitsource 55 post_clear_gitsource 56 rm -rf gitsource_*.png 56 rm -rf gitsource_*.png 57 clear_csv_gitsource 57 clear_csv_gitsource 58 } 58 } 59 59 60 post_clear_gitsource() 60 post_clear_gitsource() 61 { 61 { 62 rm -rf results/tracer-gitsource* 62 rm -rf results/tracer-gitsource* 63 rm -rf $OUTFILE_GIT*.log 63 rm -rf $OUTFILE_GIT*.log 64 rm -rf $OUTFILE_GIT*.result 64 rm -rf $OUTFILE_GIT*.result 65 } 65 } 66 66 67 install_gitsource() 67 install_gitsource() 68 { 68 { 69 if [ ! -d $SCRIPTDIR/$git_name ]; then 69 if [ ! -d $SCRIPTDIR/$git_name ]; then 70 pushd $(pwd) > /dev/null 2>&1 70 pushd $(pwd) > /dev/null 2>&1 71 cd $SCRIPTDIR 71 cd $SCRIPTDIR 72 printf "Download gitsource, pl 72 printf "Download gitsource, please wait a moment ...\n\n" 73 wget -O $git_tar $gitsource_ur 73 wget -O $git_tar $gitsource_url > /dev/null 2>&1 74 74 75 printf "Tar gitsource ...\n\n" 75 printf "Tar gitsource ...\n\n" 76 tar -xzf $git_tar 76 tar -xzf $git_tar 77 popd > /dev/null 2>&1 77 popd > /dev/null 2>&1 78 fi 78 fi 79 } 79 } 80 80 81 # $1: governor, $2: loop 81 # $1: governor, $2: loop 82 run_gitsource() 82 run_gitsource() 83 { 83 { 84 echo "Launching amd pstate tracer for 84 echo "Launching amd pstate tracer for $1 #$2 tracer_interval: $TRACER_INTERVAL" 85 $TRACER -n tracer-gitsource-$1-$2 -i $ 85 $TRACER -n tracer-gitsource-$1-$2 -i $TRACER_INTERVAL > /dev/null 2>&1 & 86 86 87 printf "Make and test gitsource for $1 87 printf "Make and test gitsource for $1 #$2 make_cpus: $MAKE_CPUS\n" 88 BACKUP_DIR=$(pwd) 88 BACKUP_DIR=$(pwd) 89 pushd $BACKUP_DIR > /dev/null 2>&1 89 pushd $BACKUP_DIR > /dev/null 2>&1 90 cd $SCRIPTDIR/$git_name 90 cd $SCRIPTDIR/$git_name 91 $PERF stat -a --per-socket -I 1000 -e 91 $PERF stat -a --per-socket -I 1000 -e power/energy-pkg/ /usr/bin/time -o $BACKUP_DIR/$OUTFILE_GIT.time-gitsource-$1-$2.log make test -j$MAKE_CPUS > $BACKUP_DIR/$OUTFILE_GIT-perf-$1-$2.log 2>&1 92 popd > /dev/null 2>&1 92 popd > /dev/null 2>&1 93 93 94 for job in `jobs -p` 94 for job in `jobs -p` 95 do 95 do 96 echo "Waiting for job id $job" 96 echo "Waiting for job id $job" 97 wait $job 97 wait $job 98 done 98 done 99 } 99 } 100 100 101 # $1: governor, $2: loop 101 # $1: governor, $2: loop 102 parse_gitsource() 102 parse_gitsource() 103 { 103 { 104 awk '{print $5}' results/tracer-gitsou 104 awk '{print $5}' results/tracer-gitsource-$1-$2/cpu.csv | sed -e '1d' | sed s/,// > $OUTFILE_GIT-des-perf-$1-$2.log 105 avg_des_perf=$(awk 'BEGIN {i=0; sum=0} 105 avg_des_perf=$(awk 'BEGIN {i=0; sum=0};{i++; sum += $1};END {print sum/i}' $OUTFILE_GIT-des-perf-$1-$2.log) 106 printf "Gitsource-$1-#$2 avg des perf: 106 printf "Gitsource-$1-#$2 avg des perf: $avg_des_perf\n" | tee -a $OUTFILE_GIT.result 107 107 108 awk '{print $7}' results/tracer-gitsou 108 awk '{print $7}' results/tracer-gitsource-$1-$2/cpu.csv | sed -e '1d' | sed s/,// > $OUTFILE_GIT-freq-$1-$2.log 109 avg_freq=$(awk 'BEGIN {i=0; sum=0};{i+ 109 avg_freq=$(awk 'BEGIN {i=0; sum=0};{i++; sum += $1};END {print sum/i}' $OUTFILE_GIT-freq-$1-$2.log) 110 printf "Gitsource-$1-#$2 avg freq: $av 110 printf "Gitsource-$1-#$2 avg freq: $avg_freq\n" | tee -a $OUTFILE_GIT.result 111 111 112 awk '{print $11}' results/tracer-gitso 112 awk '{print $11}' results/tracer-gitsource-$1-$2/cpu.csv | sed -e '1d' | sed s/,// > $OUTFILE_GIT-load-$1-$2.log 113 avg_load=$(awk 'BEGIN {i=0; sum=0};{i+ 113 avg_load=$(awk 'BEGIN {i=0; sum=0};{i++; sum += $1};END {print sum/i}' $OUTFILE_GIT-load-$1-$2.log) 114 printf "Gitsource-$1-#$2 avg load: $av 114 printf "Gitsource-$1-#$2 avg load: $avg_load\n" | tee -a $OUTFILE_GIT.result 115 115 116 grep user $OUTFILE_GIT.time-gitsource- 116 grep user $OUTFILE_GIT.time-gitsource-$1-$2.log | awk '{print $1}' | sed -e 's/user//' > $OUTFILE_GIT-time-$1-$2.log 117 time_sum=$(awk 'BEGIN {sum=0};{sum += 117 time_sum=$(awk 'BEGIN {sum=0};{sum += $1};END {print sum}' $OUTFILE_GIT-time-$1-$2.log) 118 printf "Gitsource-$1-#$2 user time(s): 118 printf "Gitsource-$1-#$2 user time(s): $time_sum\n" | tee -a $OUTFILE_GIT.result 119 119 120 grep Joules $OUTFILE_GIT-perf-$1-$2.lo 120 grep Joules $OUTFILE_GIT-perf-$1-$2.log | awk '{print $4}' > $OUTFILE_GIT-energy-$1-$2.log 121 en_sum=$(awk 'BEGIN {sum=0};{sum += $1 121 en_sum=$(awk 'BEGIN {sum=0};{sum += $1};END {print sum}' $OUTFILE_GIT-energy-$1-$2.log) 122 printf "Gitsource-$1-#$2 power consump 122 printf "Gitsource-$1-#$2 power consumption(J): $en_sum\n" | tee -a $OUTFILE_GIT.result 123 123 124 # Permance is the number of run gitsou 124 # Permance is the number of run gitsource per second, denoted 1/t, where 1 is the number of run gitsource in t 125 # seconds. It is well known that P=E/t 125 # seconds. It is well known that P=E/t, where P is power measured in watts(W), E is energy measured in joules(J), 126 # and t is time measured in seconds(s) 126 # and t is time measured in seconds(s). This means that performance per watt becomes 127 # 1/t 1/t 1 127 # 1/t 1/t 1 128 # ----- = ----- = --- 128 # ----- = ----- = --- 129 # P E/t E 129 # P E/t E 130 # with unit given by 1 per joule. 130 # with unit given by 1 per joule. 131 ppw=`echo "scale=9;1/$en_sum" | bc | a 131 ppw=`echo "scale=9;1/$en_sum" | bc | awk '{printf "%.9f", $0}'` 132 printf "Gitsource-$1-#$2 performance p 132 printf "Gitsource-$1-#$2 performance per watt(1/J): $ppw\n" | tee -a $OUTFILE_GIT.result 133 printf "\n" | tee -a $OUTFILE_GIT.resu 133 printf "\n" | tee -a $OUTFILE_GIT.result 134 134 135 driver_name=`echo $(scaling_name)` 135 driver_name=`echo $(scaling_name)` 136 store_csv_gitsource "$driver_name-$1" 136 store_csv_gitsource "$driver_name-$1" $2 $avg_des_perf $avg_freq $avg_load $time_sum $en_sum $ppw 137 } 137 } 138 138 139 # $1: governor 139 # $1: governor 140 loop_gitsource() 140 loop_gitsource() 141 { 141 { 142 printf "\nGitsource total test times i 142 printf "\nGitsource total test times is $LOOP_TIMES for $1\n\n" 143 for i in `seq 1 $LOOP_TIMES` 143 for i in `seq 1 $LOOP_TIMES` 144 do 144 do 145 run_gitsource $1 $i 145 run_gitsource $1 $i 146 parse_gitsource $1 $i 146 parse_gitsource $1 $i 147 done 147 done 148 } 148 } 149 149 150 # $1: governor 150 # $1: governor 151 gather_gitsource() 151 gather_gitsource() 152 { 152 { 153 printf "Gitsource test result for $1 ( 153 printf "Gitsource test result for $1 (loops:$LOOP_TIMES)" | tee -a $OUTFILE_GIT.result 154 printf "\n---------------------------- 154 printf "\n--------------------------------------------------\n" | tee -a $OUTFILE_GIT.result 155 155 156 grep "Gitsource-$1-#" $OUTFILE_GIT.res 156 grep "Gitsource-$1-#" $OUTFILE_GIT.result | grep "avg des perf:" | awk '{print $NF}' > $OUTFILE_GIT-des-perf-$1.log 157 avg_des_perf=$(awk 'BEGIN {sum=0};{sum 157 avg_des_perf=$(awk 'BEGIN {sum=0};{sum += $1};END {print sum/'$LOOP_TIMES'}' $OUTFILE_GIT-des-perf-$1.log) 158 printf "Gitsource-$1 avg des perf: $av 158 printf "Gitsource-$1 avg des perf: $avg_des_perf\n" | tee -a $OUTFILE_GIT.result 159 159 160 grep "Gitsource-$1-#" $OUTFILE_GIT.res 160 grep "Gitsource-$1-#" $OUTFILE_GIT.result | grep "avg freq:" | awk '{print $NF}' > $OUTFILE_GIT-freq-$1.log 161 avg_freq=$(awk 'BEGIN {sum=0};{sum += 161 avg_freq=$(awk 'BEGIN {sum=0};{sum += $1};END {print sum/'$LOOP_TIMES'}' $OUTFILE_GIT-freq-$1.log) 162 printf "Gitsource-$1 avg freq: $avg_fr 162 printf "Gitsource-$1 avg freq: $avg_freq\n" | tee -a $OUTFILE_GIT.result 163 163 164 grep "Gitsource-$1-#" $OUTFILE_GIT.res 164 grep "Gitsource-$1-#" $OUTFILE_GIT.result | grep "avg load:" | awk '{print $NF}' > $OUTFILE_GIT-load-$1.log 165 avg_load=$(awk 'BEGIN {sum=0};{sum += 165 avg_load=$(awk 'BEGIN {sum=0};{sum += $1};END {print sum/'$LOOP_TIMES'}' $OUTFILE_GIT-load-$1.log) 166 printf "Gitsource-$1 avg load: $avg_lo 166 printf "Gitsource-$1 avg load: $avg_load\n" | tee -a $OUTFILE_GIT.result 167 167 168 grep "Gitsource-$1-#" $OUTFILE_GIT.res 168 grep "Gitsource-$1-#" $OUTFILE_GIT.result | grep "user time(s):" | awk '{print $NF}' > $OUTFILE_GIT-time-$1.log 169 time_sum=$(awk 'BEGIN {sum=0};{sum += 169 time_sum=$(awk 'BEGIN {sum=0};{sum += $1};END {print sum}' $OUTFILE_GIT-time-$1.log) 170 printf "Gitsource-$1 total user time(s 170 printf "Gitsource-$1 total user time(s): $time_sum\n" | tee -a $OUTFILE_GIT.result 171 171 172 avg_time=$(awk 'BEGIN {sum=0};{sum += 172 avg_time=$(awk 'BEGIN {sum=0};{sum += $1};END {print sum/'$LOOP_TIMES'}' $OUTFILE_GIT-time-$1.log) 173 printf "Gitsource-$1 avg user times(s) 173 printf "Gitsource-$1 avg user times(s): $avg_time\n" | tee -a $OUTFILE_GIT.result 174 174 175 grep "Gitsource-$1-#" $OUTFILE_GIT.res 175 grep "Gitsource-$1-#" $OUTFILE_GIT.result | grep "power consumption(J):" | awk '{print $NF}' > $OUTFILE_GIT-energy-$1.log 176 en_sum=$(awk 'BEGIN {sum=0};{sum += $1 176 en_sum=$(awk 'BEGIN {sum=0};{sum += $1};END {print sum}' $OUTFILE_GIT-energy-$1.log) 177 printf "Gitsource-$1 total power consu 177 printf "Gitsource-$1 total power consumption(J): $en_sum\n" | tee -a $OUTFILE_GIT.result 178 178 179 avg_en=$(awk 'BEGIN {sum=0};{sum += $1 179 avg_en=$(awk 'BEGIN {sum=0};{sum += $1};END {print sum/'$LOOP_TIMES'}' $OUTFILE_GIT-energy-$1.log) 180 printf "Gitsource-$1 avg power consump 180 printf "Gitsource-$1 avg power consumption(J): $avg_en\n" | tee -a $OUTFILE_GIT.result 181 181 182 # Permance is the number of run gitsou 182 # Permance is the number of run gitsource per second, denoted 1/t, where 1 is the number of run gitsource in t 183 # seconds. It is well known that P=E/t 183 # seconds. It is well known that P=E/t, where P is power measured in watts(W), E is energy measured in joules(J), 184 # and t is time measured in seconds(s) 184 # and t is time measured in seconds(s). This means that performance per watt becomes 185 # 1/t 1/t 1 185 # 1/t 1/t 1 186 # ----- = ----- = --- 186 # ----- = ----- = --- 187 # P E/t E 187 # P E/t E 188 # with unit given by 1 per joule. 188 # with unit given by 1 per joule. 189 ppw=`echo "scale=9;1/$avg_en" | bc | a 189 ppw=`echo "scale=9;1/$avg_en" | bc | awk '{printf "%.9f", $0}'` 190 printf "Gitsource-$1 performance per w 190 printf "Gitsource-$1 performance per watt(1/J): $ppw\n" | tee -a $OUTFILE_GIT.result 191 printf "\n" | tee -a $OUTFILE_GIT.resu 191 printf "\n" | tee -a $OUTFILE_GIT.result 192 192 193 driver_name=`echo $(scaling_name)` 193 driver_name=`echo $(scaling_name)` 194 store_csv_gitsource "$driver_name-$1" 194 store_csv_gitsource "$driver_name-$1" "Average" $avg_des_perf $avg_freq $avg_load $avg_time $avg_en $ppw 195 } 195 } 196 196 197 # $1: base scaling_driver $2: base governor $3 197 # $1: base scaling_driver $2: base governor $3: comparison scaling_driver $4: comparison governor 198 __calc_comp_gitsource() 198 __calc_comp_gitsource() 199 { 199 { 200 base=`grep "$1-$2" $OUTFILE_GIT.csv | 200 base=`grep "$1-$2" $OUTFILE_GIT.csv | grep "Average"` 201 comp=`grep "$3-$4" $OUTFILE_GIT.csv | 201 comp=`grep "$3-$4" $OUTFILE_GIT.csv | grep "Average"` 202 202 203 if [ -n "$base" -a -n "$comp" ]; then 203 if [ -n "$base" -a -n "$comp" ]; then 204 printf "\n==================== 204 printf "\n==================================================\n" | tee -a $OUTFILE_GIT.result 205 printf "Gitsource comparison $ 205 printf "Gitsource comparison $1-$2 VS $3-$4" | tee -a $OUTFILE_GIT.result 206 printf "\n==================== 206 printf "\n==================================================\n" | tee -a $OUTFILE_GIT.result 207 207 208 # get the base values 208 # get the base values 209 des_perf_base=`echo "$base" | 209 des_perf_base=`echo "$base" | awk '{print $3}' | sed s/,//` 210 freq_base=`echo "$base" | awk 210 freq_base=`echo "$base" | awk '{print $4}' | sed s/,//` 211 load_base=`echo "$base" | awk 211 load_base=`echo "$base" | awk '{print $5}' | sed s/,//` 212 time_base=`echo "$base" | awk 212 time_base=`echo "$base" | awk '{print $6}' | sed s/,//` 213 energy_base=`echo "$base" | aw 213 energy_base=`echo "$base" | awk '{print $7}' | sed s/,//` 214 ppw_base=`echo "$base" | awk ' 214 ppw_base=`echo "$base" | awk '{print $8}' | sed s/,//` 215 215 216 # get the comparison values 216 # get the comparison values 217 des_perf_comp=`echo "$comp" | 217 des_perf_comp=`echo "$comp" | awk '{print $3}' | sed s/,//` 218 freq_comp=`echo "$comp" | awk 218 freq_comp=`echo "$comp" | awk '{print $4}' | sed s/,//` 219 load_comp=`echo "$comp" | awk 219 load_comp=`echo "$comp" | awk '{print $5}' | sed s/,//` 220 time_comp=`echo "$comp" | awk 220 time_comp=`echo "$comp" | awk '{print $6}' | sed s/,//` 221 energy_comp=`echo "$comp" | aw 221 energy_comp=`echo "$comp" | awk '{print $7}' | sed s/,//` 222 ppw_comp=`echo "$comp" | awk ' 222 ppw_comp=`echo "$comp" | awk '{print $8}' | sed s/,//` 223 223 224 # compare the base and comp va 224 # compare the base and comp values 225 des_perf_drop=`echo "scale=4;( 225 des_perf_drop=`echo "scale=4;($des_perf_comp-$des_perf_base)*100/$des_perf_base" | bc | awk '{printf "%.4f", $0}'` 226 printf "Gitsource-$1 des perf 226 printf "Gitsource-$1 des perf base: $des_perf_base comprison: $des_perf_comp percent: $des_perf_drop\n" | tee -a $OUTFILE_GIT.result 227 227 228 freq_drop=`echo "scale=4;($fre 228 freq_drop=`echo "scale=4;($freq_comp-$freq_base)*100/$freq_base" | bc | awk '{printf "%.4f", $0}'` 229 printf "Gitsource-$1 freq base 229 printf "Gitsource-$1 freq base: $freq_base comprison: $freq_comp percent: $freq_drop\n" | tee -a $OUTFILE_GIT.result 230 230 231 load_drop=`echo "scale=4;($loa 231 load_drop=`echo "scale=4;($load_comp-$load_base)*100/$load_base" | bc | awk '{printf "%.4f", $0}'` 232 printf "Gitsource-$1 load base 232 printf "Gitsource-$1 load base: $load_base comprison: $load_comp percent: $load_drop\n" | tee -a $OUTFILE_GIT.result 233 233 234 time_drop=`echo "scale=4;($tim 234 time_drop=`echo "scale=4;($time_comp-$time_base)*100/$time_base" | bc | awk '{printf "%.4f", $0}'` 235 printf "Gitsource-$1 time base 235 printf "Gitsource-$1 time base: $time_base comprison: $time_comp percent: $time_drop\n" | tee -a $OUTFILE_GIT.result 236 236 237 energy_drop=`echo "scale=4;($e 237 energy_drop=`echo "scale=4;($energy_comp-$energy_base)*100/$energy_base" | bc | awk '{printf "%.4f", $0}'` 238 printf "Gitsource-$1 energy ba 238 printf "Gitsource-$1 energy base: $energy_base comprison: $energy_comp percent: $energy_drop\n" | tee -a $OUTFILE_GIT.result 239 239 240 ppw_drop=`echo "scale=4;($ppw_ 240 ppw_drop=`echo "scale=4;($ppw_comp-$ppw_base)*100/$ppw_base" | bc | awk '{printf "%.4f", $0}'` 241 printf "Gitsource-$1 performan 241 printf "Gitsource-$1 performance per watt base: $ppw_base comprison: $ppw_comp percent: $ppw_drop\n" | tee -a $OUTFILE_GIT.result 242 printf "\n" | tee -a $OUTFILE_ 242 printf "\n" | tee -a $OUTFILE_GIT.result 243 243 244 store_csv_gitsource "$1-$2 VS 244 store_csv_gitsource "$1-$2 VS $3-$4" "Comprison(%)" "$des_perf_drop" "$freq_drop" "$load_drop" "$time_drop" "$energy_drop" "$ppw_drop" 245 fi 245 fi 246 } 246 } 247 247 248 # calculate the comparison(%) 248 # calculate the comparison(%) 249 calc_comp_gitsource() 249 calc_comp_gitsource() 250 { 250 { 251 # acpi-cpufreq-ondemand VS acpi-cpufre 251 # acpi-cpufreq-ondemand VS acpi-cpufreq-schedutil 252 __calc_comp_gitsource ${all_scaling_na 252 __calc_comp_gitsource ${all_scaling_names[0]} ${gitsource_governors[0]} ${all_scaling_names[0]} ${gitsource_governors[1]} 253 253 254 # amd-pstate-ondemand VS amd-pstate-sc 254 # amd-pstate-ondemand VS amd-pstate-schedutil 255 __calc_comp_gitsource ${all_scaling_na 255 __calc_comp_gitsource ${all_scaling_names[1]} ${gitsource_governors[0]} ${all_scaling_names[1]} ${gitsource_governors[1]} 256 256 257 # acpi-cpufreq-ondemand VS amd-pstate- 257 # acpi-cpufreq-ondemand VS amd-pstate-ondemand 258 __calc_comp_gitsource ${all_scaling_na 258 __calc_comp_gitsource ${all_scaling_names[0]} ${gitsource_governors[0]} ${all_scaling_names[1]} ${gitsource_governors[0]} 259 259 260 # acpi-cpufreq-schedutil VS amd-pstate 260 # acpi-cpufreq-schedutil VS amd-pstate-schedutil 261 __calc_comp_gitsource ${all_scaling_na 261 __calc_comp_gitsource ${all_scaling_names[0]} ${gitsource_governors[1]} ${all_scaling_names[1]} ${gitsource_governors[1]} 262 } 262 } 263 263 264 # $1: file_name, $2: title, $3: ylable, $4: co 264 # $1: file_name, $2: title, $3: ylable, $4: column 265 plot_png_gitsource() 265 plot_png_gitsource() 266 { 266 { 267 # all_scaling_names[1] all_scaling_nam 267 # all_scaling_names[1] all_scaling_names[0] flag 268 # amd-pstate acpi-cpufreq 268 # amd-pstate acpi-cpufreq 269 # N N 269 # N N 0 270 # N Y 270 # N Y 1 271 # Y N 271 # Y N 2 272 # Y Y 272 # Y Y 3 273 ret=`grep -c "${all_scaling_names[1]}" 273 ret=`grep -c "${all_scaling_names[1]}" $OUTFILE_GIT.csv` 274 if [ $ret -eq 0 ]; then 274 if [ $ret -eq 0 ]; then 275 ret=`grep -c "${all_scaling_na 275 ret=`grep -c "${all_scaling_names[0]}" $OUTFILE_GIT.csv` 276 if [ $ret -eq 0 ]; then 276 if [ $ret -eq 0 ]; then 277 flag=0 277 flag=0 278 else 278 else 279 flag=1 279 flag=1 280 fi 280 fi 281 else 281 else 282 ret=`grep -c "${all_scaling_na 282 ret=`grep -c "${all_scaling_names[0]}" $OUTFILE_GIT.csv` 283 if [ $ret -eq 0 ]; then 283 if [ $ret -eq 0 ]; then 284 flag=2 284 flag=2 285 else 285 else 286 flag=3 286 flag=3 287 fi 287 fi 288 fi 288 fi 289 289 290 gnuplot << EOF 290 gnuplot << EOF 291 set term png 291 set term png 292 set output "$1" 292 set output "$1" 293 293 294 set title "$2" 294 set title "$2" 295 set xlabel "Test Cycles (round 295 set xlabel "Test Cycles (round)" 296 set ylabel "$3" 296 set ylabel "$3" 297 297 298 set grid 298 set grid 299 set style data histogram 299 set style data histogram 300 set style fill solid 0.5 borde 300 set style fill solid 0.5 border 301 set boxwidth 0.8 301 set boxwidth 0.8 302 302 303 if ($flag == 1) { 303 if ($flag == 1) { 304 plot \ 304 plot \ 305 "<(sed -n -e 's/,//g' 305 "<(sed -n -e 's/,//g' -e '/${all_scaling_names[0]}-${gitsource_governors[0]}/p' $OUTFILE_GIT.csv)" using $4:xtic(2) title "${all_scaling_names[0]}-${gitsource_governors[0]}", \ 306 "<(sed -n -e 's/,//g' 306 "<(sed -n -e 's/,//g' -e '/${all_scaling_names[0]}-${gitsource_governors[1]}/p' $OUTFILE_GIT.csv)" using $4:xtic(2) title "${all_scaling_names[0]}-${gitsource_governors[1]}" 307 } else { 307 } else { 308 if ($flag == 2) { 308 if ($flag == 2) { 309 plot \ 309 plot \ 310 "<(sed -n -e ' 310 "<(sed -n -e 's/,//g' -e '/${all_scaling_names[1]}-${gitsource_governors[0]}/p' $OUTFILE_GIT.csv)" using $4:xtic(2) title "${all_scaling_names[1]}-${gitsource_governors[0]}", \ 311 "<(sed -n -e ' 311 "<(sed -n -e 's/,//g' -e '/${all_scaling_names[1]}-${gitsource_governors[1]}/p' $OUTFILE_GIT.csv)" using $4:xtic(2) title "${all_scaling_names[1]}-${gitsource_governors[1]}" 312 } else { 312 } else { 313 if ($flag == 3 313 if ($flag == 3 ) { 314 plot \ 314 plot \ 315 "<(sed 315 "<(sed -n -e 's/,//g' -e '/${all_scaling_names[0]}-${gitsource_governors[0]}/p' $OUTFILE_GIT.csv)" using $4:xtic(2) title "${all_scaling_names[0]}-${gitsource_governors[0]}", \ 316 "<(sed 316 "<(sed -n -e 's/,//g' -e '/${all_scaling_names[0]}-${gitsource_governors[1]}/p' $OUTFILE_GIT.csv)" using $4:xtic(2) title "${all_scaling_names[0]}-${gitsource_governors[1]}", \ 317 "<(sed 317 "<(sed -n -e 's/,//g' -e '/${all_scaling_names[1]}-${gitsource_governors[0]}/p' $OUTFILE_GIT.csv)" using $4:xtic(2) title "${all_scaling_names[1]}-${gitsource_governors[0]}", \ 318 "<(sed 318 "<(sed -n -e 's/,//g' -e '/${all_scaling_names[1]}-${gitsource_governors[1]}/p' $OUTFILE_GIT.csv)" using $4:xtic(2) title "${all_scaling_names[1]}-${gitsource_governors[1]}" 319 } 319 } 320 } 320 } 321 } 321 } 322 quit 322 quit 323 EOF 323 EOF 324 } 324 } 325 325 326 amd_pstate_gitsource() 326 amd_pstate_gitsource() 327 { 327 { 328 printf "\n---------------------------- 328 printf "\n---------------------------------------------\n" 329 printf "*** Running gitsource 329 printf "*** Running gitsource ***" 330 printf "\n---------------------------- 330 printf "\n---------------------------------------------\n" 331 331 332 pre_clear_gitsource 332 pre_clear_gitsource 333 333 334 install_gitsource 334 install_gitsource 335 335 336 get_lines_csv_gitsource "Governor" 336 get_lines_csv_gitsource "Governor" 337 if [ $? -eq 0 ]; then 337 if [ $? -eq 0 ]; then 338 # add titles and unit for csv 338 # add titles and unit for csv file 339 store_csv_gitsource "Governor" 339 store_csv_gitsource "Governor" "Round" "Des-perf" "Freq" "Load" "Time" "Energy" "Performance Per Watt" 340 store_csv_gitsource "Unit" "" 340 store_csv_gitsource "Unit" "" "" "GHz" "" "s" "J" "1/J" 341 fi 341 fi 342 342 343 backup_governor 343 backup_governor 344 for governor in ${gitsource_governors[ 344 for governor in ${gitsource_governors[*]} ; do 345 printf "\nSpecified governor i 345 printf "\nSpecified governor is $governor\n\n" 346 switch_governor $governor 346 switch_governor $governor 347 loop_gitsource $governor 347 loop_gitsource $governor 348 gather_gitsource $governor 348 gather_gitsource $governor 349 done 349 done 350 restore_governor 350 restore_governor 351 351 352 plot_png_gitsource "gitsource_time.png 352 plot_png_gitsource "gitsource_time.png" "Gitsource Benchmark Time" "Time (s)" 6 353 plot_png_gitsource "gitsource_energy.p 353 plot_png_gitsource "gitsource_energy.png" "Gitsource Benchmark Energy" "Energy (J)" 7 354 plot_png_gitsource "gitsource_ppw.png" 354 plot_png_gitsource "gitsource_ppw.png" "Gitsource Benchmark Performance Per Watt" "Performance Per Watt (1/J)" 8 355 355 356 calc_comp_gitsource 356 calc_comp_gitsource 357 357 358 post_clear_gitsource 358 post_clear_gitsource 359 } 359 }
Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.