~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

TOMOYO Linux Cross Reference
Linux/tools/testing/selftests/amd-pstate/gitsource.sh

Version: ~ [ linux-6.12-rc7 ] ~ [ linux-6.11.7 ] ~ [ linux-6.10.14 ] ~ [ linux-6.9.12 ] ~ [ linux-6.8.12 ] ~ [ linux-6.7.12 ] ~ [ linux-6.6.60 ] ~ [ linux-6.5.13 ] ~ [ linux-6.4.16 ] ~ [ linux-6.3.13 ] ~ [ linux-6.2.16 ] ~ [ linux-6.1.116 ] ~ [ linux-6.0.19 ] ~ [ linux-5.19.17 ] ~ [ linux-5.18.19 ] ~ [ linux-5.17.15 ] ~ [ linux-5.16.20 ] ~ [ linux-5.15.171 ] ~ [ linux-5.14.21 ] ~ [ linux-5.13.19 ] ~ [ linux-5.12.19 ] ~ [ linux-5.11.22 ] ~ [ linux-5.10.229 ] ~ [ linux-5.9.16 ] ~ [ linux-5.8.18 ] ~ [ linux-5.7.19 ] ~ [ linux-5.6.19 ] ~ [ linux-5.5.19 ] ~ [ linux-5.4.285 ] ~ [ linux-5.3.18 ] ~ [ linux-5.2.21 ] ~ [ linux-5.1.21 ] ~ [ linux-5.0.21 ] ~ [ linux-4.20.17 ] ~ [ linux-4.19.323 ] ~ [ linux-4.18.20 ] ~ [ linux-4.17.19 ] ~ [ linux-4.16.18 ] ~ [ linux-4.15.18 ] ~ [ linux-4.14.336 ] ~ [ linux-4.13.16 ] ~ [ linux-4.12.14 ] ~ [ linux-4.11.12 ] ~ [ linux-4.10.17 ] ~ [ linux-4.9.337 ] ~ [ linux-4.4.302 ] ~ [ linux-3.10.108 ] ~ [ linux-2.6.32.71 ] ~ [ linux-2.6.0 ] ~ [ linux-2.4.37.11 ] ~ [ unix-v6-master ] ~ [ ccs-tools-1.8.12 ] ~ [ policy-sample ] ~
Architecture: ~ [ i386 ] ~ [ alpha ] ~ [ m68k ] ~ [ mips ] ~ [ ppc ] ~ [ sparc ] ~ [ sparc64 ] ~

Diff markup

Differences between /tools/testing/selftests/amd-pstate/gitsource.sh (Architecture i386) and /tools/testing/selftests/amd-pstate/gitsource.sh (Architecture ppc)


  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 }
                                                      

~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

kernel.org | git.kernel.org | LWN.net | Project Home | SVN repository | Mail admin

Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.

sflogo.php