104 lines
3.1 KiB
Bash
104 lines
3.1 KiB
Bash
|
#!/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
|