Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
torvalds
GitHub Repository: torvalds/linux
Path: blob/master/tools/power/cpupower/bench/cpufreq-bench_plot.sh
26292 views
1
#!/bin/bash
2
# SPDX-License-Identifier: GPL-2.0-or-later
3
4
5
# Author/Copyright(c): 2009, Thomas Renninger <[email protected]>, Novell Inc.
6
7
# Helper script to easily create nice plots of your cpufreq-bench results
8
9
dir=`mktemp -d`
10
output_file="cpufreq-bench.png"
11
global_title="cpufreq-bench plot"
12
picture_type="jpeg"
13
file[0]=""
14
15
function 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
26
if [ $# -eq 0 ];then
27
echo "No benchmark results file provided"
28
echo
29
usage
30
fi
31
32
while 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
47
done
48
shift $(($OPTIND -1))
49
50
plots=0
51
while [ "$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))
61
done
62
63
echo "set terminal $picture_type" >> $dir/plot_script.gpl
64
echo "set output \"$output_file\"" >> $dir/plot_script.gpl
65
echo "set title \"$global_title\"" >> $dir/plot_script.gpl
66
echo "set xlabel \"sleep/load time\"" >> $dir/plot_script.gpl
67
echo "set ylabel \"Performance (%)\"" >> $dir/plot_script.gpl
68
69
for((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
87
done
88
echo >> $dir/plot_script.gpl
89
90
gnuplot $dir/plot_script.gpl
91
rm -r $dir
92
93