perfmon: fixes for cache hierarchy 79/30879/9
authorRay Kinsella <mdr@ashroe.eu>
Thu, 21 Jan 2021 18:39:26 +0000 (18:39 +0000)
committerDamjan Marion <dmarion@me.com>
Tue, 16 Mar 2021 21:37:20 +0000 (21:37 +0000)
Account for occasional instances with the misses rates between caches
are inconsistent.

Type: fix

Signed-off-by: Ray Kinsella <mdr@ashroe.eu>
Change-Id: Idfb8bb7543401405cfe04291ad201c28be030cc9

src/plugins/perfmon/intel/bundle/cache_hit_miss.c

index b3d6eeb..0fb24c5 100644 (file)
@@ -27,24 +27,28 @@ format_intel_core_cache_hit_miss (u8 *s, va_list *args)
   switch (row)
     {
     case 0:
-      s = format (s, "%.2f", (f64) ns->value[0] / ns->n_packets);
+      s = format (s, "%0.2f", (f64) ns->value[0] / ns->n_packets);
       break;
     case 1:
-      s = format (s, "%.2f", (f64) ns->value[1] / ns->n_packets);
+      s = format (s, "%0.2f", (f64) ns->value[1] / ns->n_packets);
       break;
     case 2:
-      s = format (s, "%.2f",
-                 (f64) (ns->value[1] - ns->value[2]) / ns->n_packets);
+      s =
+       format (s, "%0.2f",
+               (f64) (ns->value[1] - clib_min (ns->value[1], ns->value[2])) /
+                 ns->n_packets);
       break;
     case 3:
-      s = format (s, "%.2f", (f64) ns->value[2] / ns->n_packets);
+      s = format (s, "%0.2f", (f64) ns->value[2] / ns->n_packets);
       break;
     case 4:
-      s = format (s, "%.2f",
-                 (f64) (ns->value[2] - ns->value[3]) / ns->n_packets);
+      s =
+       format (s, "%0.2f",
+               (f64) (ns->value[2] - clib_min (ns->value[2], ns->value[3])) /
+                 ns->n_packets);
       break;
     case 5:
-      s = format (s, "%.2f", (f64) ns->value[3] / ns->n_packets);
+      s = format (s, "%0.2f", (f64) ns->value[3] / ns->n_packets);
       break;
     }