cpupowerutils - cpufrequtils extended with quite some features
[linux-2.6.git] / tools / power / cpupower / bench / cpufreq-bench_plot.sh
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