diff options
| author | 童宗振 <[email protected]> | 2024-04-27 01:39:14 +0000 |
|---|---|---|
| committer | 童宗振 <[email protected]> | 2024-04-27 01:39:14 +0000 |
| commit | 42c89e380c3da4b0d40d0ffc0a2e39e45ffe8356 (patch) | |
| tree | 458a640a953d1293643fda81a303e4098ebdd52e /service/include | |
| parent | 7803faff8547c007e93e211fe787e0a1fe01ada0 (diff) | |
refactor data path trace for telemetryv4.8.4-20240427
Diffstat (limited to 'service/include')
| -rw-r--r-- | service/include/sc_app.h | 1 | ||||
| -rw-r--r-- | service/include/sc_trace.h | 93 |
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); } |
