From bf3f0406a71f066bee2eff87976286878fce8a05 Mon Sep 17 00:00:00 2001
From: Utz-Uwe Haus <uhaus@hpe.com>
Date: Thu, 15 Jul 2021 14:15:38 +0000
Subject: [PATCH] Add statistics counters for VSM messages

currently we don't actually ever send any, but ...
---
 include/maestro/i_statistics.h  | 8 ++++----
 maestro/pool_client.c           | 2 ++
 maestro/pool_manager.c          | 1 +
 maestro/pool_manager_protocol.c | 6 ++++++
 maestro/statistics.c            | 8 ++++----
 5 files changed, 17 insertions(+), 8 deletions(-)

diff --git a/include/maestro/i_statistics.h b/include/maestro/i_statistics.h
index 8146c1a5..ade827fb 100644
--- a/include/maestro/i_statistics.h
+++ b/include/maestro/i_statistics.h
@@ -186,10 +186,10 @@ mstro_stats_report_csv(FILE *dst);
 
 
 /* OFI */
-#define MSTRO_STATS_L_PC_VSM_IN                   "pc-num-vsm-in"
-#define MSTRO_STATS_L_PC_VSM_OUT                  "pc-num-vsm-out"
-#define MSTRO_STATS_L_PM_VSM_IN                   "pm-num-vsm-in"
-#define MSTRO_STATS_L_PM_VSM_OUT                  "pm-num-vsm-out"
+#define MSTRO_STATS_L_PC_NUM_VSM_IN               "pc-num-vsm-in"
+#define MSTRO_STATS_L_PC_NUM_VSM_OUT              "pc-num-vsm-out"
+#define MSTRO_STATS_L_PM_NUM_VSM_IN               "pm-num-vsm-in"
+#define MSTRO_STATS_L_PM_NUM_VSM_OUT              "pm-num-vsm-out"
 
   
 /**@}*/
diff --git a/maestro/pool_client.c b/maestro/pool_client.c
index b4ea5deb..a90c09df 100644
--- a/maestro/pool_client.c
+++ b/maestro/pool_client.c
@@ -8,6 +8,7 @@
 #include "../transport/transport.h"
 #include "transport/transport_rdma.h"
 #include "maestro/i_ofi.h"
+#include "maestro/i_statistics.h"
 #include "i_subscription_registry.h"
 
 #include <unistd.h>
@@ -760,6 +761,7 @@ mstro_pc_handle_msg(const struct mstro_msg_envelope *envelope,
   }
   
   if(msg->opts && msg->opts->vsm_data!=NULL) {
+    mstro_stats_add_counter(MSTRO_STATS_CAT_OFI, MSTRO_STATS_L_PC_NUM_VSM_IN, 1);
     ERR("VSM, Unimplemented\n");
     status=MSTRO_UNIMPL;
     goto BAILOUT;
diff --git a/maestro/pool_manager.c b/maestro/pool_manager.c
index fc501094..28b82cac 100644
--- a/maestro/pool_manager.c
+++ b/maestro/pool_manager.c
@@ -2519,6 +2519,7 @@ mstro_pm_handle_msg(const struct mstro_msg_envelope *envelope,
   }
   
   if(msg->opts && msg->opts->vsm_data!=NULL) {
+    mstro_stats_add_counter(MSTRO_STATS_CAT_OFI, MSTRO_STATS_L_PM_NUM_VSM_IN, 1);
     ERR("VSM, Unimplemented\n");
     mstro_pm__msg_free(msg);
     status=MSTRO_UNIMPL;
diff --git a/maestro/pool_manager_protocol.c b/maestro/pool_manager_protocol.c
index 2f423ef2..0ffcfdaa 100644
--- a/maestro/pool_manager_protocol.c
+++ b/maestro/pool_manager_protocol.c
@@ -36,6 +36,7 @@
 #include "maestro/i_globals.h"
 
 #include "maestro/i_ofi.h"
+#include "maestro/i_statistics.h"
 
 #include <assert.h>
 #include <stdint.h>
@@ -126,6 +127,11 @@ mstro_pmp_send_nowait(mstro_app_id target, const Mstro__Pool__MstroMsg *msg)
     INFO("Message %s packed size %zu requires fragmentation\n",
          msg->base.descriptor->name, len);
     ERR("VSMs unimplemented\n");
+    if(target==MSTRO_APP_ID_MANAGER && !g_mstro_pm_attached) {
+      mstro_stats_add_counter(MSTRO_STATS_CAT_OFI, MSTRO_STATS_L_PC_NUM_VSM_OUT, 1);
+    } else {
+      mstro_stats_add_counter(MSTRO_STATS_CAT_OFI, MSTRO_STATS_L_PM_NUM_VSM_OUT, 1);
+    }
     return MSTRO_UNIMPL;
   }
 
diff --git a/maestro/statistics.c b/maestro/statistics.c
index 8e7b3a14..8b3a364d 100644
--- a/maestro/statistics.c
+++ b/maestro/statistics.c
@@ -958,16 +958,16 @@ static struct {
     MSTRO_STATS_COLL_COUNTER },    
   /* OFI */
   { MSTRO_STATS_CAT_OFI,
-    MSTRO_STATS_L_PC_VSM_IN,
+    MSTRO_STATS_L_PC_NUM_VSM_IN,
     MSTRO_STATS_COLL_COUNTER },
   { MSTRO_STATS_CAT_OFI,
-    MSTRO_STATS_L_PC_VSM_OUT,
+    MSTRO_STATS_L_PC_NUM_VSM_OUT,
     MSTRO_STATS_COLL_COUNTER },
   { MSTRO_STATS_CAT_OFI,
-    MSTRO_STATS_L_PM_VSM_IN,
+    MSTRO_STATS_L_PM_NUM_VSM_IN,
     MSTRO_STATS_COLL_COUNTER },
   { MSTRO_STATS_CAT_OFI,
-    MSTRO_STATS_L_PM_VSM_OUT,
+    MSTRO_STATS_L_PM_NUM_VSM_OUT,
     MSTRO_STATS_COLL_COUNTER },
 
 };
-- 
GitLab