162306a36Sopenharmony_ci#!/bin/bash
262306a36Sopenharmony_ci# SPDX-License-Identifier: GPL-2.0-or-later
362306a36Sopenharmony_ci
462306a36Sopenharmony_ci
562306a36Sopenharmony_ci# Author/Copyright(c): 2009, Thomas Renninger <trenn@suse.de>, Novell Inc.
662306a36Sopenharmony_ci
762306a36Sopenharmony_ci# Helper script to easily create nice plots of your cpufreq-bench results
862306a36Sopenharmony_ci
962306a36Sopenharmony_cidir=`mktemp -d`
1062306a36Sopenharmony_cioutput_file="cpufreq-bench.png"
1162306a36Sopenharmony_ciglobal_title="cpufreq-bench plot"
1262306a36Sopenharmony_cipicture_type="jpeg"
1362306a36Sopenharmony_cifile[0]=""
1462306a36Sopenharmony_ci
1562306a36Sopenharmony_cifunction usage()
1662306a36Sopenharmony_ci{
1762306a36Sopenharmony_ci    echo "cpufreq-bench_plot.sh [OPTIONS] logfile [measure_title] [logfile [measure_title]] ...]"
1862306a36Sopenharmony_ci    echo
1962306a36Sopenharmony_ci    echo "Options"
2062306a36Sopenharmony_ci    echo "   -o output_file"
2162306a36Sopenharmony_ci    echo "   -t global_title"
2262306a36Sopenharmony_ci    echo "   -p picture_type [jpeg|gif|png|postscript|...]"
2362306a36Sopenharmony_ci    exit 1
2462306a36Sopenharmony_ci}
2562306a36Sopenharmony_ci
2662306a36Sopenharmony_ciif [ $# -eq 0 ];then
2762306a36Sopenharmony_ci	echo "No benchmark results file provided"
2862306a36Sopenharmony_ci	echo
2962306a36Sopenharmony_ci	usage
3062306a36Sopenharmony_cifi
3162306a36Sopenharmony_ci
3262306a36Sopenharmony_ciwhile getopts o:t:p: name ; do
3362306a36Sopenharmony_ci    case $name in
3462306a36Sopenharmony_ci	o)
3562306a36Sopenharmony_ci	    output_file="$OPTARG".$picture_type
3662306a36Sopenharmony_ci	    ;;
3762306a36Sopenharmony_ci	t)
3862306a36Sopenharmony_ci	    global_title="$OPTARG"
3962306a36Sopenharmony_ci	    ;;
4062306a36Sopenharmony_ci	p)
4162306a36Sopenharmony_ci	    picture_type="$OPTARG"
4262306a36Sopenharmony_ci	    ;;
4362306a36Sopenharmony_ci        ?)
4462306a36Sopenharmony_ci	    usage
4562306a36Sopenharmony_ci	    ;;
4662306a36Sopenharmony_ci    esac
4762306a36Sopenharmony_cidone
4862306a36Sopenharmony_cishift $(($OPTIND -1))
4962306a36Sopenharmony_ci
5062306a36Sopenharmony_ciplots=0
5162306a36Sopenharmony_ciwhile [ "$1" ];do
5262306a36Sopenharmony_ci    if [ ! -f "$1" ];then
5362306a36Sopenharmony_ci	echo "File $1 does not exist"
5462306a36Sopenharmony_ci	usage
5562306a36Sopenharmony_ci    fi
5662306a36Sopenharmony_ci    file[$plots]="$1"
5762306a36Sopenharmony_ci    title[$plots]="$2"
5862306a36Sopenharmony_ci    # echo "File: ${file[$plots]} - ${title[plots]}"
5962306a36Sopenharmony_ci    shift;shift
6062306a36Sopenharmony_ci    plots=$((plots + 1))
6162306a36Sopenharmony_cidone
6262306a36Sopenharmony_ci
6362306a36Sopenharmony_ciecho "set terminal $picture_type"	>> $dir/plot_script.gpl
6462306a36Sopenharmony_ciecho "set output \"$output_file\""	>> $dir/plot_script.gpl
6562306a36Sopenharmony_ciecho "set title \"$global_title\""	>> $dir/plot_script.gpl
6662306a36Sopenharmony_ciecho "set xlabel \"sleep/load time\""	>> $dir/plot_script.gpl
6762306a36Sopenharmony_ciecho "set ylabel \"Performance (%)\""	>> $dir/plot_script.gpl
6862306a36Sopenharmony_ci
6962306a36Sopenharmony_cifor((plot=0;plot<$plots;plot++));do
7062306a36Sopenharmony_ci
7162306a36Sopenharmony_ci    # Sanity check
7262306a36Sopenharmony_ci    ###### I am to dump to get this redirected to stderr/stdout in one awk call... #####
7362306a36Sopenharmony_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}'
7462306a36Sopenharmony_ci    ###### I am to dump to get this redirected in one awk call... #####
7562306a36Sopenharmony_ci
7662306a36Sopenharmony_ci    # Parse out load time (which must be equal to sleep time for a plot), divide it by 1000
7762306a36Sopenharmony_ci    # to get ms and parse out the performance in percentage and write it to a temp file for plotting
7862306a36Sopenharmony_ci    cat ${file[$plot]} |grep -v "^#" |awk '{printf "%lu %.1f\n",$2/1000, $6}' >$dir/data_$plot
7962306a36Sopenharmony_ci
8062306a36Sopenharmony_ci    if [ $plot -eq 0 ];then
8162306a36Sopenharmony_ci	echo -n "plot " >> $dir/plot_script.gpl
8262306a36Sopenharmony_ci    fi
8362306a36Sopenharmony_ci    echo -n "\"$dir/data_$plot\" title \"${title[$plot]}\" with lines" >> $dir/plot_script.gpl
8462306a36Sopenharmony_ci    if [ $(($plot + 1)) -ne $plots ];then
8562306a36Sopenharmony_ci	echo -n ", " >> $dir/plot_script.gpl
8662306a36Sopenharmony_ci    fi
8762306a36Sopenharmony_cidone
8862306a36Sopenharmony_ciecho >> $dir/plot_script.gpl
8962306a36Sopenharmony_ci
9062306a36Sopenharmony_cignuplot $dir/plot_script.gpl
9162306a36Sopenharmony_cirm -r $dir
92