|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-devel] [PATCH 17/27] ts-kernbench-reslts: process and plot bench results
From: Dario Faggioli <raistlin@xxxxxxxx>
Extract the data from the output of kernbench and produce
the tables, the gnuplot script and the plots.
All is saved in $stash, for the running flight and job.
Signed-off-by: Dario Faggioli <dario.faggioli@xxxxxxxxxx>
Cc: Wei Liu <wei.liu2@xxxxxxxxxx>
Cc: Ian Campbell <Ian.Campbell@xxxxxxxxxx>
Cc: Ian Jackson <Ian.Jackson@xxxxxxxxxxxxx>
---
Osstest/Benchmarking.pm | 88 ++++++++++++++++++++++++++++++++++++++++++++---
ts-kernbench-reslts | 19 +++++++++-
2 files changed, 99 insertions(+), 8 deletions(-)
diff --git a/Osstest/Benchmarking.pm b/Osstest/Benchmarking.pm
index 0c5c538..ff45766 100644
--- a/Osstest/Benchmarking.pm
+++ b/Osstest/Benchmarking.pm
@@ -34,6 +34,9 @@ BEGIN {
@EXPORT = qw(unixbench_process_results
unixbench_print_results
unixbench_plot_results
+ kernbench_process_results
+ kernbench_print_results
+ kernbench_plot_results
);
%EXPORT_TAGS = ( );
@@ -83,6 +86,15 @@ sub unixbench_print_results ($$) {
close($h);
}
+our $common_plot_opts= <<EOF;
+set key outside center top horizontal noreverse noenhanced autotitles nobox
+set xtics mirror rotate by -45 out
+set style data histogram
+set style histogram cluster gap 1
+set style fill solid border lt -1
+set boxwidth 1 absolute
+EOF
+
sub unixbench_plot_results ($$$) {
my ($dataf,$num_cols,$pfile)= @_;
my $h= new IO::File "> $pfile.gp" or die "$!";
@@ -91,12 +103,7 @@ sub unixbench_plot_results ($$$) {
set terminal png enhanced font
"/usr/share/fonts/truetype/ttf-dejavu/DejaVuSans.ttf" 8 size 800,600
set output '$pfile.png'
set title 'Unixbench INDEXes for $flight.$job'
-set key outside center top horizontal noreverse noenhanced autotitles nobox
-set xtics mirror rotate by -45 out
-set style data histogram
-set style histogram cluster gap 1
-set style fill solid border lt -1
-set boxwidth 1 absolute
+$common_plot_opts
set bmargin 13
set rmargin 14
SKIP_COL=1
@@ -112,4 +119,73 @@ EOF
logm("WARNING: plotting file with \"$err\"") unless $ok;
}
+sub kernbench_process_results ($$) {
+ my ($results_ref,$rfilen)= @_;
+ my $h= new IO::File "< $rfilen" or die "$!";
+
+ my $run;
+ while (<$h>) {
+ my ($bench,$val,$stdd);
+ if (m/.*load -j ([0-9]*)\s?Run.*$/) {
+ $run= $1 || 0;
+ }
+ if (m/^(\S[a-zA-z\s]*)\s([0-9]+.?[0-9]*)\s\(([0-9]+.?[0-9]*)\)$/) {
+ $bench=$1;
+ next if $bench =~ /Sleeps|Context|Percent/;
+ $val= $2;
+ $stdd= $3;
+ $$results_ref->{"$bench"}{Result}{"$run"}= $val;
+ $$results_ref->{"$bench"}{StdDev}{"$run"}= $stdd;
+ }
+ next;
+ }
+ close($h);
+}
+
+sub kernbench_print_results ($$) {
+ my ($results,$rfilen)= @_;
+ open my $h, "|-", "tee $rfilen" or die "$!";
+
+ printf $h "%-25s","\"What\"";
+ foreach my $i (sort keys $results->{'Elapsed Time'}{'Result'}) {
+ my $col= "kernbench -j";
+ $col .= ($i == 0) ? "" : " $i";
+ printf $h "%-20s","\"$col\""
+ # TODO: Include stddev too in the report
+ }
+ print $h "\n";
+ foreach my $b (keys $results) {
+ printf $h "%-25s","\"$b\"";
+ foreach my $i (sort keys $results->{"$b"}{'Result'}) {
+ printf $h "%-20s",$results->{$b}{'Result'}{$i};
+ }
+ print $h "\n";
+ }
+ close($h);
+}
+
+sub kernbench_plot_results ($$$) {
+ my ($dataf,$num_cols,$pfile)= @_;
+
+ my $h= new IO::File "> $pfile.gp" or die "$!";
+ print $h <<EOF;
+set terminal png enhanced font
"/usr/share/fonts/truetype/ttf-dejavu/DejaVuSans.ttf" 8 size 800,600
+set output '$pfile.png'
+set title 'Kernbench Results for $flight.$job'
+$common_plot_opts
+set bmargin 6
+SKIP_COL=1
+NCOL=$num_cols
+HWIDTH=1.0/(NCOL+1.0)
+cols=''
+plot for [c=SKIP_COL+1:SKIP_COL+NCOL] '$dataf' using c:xtic(1) with histograms
title columnhead, \\
+ for [c=SKIP_COL+1:SKIP_COL+NCOL] '' every ::1 using 0:c:c with labels
notitle offset first -HWIDTH*(NCOL/2.0)+HWIDTH/2.0+(c-(SKIP_COL+1))*HWIDTH,
character 2 rotate by 90
+EOF
+ close($h);
+
+ my $gp= can_run('gnuplot') or return;
+ my ($ok,$err)= run( command => "$gp $pfile.gp", verbose => 1 );
+ logm("WARNING: plotting file with \"$err\"") unless $ok;
+}
+
1;
diff --git a/ts-kernbench-reslts b/ts-kernbench-reslts
index dcb279d..113a4ce 100755
--- a/ts-kernbench-reslts
+++ b/ts-kernbench-reslts
@@ -21,6 +21,7 @@ use DBI;
use IO::File;
use POSIX;
use Osstest::TestSupport;
+use Osstest::Benchmarking;
tsreadconfig();
@@ -43,9 +44,11 @@ $lresfile .= (defined($r{'kernbench_run_suffix'})) ?
$r{'kernbench_run_suffix'} : '';
$lresfile = "kernbench$lresfile";
+our $results;
+
# Kernbench stores results in the linux kernel tree it
# built, in a file called kernbench.log
-sub results() {
+sub fetch() {
my $rresults_dir= "/root/linux-kernbench";
my $rresfile= "$rresults_dir/kernbench.log";
@@ -57,4 +60,16 @@ sub results() {
"$lresfile");
}
-results();
+sub process () {
+ my $resf= "$stash/$gho->{Name}--$lresfile";
+ my $dataf= "$resf-DATA";
+ my $plotf= "$resf-PLOT";
+
+ kernbench_process_results(\$results,$resf);
+ kernbench_print_results($results,$dataf);
+ my $ncols= keys $results->{'Elapsed Time'}{'Result'};
+ kernbench_plot_results($dataf,$ncols,$plotf);
+}
+
+fetch();
+process();
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
http://lists.xen.org/xen-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |