some fixes for performance measurments and added plot
diff --git a/src/main/java/net/onrc/onos/ofcontroller/flowmanager/ParallelFlowDatabaseOperation.java b/src/main/java/net/onrc/onos/ofcontroller/flowmanager/ParallelFlowDatabaseOperation.java
index 50834d2..55aeb97 100644
--- a/src/main/java/net/onrc/onos/ofcontroller/flowmanager/ParallelFlowDatabaseOperation.java
+++ b/src/main/java/net/onrc/onos/ofcontroller/flowmanager/ParallelFlowDatabaseOperation.java
@@ -268,7 +268,7 @@
PerformanceMonitor.Measurement m;
m = PerformanceMonitor.start(tag1);
boolean success = FlowDatabaseOperation.addFlow(dbHandler, flowPath);
- PerformanceMonitor.stop(tag1);
+// PerformanceMonitor.stop(tag1);
m.stop();
m = PerformanceMonitor.start(tag2);
if(success) {
diff --git a/src/main/java/net/onrc/onos/ofcontroller/flowmanager/PerformanceMonitor.java b/src/main/java/net/onrc/onos/ofcontroller/flowmanager/PerformanceMonitor.java
index 7c38a3c..fa75460 100644
--- a/src/main/java/net/onrc/onos/ofcontroller/flowmanager/PerformanceMonitor.java
+++ b/src/main/java/net/onrc/onos/ofcontroller/flowmanager/PerformanceMonitor.java
@@ -54,13 +54,11 @@
public static void stop(String tag) {
long time = System.nanoTime();
List<Measurement> list = map.get(tag);
- if(list == null) {
+ if(list == null || list.size() == 0) {
log.error("Tag {} does not exist", tag);
}
- else if(list.size() == 1) {
- list.get(0).stop(time);
- }
- else {
+ list.get(0).stop(time);
+ if(list.size() > 1) {
log.error("Tag {} has multiple measurements", tag);
}
overhead += System.nanoTime() - time;
@@ -92,6 +90,9 @@
int total = 0, count = 0;
long start = Long.MAX_VALUE, stop = -1;
for(Measurement m : list) {
+ if(m.stop < 0) {
+ continue; // measurement has not been stopped
+ }
// Collect overall start and end times
if(m.start < start) {
start = m.start;
@@ -101,8 +102,7 @@
if(stop > experimentEnd) {
experimentEnd = stop;
}
- }
-
+ }
// Collect statistics for average
total += m.elapsed();
count++;
@@ -155,7 +155,9 @@
* Start the measurement
*/
public void start() {
- start = System.nanoTime();
+ if(start <= 0) {
+ start = System.nanoTime();
+ }
}
/**
@@ -171,7 +173,9 @@
* @param time to stop
*/
public void stop(long time){
- stop = time;
+ if(stop <= 0) {
+ stop = time;
+ }
}
/**
@@ -217,15 +221,24 @@
report();
clear();
}
-// for(int i = 0; i < 100; i++){
-// tag = "a";
-// start(tag); stop(tag);
-// tag = "b";
-// start(tag); stop(tag);
-// tag = "c";
-// start(tag); stop(tag);
-// report();
-// clear();
-// }
+ for(int i = 0; i < 100; i++){
+ tag = "a";
+ start(tag); stop(tag);
+ start(tag); stop(tag);
+
+ start(tag); stop(tag);
+ start(tag); stop(tag);
+ start(tag); stop(tag);
+ start(tag); stop(tag);
+ start(tag); stop(tag);
+ start(tag); stop(tag);
+
+ tag = "b";
+ start(tag); stop(tag);
+ tag = "c";
+ start(tag); stop(tag);
+ report();
+ clear();
+ }
}
}