From 179a71a4374c831b43690c1c5135e03f8d049aa3 Mon Sep 17 00:00:00 2001
From: Srinivasan Ramasubramanian <srini@bigswitch.com>
Date: Thu, 22 Dec 2011 16:01:00 -0800
Subject: [PATCH] Updates to print messages to log.info when packet-in
 processing time exceeds 0.5s.

---
 .../core/OFMessageFilterManager.java                 |  2 +-
 .../core/internal/Controller.java                    | 12 +++++++++++-
 2 files changed, 12 insertions(+), 2 deletions(-)

diff --git a/src/main/java/net/floodlightcontroller/core/OFMessageFilterManager.java b/src/main/java/net/floodlightcontroller/core/OFMessageFilterManager.java
index c2dbd7eb0..d1e835de1 100644
--- a/src/main/java/net/floodlightcontroller/core/OFMessageFilterManager.java
+++ b/src/main/java/net/floodlightcontroller/core/OFMessageFilterManager.java
@@ -563,7 +563,7 @@ public class OFMessageFilterManager implements IOFMessageListener {
         return sb.toString().getBytes();
     }
 
-    private String getStringFromEthernetPacket(Ethernet eth) {
+    public String getStringFromEthernetPacket(Ethernet eth) {
 
         StringBuffer sb = new StringBuffer("\n");
 
diff --git a/src/main/java/net/floodlightcontroller/core/internal/Controller.java b/src/main/java/net/floodlightcontroller/core/internal/Controller.java
index c44b43503..14e02f66d 100644
--- a/src/main/java/net/floodlightcontroller/core/internal/Controller.java
+++ b/src/main/java/net/floodlightcontroller/core/internal/Controller.java
@@ -723,6 +723,8 @@ public class Controller
             throws IOException {
         Ethernet eth = null;
 
+        long startTime = System.nanoTime();
+
         switch (m.getType()) {
             case PACKET_IN:
                 OFPacketIn pi = (OFPacketIn)m;
@@ -785,8 +787,16 @@ public class Controller
                 } else {
                     log.error("Unhandled OF Message: {} from {}", m, sw);
                 }
-                break;
+
+                long processingTime = System.nanoTime() - startTime;
+                if (processingTime > (long)500000000) {  // processing takes more than half a second
+                    log.info("--**--**-- Time to process packet-in: {} ns", processingTime);
+                    if (eth!= null)
+                        log.info("{}", messageFilterManager.getStringFromEthernetPacket(eth));
+                    log.info("--**--**-- ");
+                }
         }
+
     }
     
     /**
-- 
GitLab