diff --git a/src/main/java/net/floodlightcontroller/flowcache/FlowReconcileManager.java b/src/main/java/net/floodlightcontroller/flowcache/FlowReconcileManager.java
index 365a222f5dafd4d5ff4f52177bd1bb458316cc3e..f73fe55663f2216e628834a36eb24d6e81e52ffa 100644
--- a/src/main/java/net/floodlightcontroller/flowcache/FlowReconcileManager.java
+++ b/src/main/java/net/floodlightcontroller/flowcache/FlowReconcileManager.java
@@ -36,6 +36,11 @@ import net.floodlightcontroller.counter.CounterStore;
 import net.floodlightcontroller.counter.ICounter;
 import net.floodlightcontroller.counter.ICounterStoreService;
 import net.floodlightcontroller.counter.SimpleCounter;
+import net.floodlightcontroller.debugcounter.IDebugCounter;
+import net.floodlightcontroller.debugcounter.IDebugCounterService;
+import net.floodlightcontroller.debugcounter.NullDebugCounter;
+import net.floodlightcontroller.debugcounter.IDebugCounterService.CounterException;
+import net.floodlightcontroller.debugcounter.IDebugCounterService.CounterType;
 import net.floodlightcontroller.flowcache.IFlowReconcileListener;
 import net.floodlightcontroller.flowcache.OFMatchReconcile;
 import net.floodlightcontroller.flowcache.PriorityPendingQueue.EventPriority;
@@ -55,6 +60,7 @@ public class FlowReconcileManager
     /** Reference to dependent modules */
     protected IThreadPoolService threadPool;
     protected ICounterStoreService counterStore;
+    protected IDebugCounterService debugCounters;
 
     /**
      * The list of flow reconcile listeners that have registered to get
@@ -85,6 +91,11 @@ public class FlowReconcileManager
 
     /** Config to enable or disable flowReconcile */
     protected static final String EnableConfigKey = "enable";
+
+    public static final String PACKAGE = FlowReconcileManager.class.getPackage().getName();
+    private IDebugCounter ctrFlowReconcileRequest;
+    private IDebugCounter ctrReconciledFlows;
+
     protected boolean flowReconcileEnabled;
 
     public AtomicInteger flowReconcileThreadRunCount;
@@ -130,6 +141,7 @@ public class FlowReconcileManager
         OFMatchReconcile myOfmRc = new OFMatchReconcile(ofmRcIn);
 
         flowQueue.offer(myOfmRc, priority);
+        ctrFlowReconcileRequest.updateCounterWithFlush();
 
         Date currTime = new Date();
         long delay = 0;
@@ -187,25 +199,43 @@ public class FlowReconcileManager
             throws FloodlightModuleException {
         threadPool = context.getServiceImpl(IThreadPoolService.class);
         counterStore = context.getServiceImpl(ICounterStoreService.class);
-
+        debugCounters = context.getServiceImpl(IDebugCounterService.class);
         flowQueue = new PriorityPendingQueue<OFMatchReconcile>();
         flowReconcileListeners =
                 new ListenerDispatcher<OFType, IFlowReconcileListener>();
 
         Map<String, String> configParam = context.getConfigParams(this);
         String enableValue = configParam.get(EnableConfigKey);
+        registerFlowReconcileManagerDebugCounters();
         // Set flowReconcile default to true
         flowReconcileEnabled = true;
         if (enableValue != null &&
             enableValue.equalsIgnoreCase("false")) {
             flowReconcileEnabled = false;
         }
-
         flowReconcileThreadRunCount = new AtomicInteger(0);
         lastReconcileTime = new Date(0);
         logger.debug("FlowReconcile is {}", flowReconcileEnabled);
     }
 
+    private void registerFlowReconcileManagerDebugCounters() throws FloodlightModuleException {
+        if (debugCounters == null) {
+            logger.error("Debug Counter Service not found.");
+            debugCounters = new NullDebugCounter();
+        }
+        try {
+            ctrFlowReconcileRequest = debugCounters.registerCounter(PACKAGE, "flow-reconcile-request",
+                "All flow reconcile request received by this module",
+                CounterType.ALWAYS_COUNT);
+            ctrReconciledFlows = debugCounters.registerCounter(PACKAGE, "reconciled-flows",
+                "All flows reconciled successfully",
+                CounterType.ALWAYS_COUNT);
+        } catch (CounterException e) {
+            throw new FloodlightModuleException(e.getMessage());
+        }
+    }
+
+
     @Override
     public void startUp(FloodlightModuleContext context) {
         // thread to do flow reconcile
@@ -264,6 +294,7 @@ public class FlowReconcileManager
             reconcileCapacity--;
             if (ofmRc != null) {
                 ofmRcList.add(ofmRc);
+                ctrReconciledFlows.updateCounterWithFlush();
                 if (logger.isTraceEnabled()) {
                     logger.trace("Add flow {} to be the reconcileList", ofmRc.cookie);
                 }