Dominik Brodowski | 7fe2f63 | 2011-03-30 16:30:11 +0200 | [diff] [blame] | 1 | #!/bin/bash |
| 2 | |
| 3 | # This program is free software: you can redistribute it and/or modify |
| 4 | # it under the terms of the GNU General Public License as published by |
| 5 | # the Free Software Foundation; either version 2, or (at your option) |
| 6 | # any later version. |
| 7 | |
| 8 | # This program is distributed in the hope that it will be useful, |
| 9 | # but WITHOUT ANY WARRANTY; without even the implied warranty of |
| 10 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
| 11 | # GNU General Public License for more details. |
| 12 | |
| 13 | # You should have received a copy of the GNU General Public License |
| 14 | # along with this program; if not, write to the Free Software |
| 15 | # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA |
| 16 | # 02110-1301, USA. |
| 17 | |
| 18 | # Author/Copyright(c): 2009, Thomas Renninger <trenn@suse.de>, Novell Inc. |
| 19 | |
| 20 | # Helper script to easily create nice plots of your cpufreq-bench results |
| 21 | |
| 22 | dir=`mktemp -d` |
| 23 | output_file="cpufreq-bench.png" |
| 24 | global_title="cpufreq-bench plot" |
| 25 | picture_type="jpeg" |
| 26 | file[0]="" |
| 27 | |
| 28 | function usage() |
| 29 | { |
| 30 | echo "cpufreq-bench_plot.sh [OPTIONS] logfile [measure_title] [logfile [measure_title]] ...]" |
| 31 | echo |
| 32 | echo "Options" |
| 33 | echo " -o output_file" |
| 34 | echo " -t global_title" |
| 35 | echo " -p picture_type [jpeg|gif|png|postscript|...]" |
| 36 | exit 1 |
| 37 | } |
| 38 | |
| 39 | if [ $# -eq 0 ];then |
| 40 | echo "No benchmark results file provided" |
| 41 | echo |
| 42 | usage |
| 43 | fi |
| 44 | |
| 45 | while getopts o:t:p: name ; do |
| 46 | case $name in |
| 47 | o) |
| 48 | output_file="$OPTARG".$picture_type |
| 49 | ;; |
| 50 | t) |
| 51 | global_title="$OPTARG" |
| 52 | ;; |
| 53 | p) |
| 54 | picture_type="$OPTARG" |
| 55 | ;; |
| 56 | ?) |
| 57 | usage |
| 58 | ;; |
| 59 | esac |
| 60 | done |
| 61 | shift $(($OPTIND -1)) |
| 62 | |
| 63 | plots=0 |
| 64 | while [ "$1" ];do |
| 65 | if [ ! -f "$1" ];then |
| 66 | echo "File $1 does not exist" |
| 67 | usage |
| 68 | fi |
| 69 | file[$plots]="$1" |
| 70 | title[$plots]="$2" |
| 71 | # echo "File: ${file[$plots]} - ${title[plots]}" |
| 72 | shift;shift |
| 73 | plots=$((plots + 1)) |
| 74 | done |
| 75 | |
| 76 | echo "set terminal $picture_type" >> $dir/plot_script.gpl |
| 77 | echo "set output \"$output_file\"" >> $dir/plot_script.gpl |
| 78 | echo "set title \"$global_title\"" >> $dir/plot_script.gpl |
| 79 | echo "set xlabel \"sleep/load time\"" >> $dir/plot_script.gpl |
| 80 | echo "set ylabel \"Performance (%)\"" >> $dir/plot_script.gpl |
| 81 | |
| 82 | for((plot=0;plot<$plots;plot++));do |
| 83 | |
| 84 | # Sanity check |
| 85 | ###### I am to dump to get this redirected to stderr/stdout in one awk call... ##### |
| 86 | cat ${file[$plot]} |grep -v "^#" |awk '{if ($2 != $3) printf("Error in measure %d:Load time %s does not equal sleep time %s, plot will not be correct\n", $1, $2, $3); ERR=1}' |
| 87 | ###### I am to dump to get this redirected in one awk call... ##### |
| 88 | |
| 89 | # Parse out load time (which must be equal to sleep time for a plot), divide it by 1000 |
| 90 | # to get ms and parse out the performance in percentage and write it to a temp file for plotting |
| 91 | cat ${file[$plot]} |grep -v "^#" |awk '{printf "%lu %.1f\n",$2/1000, $6}' >$dir/data_$plot |
| 92 | |
| 93 | if [ $plot -eq 0 ];then |
| 94 | echo -n "plot " >> $dir/plot_script.gpl |
| 95 | fi |
| 96 | echo -n "\"$dir/data_$plot\" title \"${title[$plot]}\" with lines" >> $dir/plot_script.gpl |
| 97 | if [ $(($plot + 1)) -ne $plots ];then |
| 98 | echo -n ", " >> $dir/plot_script.gpl |
| 99 | fi |
| 100 | done |
| 101 | echo >> $dir/plot_script.gpl |
| 102 | |
| 103 | gnuplot $dir/plot_script.gpl |
| 104 | rm -r $dir |