summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authortongzongzhen <[email protected]>2024-09-14 15:24:20 +0800
committertongzongzhen <[email protected]>2024-09-14 15:24:20 +0800
commit314626bba866e556711bbc2f914d01d6feb373b9 (patch)
tree296b57d264b55384df3c7f353313b2a8fb30c486
parentb5c25fc2042bed408b0e11de9558f20a3fc3fb8e (diff)
When nf reset private zoom, keep the sending timestatistics_nf_delay
-rw-r--r--app/src/mrb.c6
-rw-r--r--service/include/sc_devmgr.h2
-rw-r--r--service/src/node_shmdev.c13
3 files changed, 12 insertions, 9 deletions
diff --git a/app/src/mrb.c b/app/src/mrb.c
index ea852c3..9afa59d 100644
--- a/app/src/mrb.c
+++ b/app/src/mrb.c
@@ -1,11 +1,11 @@
#include <assert.h>
+#include <dp_trace.h>
#include <marsio.h>
#include <metadata_define.h>
#include <mrapp.h>
#include <mrb_define.h>
#include <mrdp_trace.h>
#include <protect.h>
-#include <dp_trace.h>
#include <rte_common.h>
#include <rte_malloc.h>
@@ -30,12 +30,14 @@ void marsio_buff_ctrlzone_reset(marsio_buff_t * mr_buff)
{
struct mrb_metadata * mrb_meta = mrbuf_cz_data(mr_buff, MR_NODE_CTRLZONE_ID);
struct dp_trace_buffer * dp_trace_buffer_ptr = mrb_meta->dp_trace_buffer;
- int8_t measurement_type = mrb_meta->measurement_type;
+ uint8_t measurement_type = mrb_meta->measurement_type;
+ struct timespec send_to_nf = mrb_meta->send_to_nf;
/* reset the ctrlzone but not dp_trace_buffer */
memset(mrbuf_cz_data(mr_buff, MR_NODE_CTRLZONE_ID), 0, sizeof(struct mrb_metadata));
mrb_meta->dp_trace_buffer = dp_trace_buffer_ptr;
mrb_meta->measurement_type = measurement_type;
+ mrb_meta->send_to_nf = send_to_nf;
}
void * mr_buffer_ctrlzone(struct rte_mbuf * mr_buff, uint8_t id)
diff --git a/service/include/sc_devmgr.h b/service/include/sc_devmgr.h
index 4e204af..7b3fd8f 100644
--- a/service/include/sc_devmgr.h
+++ b/service/include/sc_devmgr.h
@@ -292,7 +292,7 @@ void dpdk_dev_stat_get(struct dpdk_dev * dev, struct dpdk_dev_stats * dpdk_dev_s
void dpdk_dev_stat_last_save(struct dpdk_dev * dev, struct dpdk_dev_stats * dpdk_dev_stat_last);
void dpdk_dev_stat_last_get(struct dpdk_dev * dev, struct dpdk_dev_stats * dpdk_dev_stat_last);
-static inline uint16_t dev_status_get(struct mr_dev_desc * dev_desc)
+static inline uint16_t dev_status_get(const struct mr_dev_desc * dev_desc)
{
uint16_t link_status;
diff --git a/service/src/node_shmdev.c b/service/src/node_shmdev.c
index 52a4e5f..ed9b65c 100644
--- a/service/src/node_shmdev.c
+++ b/service/src/node_shmdev.c
@@ -121,8 +121,8 @@ uint16_t shmdev_rx_node_process(struct rte_graph * graph, struct rte_node * node
/* record delay */
if (likely(mrb_meta->packet_create_from_nf == 0))
{
- clock_gettime(CLOCK_MONOTONIC, &cur_time);
struct mrb_metadata * mrb_meta = rte_mbuf_to_priv(mbuf0);
+ clock_gettime(CLOCK_MONOTONIC, &cur_time);
uint64_t cur_time_ns = cur_time.tv_sec * NSEC_PER_SEC + cur_time.tv_nsec;
uint64_t send_to_nf_time_ns = mrb_meta->send_to_nf.tv_sec * NSEC_PER_SEC + mrb_meta->send_to_nf.tv_nsec;
uint64_t delay_ns = cur_time_ns - send_to_nf_time_ns;
@@ -292,11 +292,11 @@ cJSON * shmdev_rx_node_monit_loop(struct sc_main * sc)
cJSON * shmdev_delay_monit_loop(struct sc_main * sc)
{
- unsigned int nr_graphs = sc->nr_io_thread;
+ const unsigned int nr_graphs = sc->nr_io_thread;
cJSON * json_root = cJSON_CreateObject();
unsigned int dev_desc_iterator = 0;
- struct mr_dev_desc * dev_desc = NULL;
+ const struct mr_dev_desc * dev_desc = NULL;
while ((dev_desc = mr_dev_desc_iterate(sc_main_get()->devmgr_main, &dev_desc_iterator)) != NULL)
{
@@ -310,14 +310,15 @@ cJSON * shmdev_delay_monit_loop(struct sc_main * sc)
continue;
}
- uint64_t dev_delay = 0;
+ uint64_t dev_delay[nr_graphs];
for (uint32_t graph_id = 0; graph_id < nr_graphs; graph_id++)
{
struct shmdev_delay * cur_shmdev_delay_stat = &shmdev_delay_stat[graph_id][dev_desc->port_id];
- dev_delay += cur_shmdev_delay_stat->delay_ns;
+ dev_delay[graph_id] = cur_shmdev_delay_stat->delay_ns;
}
- cJSON_AddItemToObject(json_root, dev_desc->symbol, cJSON_CreateNumber(dev_delay));
+ cJSON * json_to_dev_delay = create_uint64_array(dev_delay, nr_graphs);
+ cJSON_AddItemToObject(json_root, dev_desc->symbol, json_to_dev_delay);
}
return json_root;
}