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 |