perf: Optimize the output of global metrics to reduce atomic operations

This commit is contained in:
luwenpeng
2023-10-12 16:31:53 +08:00
parent 4f870de963
commit 8d1a9b3be5
10 changed files with 265 additions and 160 deletions

View File

@@ -82,6 +82,17 @@ struct sf_session_metrics
uint64_t log; // 累计值
};
struct thread_metrics
{
struct device_metrics device;
struct raw_pkt_metrics raw_pkt;
struct ctrl_pkt_metrics ctrl_pkt;
struct keepalived_pkt_metrics kee_pkt;
struct sf_status_metrics sf_status;
struct sf_session_metrics sf_session;
};
struct global_metrics
{
struct device_metrics device;
@@ -95,11 +106,16 @@ struct global_metrics
struct metrics_config config;
screen_stat_handle_t fs_handle;
int fs_id[128];
int thread_num;
int *thread_metrics_flag;
struct thread_metrics *thread_metrics_cache;
};
struct global_metrics *global_metrics_create(const char *profile);
void global_metrics_destory(struct global_metrics *metrics);
void global_metrics_dump(struct global_metrics *metrics);
struct global_metrics *global_metrics_create(const char *profile, int thread_num);
void global_metrics_destory(struct global_metrics *global_metrics);
void global_metrics_update(struct global_metrics *global_metrics, struct thread_metrics *thread_metrics, int thread_id);
void global_metrics_dump(struct global_metrics *global_metrics);
#ifdef __cpluscplus
}