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