cachepc-linux

Fork of AMDESE/linux with modifications for CachePC side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-linux
Log | Files | Refs | README | LICENSE | sfeed.txt

cpufreq-bench_plot.sh (2493B)


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