diff --git a/src/vlib/node_cli.c b/src/vlib/node_cli.c
index 2523b41..062854a 100644
--- a/src/vlib/node_cli.c
+++ b/src/vlib/node_cli.c
@@ -148,19 +148,25 @@
   f64 maxc, maxcn;
   u32 maxn;
   u32 indent;
+  u64 pmc_ticks;
+  f64 pmc_ticks_per_packet;
 
   if (!n)
     {
       if (max)
-	return format (s,
-		       "%=30s%=17s%=16s%=16s%=16s%=16s",
-		       "Name", "Max Node Clocks", "Vectors at Max",
-		       "Max Clocks", "Avg Clocks", "Avg Vectors/Call");
+	s = format (s,
+		    "%=30s%=17s%=16s%=16s%=16s%=16s",
+		    "Name", "Max Node Clocks", "Vectors at Max",
+		    "Max Clocks", "Avg Clocks", "Avg Vectors/Call");
       else
-	return format (s,
-		       "%=30s%=12s%=16s%=16s%=16s%=16s%=16s",
-		       "Name", "State", "Calls", "Vectors", "Suspends",
-		       "Clocks", "Vectors/Call");
+	s = format (s,
+		    "%=30s%=12s%=16s%=16s%=16s%=16s%=16s",
+		    "Name", "State", "Calls", "Vectors", "Suspends",
+		    "Clocks", "Vectors/Call");
+      if (vm->perf_counter_id)
+	s = format (s, "%=16s", "Perf Ticks");
+
+      return s;
     }
 
   indent = format_get_indent (s);
@@ -176,6 +182,13 @@
   else
     maxcn = 0.0;
 
+  pmc_ticks = n->stats_total.perf_counter_ticks -
+    n->stats_last_clear.perf_counter_ticks;
+  if (p > 0)
+    pmc_ticks_per_packet = (f64) pmc_ticks / (f64) p;
+  else
+    pmc_ticks_per_packet = 0.0;
+
   /* Clocks per packet, per call or per suspend. */
   x = 0;
   if (p > 0)
@@ -208,6 +221,9 @@
     s = format (s, "%-30v%=12U%16Ld%16Ld%16Ld%16.2e%16.2f", ns,
 		format_vlib_node_state, vm, n, c, p, d, x, v);
 
+  if (pmc_ticks_per_packet > 0.0)
+    s = format (s, "%16.2e", pmc_ticks_per_packet);
+
   if (ns != n->name)
     vec_free (ns);
 
