18c2ecf20Sopenharmony_ci#!/bin/bash
28c2ecf20Sopenharmony_ci# SPDX-License-Identifier: GPL-2.0-or-later
38c2ecf20Sopenharmony_ci
48c2ecf20Sopenharmony_ci
58c2ecf20Sopenharmony_ci# Author/Copyright(c): 2009, Thomas Renninger <trenn@suse.de>, Novell Inc.
68c2ecf20Sopenharmony_ci
78c2ecf20Sopenharmony_ci# Helper script to easily create nice plots of your cpufreq-bench results
88c2ecf20Sopenharmony_ci
98c2ecf20Sopenharmony_cidir=`mktemp -d`
108c2ecf20Sopenharmony_cioutput_file="cpufreq-bench.png"
118c2ecf20Sopenharmony_ciglobal_title="cpufreq-bench plot"
128c2ecf20Sopenharmony_cipicture_type="jpeg"
138c2ecf20Sopenharmony_cifile[0]=""
148c2ecf20Sopenharmony_ci
158c2ecf20Sopenharmony_cifunction usage()
168c2ecf20Sopenharmony_ci{
178c2ecf20Sopenharmony_ci    echo "cpufreq-bench_plot.sh [OPTIONS] logfile [measure_title] [logfile [measure_title]] ...]"
188c2ecf20Sopenharmony_ci    echo
198c2ecf20Sopenharmony_ci    echo "Options"
208c2ecf20Sopenharmony_ci    echo "   -o output_file"
218c2ecf20Sopenharmony_ci    echo "   -t global_title"
228c2ecf20Sopenharmony_ci    echo "   -p picture_type [jpeg|gif|png|postscript|...]"
238c2ecf20Sopenharmony_ci    exit 1
248c2ecf20Sopenharmony_ci}
258c2ecf20Sopenharmony_ci
268c2ecf20Sopenharmony_ciif [ $# -eq 0 ];then
278c2ecf20Sopenharmony_ci	echo "No benchmark results file provided"
288c2ecf20Sopenharmony_ci	echo
298c2ecf20Sopenharmony_ci	usage
308c2ecf20Sopenharmony_cifi
318c2ecf20Sopenharmony_ci
328c2ecf20Sopenharmony_ciwhile getopts o:t:p: name ; do
338c2ecf20Sopenharmony_ci    case $name in
348c2ecf20Sopenharmony_ci	o)
358c2ecf20Sopenharmony_ci	    output_file="$OPTARG".$picture_type
368c2ecf20Sopenharmony_ci	    ;;
378c2ecf20Sopenharmony_ci	t)
388c2ecf20Sopenharmony_ci	    global_title="$OPTARG"
398c2ecf20Sopenharmony_ci	    ;;
408c2ecf20Sopenharmony_ci	p)
418c2ecf20Sopenharmony_ci	    picture_type="$OPTARG"
428c2ecf20Sopenharmony_ci	    ;;
438c2ecf20Sopenharmony_ci        ?)
448c2ecf20Sopenharmony_ci	    usage
458c2ecf20Sopenharmony_ci	    ;;
468c2ecf20Sopenharmony_ci    esac
478c2ecf20Sopenharmony_cidone
488c2ecf20Sopenharmony_cishift $(($OPTIND -1))
498c2ecf20Sopenharmony_ci
508c2ecf20Sopenharmony_ciplots=0
518c2ecf20Sopenharmony_ciwhile [ "$1" ];do
528c2ecf20Sopenharmony_ci    if [ ! -f "$1" ];then
538c2ecf20Sopenharmony_ci	echo "File $1 does not exist"
548c2ecf20Sopenharmony_ci	usage
558c2ecf20Sopenharmony_ci    fi
568c2ecf20Sopenharmony_ci    file[$plots]="$1"
578c2ecf20Sopenharmony_ci    title[$plots]="$2"
588c2ecf20Sopenharmony_ci    # echo "File: ${file[$plots]} - ${title[plots]}"
598c2ecf20Sopenharmony_ci    shift;shift
608c2ecf20Sopenharmony_ci    plots=$((plots + 1))
618c2ecf20Sopenharmony_cidone
628c2ecf20Sopenharmony_ci
638c2ecf20Sopenharmony_ciecho "set terminal $picture_type"	>> $dir/plot_script.gpl
648c2ecf20Sopenharmony_ciecho "set output \"$output_file\""	>> $dir/plot_script.gpl
658c2ecf20Sopenharmony_ciecho "set title \"$global_title\""	>> $dir/plot_script.gpl
668c2ecf20Sopenharmony_ciecho "set xlabel \"sleep/load time\""	>> $dir/plot_script.gpl
678c2ecf20Sopenharmony_ciecho "set ylabel \"Performance (%)\""	>> $dir/plot_script.gpl
688c2ecf20Sopenharmony_ci
698c2ecf20Sopenharmony_cifor((plot=0;plot<$plots;plot++));do
708c2ecf20Sopenharmony_ci
718c2ecf20Sopenharmony_ci    # Sanity check
728c2ecf20Sopenharmony_ci    ###### I am to dump to get this redirected to stderr/stdout in one awk call... #####
738c2ecf20Sopenharmony_ci    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}'
748c2ecf20Sopenharmony_ci    ###### I am to dump to get this redirected in one awk call... #####
758c2ecf20Sopenharmony_ci
768c2ecf20Sopenharmony_ci    # Parse out load time (which must be equal to sleep time for a plot), divide it by 1000
778c2ecf20Sopenharmony_ci    # to get ms and parse out the performance in percentage and write it to a temp file for plotting
788c2ecf20Sopenharmony_ci    cat ${file[$plot]} |grep -v "^#" |awk '{printf "%lu %.1f\n",$2/1000, $6}' >$dir/data_$plot
798c2ecf20Sopenharmony_ci
808c2ecf20Sopenharmony_ci    if [ $plot -eq 0 ];then
818c2ecf20Sopenharmony_ci	echo -n "plot " >> $dir/plot_script.gpl
828c2ecf20Sopenharmony_ci    fi
838c2ecf20Sopenharmony_ci    echo -n "\"$dir/data_$plot\" title \"${title[$plot]}\" with lines" >> $dir/plot_script.gpl
848c2ecf20Sopenharmony_ci    if [ $(($plot + 1)) -ne $plots ];then
858c2ecf20Sopenharmony_ci	echo -n ", " >> $dir/plot_script.gpl
868c2ecf20Sopenharmony_ci    fi
878c2ecf20Sopenharmony_cidone
888c2ecf20Sopenharmony_ciecho >> $dir/plot_script.gpl
898c2ecf20Sopenharmony_ci
908c2ecf20Sopenharmony_cignuplot $dir/plot_script.gpl
918c2ecf20Sopenharmony_cirm -r $dir
92