1*4882a593Smuzhiyun#!/bin/bash 2*4882a593Smuzhiyun# SPDX-License-Identifier: GPL-2.0-or-later 3*4882a593Smuzhiyun 4*4882a593Smuzhiyun 5*4882a593Smuzhiyun# Author/Copyright(c): 2009, Thomas Renninger <trenn@suse.de>, Novell Inc. 6*4882a593Smuzhiyun 7*4882a593Smuzhiyun# Helper script to easily create nice plots of your cpufreq-bench results 8*4882a593Smuzhiyun 9*4882a593Smuzhiyundir=`mktemp -d` 10*4882a593Smuzhiyunoutput_file="cpufreq-bench.png" 11*4882a593Smuzhiyunglobal_title="cpufreq-bench plot" 12*4882a593Smuzhiyunpicture_type="jpeg" 13*4882a593Smuzhiyunfile[0]="" 14*4882a593Smuzhiyun 15*4882a593Smuzhiyunfunction usage() 16*4882a593Smuzhiyun{ 17*4882a593Smuzhiyun echo "cpufreq-bench_plot.sh [OPTIONS] logfile [measure_title] [logfile [measure_title]] ...]" 18*4882a593Smuzhiyun echo 19*4882a593Smuzhiyun echo "Options" 20*4882a593Smuzhiyun echo " -o output_file" 21*4882a593Smuzhiyun echo " -t global_title" 22*4882a593Smuzhiyun echo " -p picture_type [jpeg|gif|png|postscript|...]" 23*4882a593Smuzhiyun exit 1 24*4882a593Smuzhiyun} 25*4882a593Smuzhiyun 26*4882a593Smuzhiyunif [ $# -eq 0 ];then 27*4882a593Smuzhiyun echo "No benchmark results file provided" 28*4882a593Smuzhiyun echo 29*4882a593Smuzhiyun usage 30*4882a593Smuzhiyunfi 31*4882a593Smuzhiyun 32*4882a593Smuzhiyunwhile getopts o:t:p: name ; do 33*4882a593Smuzhiyun case $name in 34*4882a593Smuzhiyun o) 35*4882a593Smuzhiyun output_file="$OPTARG".$picture_type 36*4882a593Smuzhiyun ;; 37*4882a593Smuzhiyun t) 38*4882a593Smuzhiyun global_title="$OPTARG" 39*4882a593Smuzhiyun ;; 40*4882a593Smuzhiyun p) 41*4882a593Smuzhiyun picture_type="$OPTARG" 42*4882a593Smuzhiyun ;; 43*4882a593Smuzhiyun ?) 44*4882a593Smuzhiyun usage 45*4882a593Smuzhiyun ;; 46*4882a593Smuzhiyun esac 47*4882a593Smuzhiyundone 48*4882a593Smuzhiyunshift $(($OPTIND -1)) 49*4882a593Smuzhiyun 50*4882a593Smuzhiyunplots=0 51*4882a593Smuzhiyunwhile [ "$1" ];do 52*4882a593Smuzhiyun if [ ! -f "$1" ];then 53*4882a593Smuzhiyun echo "File $1 does not exist" 54*4882a593Smuzhiyun usage 55*4882a593Smuzhiyun fi 56*4882a593Smuzhiyun file[$plots]="$1" 57*4882a593Smuzhiyun title[$plots]="$2" 58*4882a593Smuzhiyun # echo "File: ${file[$plots]} - ${title[plots]}" 59*4882a593Smuzhiyun shift;shift 60*4882a593Smuzhiyun plots=$((plots + 1)) 61*4882a593Smuzhiyundone 62*4882a593Smuzhiyun 63*4882a593Smuzhiyunecho "set terminal $picture_type" >> $dir/plot_script.gpl 64*4882a593Smuzhiyunecho "set output \"$output_file\"" >> $dir/plot_script.gpl 65*4882a593Smuzhiyunecho "set title \"$global_title\"" >> $dir/plot_script.gpl 66*4882a593Smuzhiyunecho "set xlabel \"sleep/load time\"" >> $dir/plot_script.gpl 67*4882a593Smuzhiyunecho "set ylabel \"Performance (%)\"" >> $dir/plot_script.gpl 68*4882a593Smuzhiyun 69*4882a593Smuzhiyunfor((plot=0;plot<$plots;plot++));do 70*4882a593Smuzhiyun 71*4882a593Smuzhiyun # Sanity check 72*4882a593Smuzhiyun ###### I am to dump to get this redirected to stderr/stdout in one awk call... ##### 73*4882a593Smuzhiyun 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}' 74*4882a593Smuzhiyun ###### I am to dump to get this redirected in one awk call... ##### 75*4882a593Smuzhiyun 76*4882a593Smuzhiyun # Parse out load time (which must be equal to sleep time for a plot), divide it by 1000 77*4882a593Smuzhiyun # to get ms and parse out the performance in percentage and write it to a temp file for plotting 78*4882a593Smuzhiyun cat ${file[$plot]} |grep -v "^#" |awk '{printf "%lu %.1f\n",$2/1000, $6}' >$dir/data_$plot 79*4882a593Smuzhiyun 80*4882a593Smuzhiyun if [ $plot -eq 0 ];then 81*4882a593Smuzhiyun echo -n "plot " >> $dir/plot_script.gpl 82*4882a593Smuzhiyun fi 83*4882a593Smuzhiyun echo -n "\"$dir/data_$plot\" title \"${title[$plot]}\" with lines" >> $dir/plot_script.gpl 84*4882a593Smuzhiyun if [ $(($plot + 1)) -ne $plots ];then 85*4882a593Smuzhiyun echo -n ", " >> $dir/plot_script.gpl 86*4882a593Smuzhiyun fi 87*4882a593Smuzhiyundone 88*4882a593Smuzhiyunecho >> $dir/plot_script.gpl 89*4882a593Smuzhiyun 90*4882a593Smuzhiyungnuplot $dir/plot_script.gpl 91*4882a593Smuzhiyunrm -r $dir 92