123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104 |
- #!/bin/bash
- # This program is free software: you can redistribute it and/or modify
- # it under the terms of the GNU General Public License as published by
- # the Free Software Foundation; either version 2, or (at your option)
- # any later version.
- # This program is distributed in the hope that it will be useful,
- # but WITHOUT ANY WARRANTY; without even the implied warranty of
- # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- # GNU General Public License for more details.
- # You should have received a copy of the GNU General Public License
- # along with this program; if not, write to the Free Software
- # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
- # 02110-1301, USA.
- # Author/Copyright(c): 2009, Thomas Renninger <trenn@suse.de>, Novell Inc.
- # Helper script to easily create nice plots of your cpufreq-bench results
- dir=`mktemp -d`
- output_file="cpufreq-bench.png"
- global_title="cpufreq-bench plot"
- picture_type="jpeg"
- file[0]=""
- function usage()
- {
- echo "cpufreq-bench_plot.sh [OPTIONS] logfile [measure_title] [logfile [measure_title]] ...]"
- echo
- echo "Options"
- echo " -o output_file"
- echo " -t global_title"
- echo " -p picture_type [jpeg|gif|png|postscript|...]"
- exit 1
- }
- if [ $# -eq 0 ];then
- echo "No benchmark results file provided"
- echo
- usage
- fi
- while getopts o:t:p: name ; do
- case $name in
- o)
- output_file="$OPTARG".$picture_type
- ;;
- t)
- global_title="$OPTARG"
- ;;
- p)
- picture_type="$OPTARG"
- ;;
- ?)
- usage
- ;;
- esac
- done
- shift $(($OPTIND -1))
- plots=0
- while [ "$1" ];do
- if [ ! -f "$1" ];then
- echo "File $1 does not exist"
- usage
- fi
- file[$plots]="$1"
- title[$plots]="$2"
- # echo "File: ${file[$plots]} - ${title[plots]}"
- shift;shift
- plots=$((plots + 1))
- done
- echo "set terminal $picture_type" >> $dir/plot_script.gpl
- echo "set output \"$output_file\"" >> $dir/plot_script.gpl
- echo "set title \"$global_title\"" >> $dir/plot_script.gpl
- echo "set xlabel \"sleep/load time\"" >> $dir/plot_script.gpl
- echo "set ylabel \"Performance (%)\"" >> $dir/plot_script.gpl
- for((plot=0;plot<$plots;plot++));do
- # Sanity check
- ###### I am to dump to get this redirected to stderr/stdout in one awk call... #####
- 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}'
- ###### I am to dump to get this redirected in one awk call... #####
- # Parse out load time (which must be equal to sleep time for a plot), divide it by 1000
- # to get ms and parse out the performance in percentage and write it to a temp file for plotting
- cat ${file[$plot]} |grep -v "^#" |awk '{printf "%lu %.1f\n",$2/1000, $6}' >$dir/data_$plot
- if [ $plot -eq 0 ];then
- echo -n "plot " >> $dir/plot_script.gpl
- fi
- echo -n "\"$dir/data_$plot\" title \"${title[$plot]}\" with lines" >> $dir/plot_script.gpl
- if [ $(($plot + 1)) -ne $plots ];then
- echo -n ", " >> $dir/plot_script.gpl
- fi
- done
- echo >> $dir/plot_script.gpl
- gnuplot $dir/plot_script.gpl
- rm -r $dir
|