summaryrefslogtreecommitdiff
path: root/service/include
diff options
context:
space:
mode:
author童宗振 <[email protected]>2024-04-27 01:39:14 +0000
committer童宗振 <[email protected]>2024-04-27 01:39:14 +0000
commit42c89e380c3da4b0d40d0ffc0a2e39e45ffe8356 (patch)
tree458a640a953d1293643fda81a303e4098ebdd52e /service/include
parent7803faff8547c007e93e211fe787e0a1fe01ada0 (diff)
refactor data path trace for telemetryv4.8.4-20240427
Diffstat (limited to 'service/include')
-rw-r--r--service/include/sc_app.h1
-rw-r--r--service/include/sc_trace.h93
2 files changed, 66 insertions, 28 deletions
diff --git a/service/include/sc_app.h b/service/include/sc_app.h
index c03fa6b..b5cb9de 100644
--- a/service/include/sc_app.h
+++ b/service/include/sc_app.h
@@ -20,6 +20,7 @@ struct app
char mntfile[MR_STRING_MAX];
/* 监控app是否存活*/
int fd;
+ uint8_t job_id_used;
/* 虚设备管理模块在APP中的保存的上下文 */
void * pme_vdev_main;
};
diff --git a/service/include/sc_trace.h b/service/include/sc_trace.h
index 084eae2..c3d3f2d 100644
--- a/service/include/sc_trace.h
+++ b/service/include/sc_trace.h
@@ -6,6 +6,7 @@
#include "dp_trace.h"
#include "sc_app.h"
#include "sc_common.h"
+#include <adapter_define.h>
#include <mrb_define.h>
#define MR_TRACE_APPSYM "mrzcpd"
@@ -18,8 +19,6 @@ void hook_rte_pktmbuf_free_bulk(struct rte_mbuf ** mbufs, unsigned int count);
/* Generate and store the trace information for pkt parser */
static inline void gen_store_trace_info_pkt_parser(struct rte_node * node, struct rte_mbuf * mbuf)
{
- struct dp_trace_record_meta meta = {.appsym=MR_TRACE_APPSYM, .module=node->name};
-
struct mrb_metadata * mrb_meta = mrbuf_cz_data(mbuf, MR_NODE_CTRLZONE_ID);
struct pkt_parser_result * pkt_parser_result = &mrb_meta->pkt_parser_result;
@@ -39,14 +38,14 @@ static inline void gen_store_trace_info_pkt_parser(struct rte_node * node, struc
len += snprintf(str_record + len, sizeof(str_record) - len, "]");
/* Emit the trace record */
+ struct dp_trace_record_meta meta = {
+ .measurement_type = DP_TRACE_MEASUREMENT_TYPE_TRACE, .appsym = MR_TRACE_APPSYM, .module = node->name};
dp_trace_record_emit_str(sc_main_get()->trace, mbuf, rte_lcore_id(), &meta, str_record);
}
/* Generate and store the trace information for rte mbuf */
static inline void gen_store_trace_info_rte_mbuf(struct rte_node * node, struct rte_mbuf * mbuf)
{
- struct dp_trace_record_meta meta = {.appsym=MR_TRACE_APPSYM, .module=node->name};
-
/* Populate the rte mbuf information */
char str_record[MR_STRING_MAX];
@@ -59,14 +58,14 @@ static inline void gen_store_trace_info_rte_mbuf(struct rte_node * node, struct
#endif
/* Emit the trace record */
+ struct dp_trace_record_meta meta = {
+ .measurement_type = DP_TRACE_MEASUREMENT_TYPE_TRACE, .appsym = MR_TRACE_APPSYM, .module = node->name};
dp_trace_record_emit_str(sc_main_get()->trace, mbuf, rte_lcore_id(), &meta, str_record);
}
/* Generate and store the trace information for Sid list */
static inline void gen_store_trace_info_sid_list(struct rte_node * node, struct rte_mbuf * mbuf)
{
- struct dp_trace_record_meta meta = {.appsym=MR_TRACE_APPSYM, .module=node->name};
-
/* Populate the Sid list */
struct mrb_metadata * mrb_meta = mrbuf_cz_data(mbuf, MR_NODE_CTRLZONE_ID);
uint16_t sids[RTE_DIM(mrb_meta->sid_list.sids)];
@@ -85,6 +84,8 @@ static inline void gen_store_trace_info_sid_list(struct rte_node * node, struct
len += snprintf(str_record + len, sizeof(str_record) - len, "]]");
/* Emit the trace record */
+ struct dp_trace_record_meta meta = {
+ .measurement_type = DP_TRACE_MEASUREMENT_TYPE_TRACE, .appsym = MR_TRACE_APPSYM, .module = node->name};
dp_trace_record_emit_str(sc_main_get()->trace, mbuf, rte_lcore_id(), &meta, str_record);
}
@@ -109,25 +110,14 @@ static inline int embed_sid_info(struct rte_mbuf * mbuf, char * str_record, int
return len;
}
-
/* Generate and store the trace information for rx */
static inline void gen_store_trace_info_rx(struct rte_node * node, struct rte_mbuf * mbuf,
struct mr_dev_desc * dev_desc, uint16_t queue_id)
{
- struct dp_trace_record_meta meta = {.appsym=MR_TRACE_APPSYM, .module=node->name};
-
/* Populate the next node information */
char str_record[MR_STRING_MAX];
- int len = snprintf(str_record, sizeof(str_record), "next node:%s", node->nodes[0]->name);
-
- /* Populate the core id information */
- len += snprintf(str_record + len, sizeof(str_record) - len, ", core:%u", rte_lcore_id());
-
- /* Populate the queue information */
- len += snprintf(str_record + len, sizeof(str_record) - len, ", qid:%u", queue_id);
-
- /* Populate the hash information */
- len += snprintf(str_record + len, sizeof(str_record) - len, ", hash:%u", mbuf->hash.usr);
+ int len = snprintf(str_record, sizeof(str_record), "next node:%s, core:%u, qid:%u, hash:%u", node->nodes[0]->name,
+ rte_lcore_id(), queue_id, mbuf->hash.usr);
/* Populate the nf create infomation */
struct mrb_metadata * mrb_meta = mrbuf_cz_data(mbuf, MR_NODE_CTRLZONE_ID);
@@ -137,6 +127,22 @@ static inline void gen_store_trace_info_rx(struct rte_node * node, struct rte_mb
}
/* Emit the trace record */
+ struct dp_trace_record_meta meta = {
+ .measurement_type = DP_TRACE_MEASUREMENT_TYPE_TRACE, .appsym = MR_TRACE_APPSYM, .module = node->name};
+ dp_trace_record_emit_str(sc_main_get()->trace, mbuf, rte_lcore_id(), &meta, str_record);
+}
+
+/* Generate and store the telemetry information for rx */
+static inline void gen_store_telemetry_info_rx(struct rte_node * node, struct rte_mbuf * mbuf,
+ struct mr_dev_desc * dev_desc, uint16_t queue_id)
+{
+ /* Populate the next node information */
+ char str_record[MR_STRING_MAX];
+ snprintf(str_record, sizeof(str_record), "interface(rx) = %s, qid = %u", dev_desc->symbol, queue_id);
+
+ /* Emit the trace record */
+ struct dp_trace_record_meta meta = {.measurement_type = DP_TRACE_MEASUREMENT_TYPE_TELEMETRY,
+ .appsym = MR_TRACE_APPSYM};
dp_trace_record_emit_str(sc_main_get()->trace, mbuf, rte_lcore_id(), &meta, str_record);
}
@@ -144,21 +150,52 @@ static inline void gen_store_trace_info_rx(struct rte_node * node, struct rte_mb
static inline void gen_store_trace_info_tx(struct rte_node * node, struct rte_mbuf * mbuf,
struct mr_dev_desc * dev_desc, uint16_t queue_id)
{
- struct dp_trace_record_meta meta = {.appsym=MR_TRACE_APPSYM, .module=node->name};
-
/* Populate the port information */
char str_record[MR_STRING_MAX];
- int len = snprintf(str_record, sizeof(str_record), "tx:%u,%s", dev_desc->port_id, dev_desc->symbol);
+ snprintf(str_record, sizeof(str_record), "tx:%u,%s, core:%u, qid:%u, hash:%u", dev_desc->port_id, dev_desc->symbol,
+ rte_lcore_id(), queue_id, mbuf->hash.usr);
+
+ /* Emit the trace record */
+ struct dp_trace_record_meta meta = {
+ .measurement_type = DP_TRACE_MEASUREMENT_TYPE_TRACE, .appsym = MR_TRACE_APPSYM, .module = node->name};
+ dp_trace_record_emit_str(sc_main_get()->trace, mbuf, rte_lcore_id(), &meta, str_record);
+}
- /* Populate the core id information */
- len += snprintf(str_record + len, sizeof(str_record) - len, ", core:%u", rte_lcore_id());
+/* Generate and store the telemetry information for tx */
+static inline void gen_store_telemetry_info_tx(struct rte_node * node, struct rte_mbuf * mbuf,
+ struct mr_dev_desc * dev_desc, uint16_t queue_id)
+{
+ /* Populate the port information */
+ char str_record[MR_STRING_MAX];
+ snprintf(str_record, sizeof(str_record), "interface(tx) = %s, qid = %u", dev_desc->symbol, queue_id);
- /* Populate the queue information */
- len += snprintf(str_record + len, sizeof(str_record) - len, ", qid:%u", queue_id);
+ /* Emit the trace record */
+ struct dp_trace_record_meta meta = {.measurement_type = DP_TRACE_MEASUREMENT_TYPE_TELEMETRY,
+ .appsym = MR_TRACE_APPSYM};
+ dp_trace_record_emit_str(sc_main_get()->trace, mbuf, rte_lcore_id(), &meta, str_record);
+}
- /* Populate the hash information */
- len += snprintf(str_record + len, sizeof(str_record) - len, ", hash:%u", mbuf->hash.usr);
+/* Generate and store the telemetry information */
+static __rte_always_inline void gen_store_telemetry_info_adapter(struct rte_mbuf * mbuf)
+{
+ char str_record[MR_STRING_MAX];
+ struct mrb_metadata * mrb_meta = mrbuf_cz_data(mbuf, MR_NODE_CTRLZONE_ID);
+ switch (mrb_meta->adapter_type)
+ {
+ case ADAPTER_TYPE_VWIRE:
+ snprintf(str_record, sizeof(str_record), "vwire_id = %u, traffic link id = %u", mrb_meta->adapter_id,
+ mrb_meta->traffic_link_id);
+ break;
+ case ADAPTER_TYPE_EF:
+ snprintf(str_record, sizeof(str_record), "ef_id = %u, traffic link id = %u", mrb_meta->adapter_id,
+ mrb_meta->traffic_link_id);
+ break;
+ default:
+ break;
+ }
/* Emit the trace record */
+ struct dp_trace_record_meta meta = {.measurement_type = DP_TRACE_MEASUREMENT_TYPE_TELEMETRY,
+ .appsym = MR_TRACE_APPSYM};
dp_trace_record_emit_str(sc_main_get()->trace, mbuf, rte_lcore_id(), &meta, str_record);
}