perf: 优化metrics的性能
* 使用自定义的HASH_KEYCMP代替memcmp, 优先比较sf_profile_id
* 减少sf_metrics_inc函数入参的个数
This commit is contained in:
@@ -623,7 +623,12 @@ static inline void action_mirr_forward(struct session_ctx *session_ctx, marsio_b
|
||||
int nsend = send_packet_to_sf(session_ctx, new_buff, meta, sf, thread_ctx);
|
||||
throughput_metrics_inc(&(thread_metrics->data_pkt.mirr_tx), 1, raw_len);
|
||||
throughput_metrics_inc(&sf->tx, 1, nsend);
|
||||
sf_metrics_inc(thread_ctx->sf_metrics, sf->rule_vsys_id, sf->rule_id, sf->sff_profile_id, sf->sf_profile_id, 0, 0, 1, nsend);
|
||||
struct sf_metrics_key key = {0};
|
||||
key.rule_id = sf->rule_id;
|
||||
key.sff_profile_id = sf->sff_profile_id;
|
||||
key.sf_profile_id = sf->sf_profile_id;
|
||||
key.vsys_id = sf->rule_vsys_id;
|
||||
sf_metrics_inc(thread_ctx->sf_metrics, &key, 0, 0, 1, nsend);
|
||||
}
|
||||
|
||||
static inline void action_stee_bypass(marsio_buff_t *rx_buff, struct metadata *meta, struct selected_sf *sf, struct thread_ctx *thread_ctx)
|
||||
@@ -653,7 +658,12 @@ static inline void action_stee_forward(struct session_ctx *session_ctx, marsio_b
|
||||
int nsend = send_packet_to_sf(session_ctx, rx_buff, meta, sf, thread_ctx);
|
||||
throughput_metrics_inc(&(thread_metrics->data_pkt.stee_tx), 1, raw_len);
|
||||
throughput_metrics_inc(&sf->tx, 1, nsend);
|
||||
sf_metrics_inc(thread_ctx->sf_metrics, sf->rule_vsys_id, sf->rule_id, sf->sff_profile_id, sf->sf_profile_id, 0, 0, 1, nsend);
|
||||
struct sf_metrics_key key = {0};
|
||||
key.rule_id = sf->rule_id;
|
||||
key.sff_profile_id = sf->sff_profile_id;
|
||||
key.sf_profile_id = sf->sf_profile_id;
|
||||
key.vsys_id = sf->rule_vsys_id;
|
||||
sf_metrics_inc(thread_ctx->sf_metrics, &key, 0, 0, 1, nsend);
|
||||
}
|
||||
|
||||
static void action_sf_chaining(struct thread_ctx *thread_ctx, struct session_ctx *session_ctx, struct selected_chaining *chaining, marsio_buff_t *rx_buff, struct metadata *meta, int next_sf_index)
|
||||
@@ -1222,7 +1232,12 @@ static void handle_inject_vxlan_packet(marsio_buff_t *rx_buff, struct thread_ctx
|
||||
struct selected_sf *sf = &(chaining->chaining[sf_index]);
|
||||
throughput_metrics_inc(&sf->rx, 1, raw_len);
|
||||
throughput_metrics_inc(&(thread_metrics->data_pkt.stee_rx), 1, meta.raw_len);
|
||||
sf_metrics_inc(thread_ctx->sf_metrics, sf->rule_vsys_id, sf->rule_id, sf->sff_profile_id, sf->sf_profile_id, 1, raw_len, 0, 0);
|
||||
struct sf_metrics_key key = {0};
|
||||
key.rule_id = sf->rule_id;
|
||||
key.sff_profile_id = sf->sff_profile_id;
|
||||
key.sf_profile_id = sf->sf_profile_id;
|
||||
key.vsys_id = sf->rule_vsys_id;
|
||||
sf_metrics_inc(thread_ctx->sf_metrics, &key, 1, raw_len, 0, 0);
|
||||
}
|
||||
|
||||
marsio_buff_adj(rx_buff, raw_len - meta.raw_len);
|
||||
|
||||
Reference in New Issue
Block a user