r4748 - developers/werner/wlan-perf
werner at docs.openmoko.org
werner at docs.openmoko.org
Mon Nov 3 07:16:08 CET 2008
Author: werner
Date: 2008-11-03 07:16:07 +0100 (Mon, 03 Nov 2008)
New Revision: 4748
Modified:
developers/werner/wlan-perf/report
Log:
Make the reports more useful.
- report: show also the CPU load of ttcp runs
- report: print the standard deviation of all measurements
- report: if given an argument, chdir to it before looking for files
Modified: developers/werner/wlan-perf/report
===================================================================
--- developers/werner/wlan-perf/report 2008-11-03 03:59:59 UTC (rev 4747)
+++ developers/werner/wlan-perf/report 2008-11-03 06:16:07 UTC (rev 4748)
@@ -3,7 +3,7 @@
sub extract_ttcp()
{
- local ($name, *rate, *csw) = @_;
+ local ($name, *rate, *csw, *cpu) = @_;
open(F, $name) || die "$name: $!";
while (<F>) {
@@ -13,6 +13,9 @@
if (/ (\d+)\+(\d+)csw/) {
push(@csw, $1+$2);
}
+ if (/real (\d+)%/) {
+ push(@cpu, $1);
+ }
}
close F;
}
@@ -20,19 +23,32 @@
sub ttcp_format()
{
- local ($rate, $csw) = @_;
+ local ($rate, $csw, $cpu) = @_;
- return sprintf("%8.2f %7d", $rate/1000, $csw);
+ return sprintf("%8.2f %7d %3d%%", $rate/1000, $csw, $cpu);
}
+#
+# Dirty trick: we use
+# @var for the set of values extracted from the file,
+# $var for the sum collected for calculating the average, and
+# $var{""} to hold the sum of squares for the standard deviation.
+#
+
+
sub ttcp_set()
{
- local (*rate, *csw, $i) = @_;
+ local (*rate, *csw, *cpu, $i) = @_;
+
$rate += $rate[$i];
$csw += $csw[$i];
- return &ttcp_format($rate[$i], $csw[$i]);
+ $cpu += $cpu[$i];
+ $rate{""} += $rate[$i]*$rate[$i];
+ $csw{""} += $csw[$i]*$csw[$i];
+ $cpu{""} += $cpu[$i]*$cpu[$i];
+ return &ttcp_format($rate[$i], $csw[$i], $cpu[$i]);
}
@@ -44,32 +60,49 @@
}
+sub ttcp_std_dev()
+{
+ local (*var, $n) = @_;
+
+ return &std_dev($var{""}, $var/$n, $n);
+}
+
+
sub report_ttcp()
{
local ($label_tx, $label_rx, $tx, $rx) = @_;
- local (@tx_rate, @tx_csw);
- local (@rx_rate, @rx_csw);
- local ($tx_rate, $tx_csw);
- local ($rx_rate, $rx_csw);
+ local (@tx_rate, @tx_csw, @tx_cpu);
+ local (@rx_rate, @rx_csw, @rx_cpu);
+ local (%tx_rate, %tx_csw, %tx_cpu);
+ local (%rx_rate, %rx_csw, %rx_cpu);
+ local ($tx_rate, $tx_csw, $tx_cpu);
+ local ($rx_rate, $rx_csw, $rx_cpu);
local ($gap) = " " x 4;
+ local ($n);
print "---- ",
$label_tx, " ", "-" x (15-length $label_tx), $gap,
$label_rx, " ", "-" x (15-length $label_rx), "\n";
print " " x 5,
- sprintf("%-8s %-7s", "*1000B/s", "ctx_sw"), $gap,
- sprintf("%-8s %-7s", "*1000B/s", "ctx_sw"), "\n";
+ sprintf("%-8s %-7s CPU ", "*1000B/s", "ctx_sw"), $gap,
+ sprintf("%-8s %-7s CPU ", "*1000B/s", "ctx_sw"), "\n";
- &extract_ttcp($tx, *tx_rate, *tx_csw);
- &extract_ttcp($rx, *rx_rate, *rx_csw);
- for ($i = 0; $i != @tx_rate; $i++) {
+ &extract_ttcp($tx, *tx_rate, *tx_csw, *tx_cpu);
+ &extract_ttcp($rx, *rx_rate, *rx_csw, *rx_cpu);
+ $n = @tx_rate;
+ for ($i = 0; $i != $n; $i++) {
print sprintf("%3d: ", $i+1),
- &ttcp_set(*tx_rate, *tx_csw, $i), $gap,
- &ttcp_set(*rx_rate, *rx_csw, $i), "\n";
+ &ttcp_set(*tx_rate, *tx_csw, *tx_cpu, $i), $gap,
+ &ttcp_set(*rx_rate, *rx_csw, *rx_cpu, $i), "\n";
}
print "AVG: ",
- &ttcp_format($tx_rate/@tx_rate, $tx_csw/@tx_rate), $gap,
- &ttcp_format($rx_rate/@tx_rate, $rx_csw/@tx_rate), "\n";
+ &ttcp_format($tx_rate/$n, $tx_csw/$n, $tx_cpu/$n), $gap,
+ &ttcp_format($rx_rate/$n, $rx_csw/$n, $rx_cpu/$n), "\n";
+ print "SDV: ",
+ &ttcp_format(&ttcp_std_dev(*tx_rate, $n),
+ &ttcp_std_dev(*tx_csw, $n), &ttcp_std_dev(*tx_cpu, $n)), $gap,
+ &ttcp_format(&ttcp_std_dev(*rx_rate, $n),
+ &ttcp_std_dev(*rx_csw, $n), &ttcp_std_dev(*rx_cpu, $n)), "\n";
print "\n";
}
@@ -115,6 +148,10 @@
}
+if (@ARGV) {
+ chdir($ARGV[0]) || die "$ARGV[0]: $!";
+}
+
&report_ttcp("host =>", "=> neo", "_rx_host", "_rx_neo");
&report_ttcp("neo =>", "=> host", "_tx_neo", "_tx_host");
&report_ping("host => neo", "_ping_rx");
More information about the commitlog
mailing list