Add logs to print the time it takes to perform the periodic process
of the flow state in the Network MAP.
diff --git a/src/main/java/net/floodlightcontroller/flowcache/FlowManager.java b/src/main/java/net/floodlightcontroller/flowcache/FlowManager.java
index 098e02f..8cbf184 100644
--- a/src/main/java/net/floodlightcontroller/flowcache/FlowManager.java
+++ b/src/main/java/net/floodlightcontroller/flowcache/FlowManager.java
@@ -265,6 +265,12 @@
final Runnable mapReader = new Runnable() {
public void run() {
+ long startTime = System.nanoTime();
+ int counterAllFlowEntries = 0;
+ int counterMyNotUpdatedFlowEntries = 0;
+ int counterAllFlowPaths = 0;
+ int counterMyFlowPaths = 0;
+
if (floodlightProvider == null) {
log.debug("FloodlightProvider service not found!");
return;
@@ -284,6 +290,7 @@
Iterable<IFlowEntry> allFlowEntries =
conn.utils().getAllFlowEntries(conn);
for (IFlowEntry flowEntryObj : allFlowEntries) {
+ counterAllFlowEntries++;
String flowEntryIdStr = flowEntryObj.getFlowEntryId();
String userState = flowEntryObj.getUserState();
String switchState = flowEntryObj.getSwitchState();
@@ -321,6 +328,7 @@
//
boolean processed_measurement_flow = false;
for (Map.Entry<Long, IFlowEntry> entry : myFlowEntries.entrySet()) {
+ counterMyNotUpdatedFlowEntries++;
IFlowEntry flowEntryObj = entry.getValue();
IFlowPath flowObj =
conn.utils().getFlowPathByFlowEntry(conn,
@@ -523,6 +531,7 @@
Iterable<IFlowPath> allFlowPaths = conn.utils().getAllFlowPaths(conn);
HashSet<IFlowPath> flowObjSet = new HashSet<IFlowPath>();
for (IFlowPath flowPathObj : allFlowPaths) {
+ counterAllFlowPaths++;
if (flowPathObj == null)
continue;
String dataPathSummaryStr = flowPathObj.getDataPathSummary();
@@ -591,6 +600,7 @@
log.debug("RECONCILE: Need to Reconcile Shortest Path for FlowID {}",
flowId.toString());
flowObjSet.add(flowPathObj);
+ counterMyFlowPaths++;
}
reconcileFlows(flowObjSet);
topoRouteService.dropShortestPathTopo();
@@ -604,6 +614,11 @@
(double)estimatedTime / 1000000000 + " sec";
log.debug(logMsg);
}
+
+ long estimatedTime = System.nanoTime() - startTime;
+ double rate = (estimatedTime > 0)? ((double)counterAllFlowPaths * 1000000000) / estimatedTime: 0.0;
+ String logMsg = "MEASUREMENT: Processed AllFlowEntries: " + counterAllFlowEntries + " MyNotUpdatedFlowEntries: " + counterMyNotUpdatedFlowEntries + " AllFlowPaths: " + counterAllFlowPaths + " MyFlowPaths: " + counterMyFlowPaths + " in " + (double)estimatedTime / 1000000000 + " sec: " + rate + " paths/s";
+ log.debug(logMsg);
}
};