summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorliuxueli <[email protected]>2023-09-20 22:04:33 +0800
committerliuxueli <[email protected]>2023-09-25 13:53:08 +0800
commit3d5dd70e7fa01043ab048f23345e48b1a2abdf8b (patch)
tree318f31956a03446727a0b162dee5a3f4aedab1cb
parent86f8864e4558bcb258aa5454ce8b3b2f6ef6a384 (diff)
输出每个线程的application metric数量统计
-rw-r--r--src/tsg_stat.cpp44
-rw-r--r--src/tsg_stat.h1
-rw-r--r--src/tsg_statistic.cpp3
3 files changed, 44 insertions, 4 deletions
diff --git a/src/tsg_stat.cpp b/src/tsg_stat.cpp
index cdbe848..1caa629 100644
--- a/src/tsg_stat.cpp
+++ b/src/tsg_stat.cpp
@@ -2,6 +2,8 @@
#include <string.h>
#include <stdlib.h>
+#include <stream.h>
+
#include "tsg_stat.h"
#include <MESA/fieldstat.h>
#include <MESA/MESA_prof_load.h>
@@ -13,6 +15,12 @@ enum OP_EXDATA
OP_EXDATA_MAX
};
+enum APP_METRICS
+{
+ APP_METRICS_COUNT=0,
+ APP_METRICS_MAX
+};
+
struct fs3_rule_stat
{
int table_id;
@@ -59,6 +67,12 @@ struct fs3_sync_application
int column_id[SYNC_APP_MAX];
};
+struct fs3_application_metrics
+{
+ int table_id;
+ int *column_id;
+};
+
struct fs3_sync_exdata
{
int table_id;
@@ -80,7 +94,8 @@ struct runtime_stat_para
struct fs3_rule_stat rule;
struct fs3_sync_exdata exdata;
struct fs3_sendlog_stat sendlog;
- struct fs3_sync_application app;
+ struct fs3_sync_application sync_app;
+ struct fs3_application_metrics app_metrics;
struct fs3_sync_ctrl_stat ctrl_sync;
struct fs3_sync_ctrl_service ctrl_service;
struct fieldstat_instance *fs_instance;
@@ -188,7 +203,15 @@ void tsg_stat_sync_application_update(enum SYNC_APP column_idx, long long increa
{
if(g_rt_stat_para.fs_instance!=NULL)
{
- stat_update(g_rt_stat_para.app.column_id[column_idx], increase);
+ stat_update(g_rt_stat_para.sync_app.column_id[column_idx], increase);
+ }
+}
+
+void tsg_stat_application_metrics_count_set(int row_idx, long long current)
+{
+ if(g_rt_stat_para.fs_instance!=NULL)
+ {
+ fieldstat_value_set(g_rt_stat_para.fs_instance, g_rt_stat_para.app_metrics.column_id[row_idx], current);
}
}
@@ -301,8 +324,8 @@ int tsg_stat_init(void)
enum field_type app_sync_column_type[SYNC_APP_MAX]={FIELD_TYPE_GAUGE, FIELD_TYPE_GAUGE, FIELD_TYPE_GAUGE, FIELD_TYPE_GAUGE, FIELD_TYPE_GAUGE};
const char *app_sync_column_name[SYNC_APP_MAX]={"lpi", "dpkt", "thrid", "user_define", "built_in"};
- g_rt_stat_para.app.table_id=fieldstat_register_table(g_rt_stat_para.fs_instance, "sync_application", app_sync_column_name, app_sync_column_type, SYNC_APP_MAX);
- fieldstat_register_table_row(g_rt_stat_para.fs_instance, g_rt_stat_para.app.table_id, "sum", NULL, 0, g_rt_stat_para.app.column_id);
+ g_rt_stat_para.sync_app.table_id=fieldstat_register_table(g_rt_stat_para.fs_instance, "sync_application", app_sync_column_name, app_sync_column_type, SYNC_APP_MAX);
+ fieldstat_register_table_row(g_rt_stat_para.fs_instance, g_rt_stat_para.sync_app.table_id, "sum", NULL, 0, g_rt_stat_para.sync_app.column_id);
enum field_type ctrl_sync_column_type[CTRL_SYNC_MAX]={FIELD_TYPE_GAUGE, FIELD_TYPE_GAUGE, FIELD_TYPE_GAUGE, FIELD_TYPE_GAUGE, FIELD_TYPE_GAUGE, FIELD_TYPE_GAUGE};
const char *ctrl_sync_column_name[CTRL_SYNC_MAX]={"unknown", "rstall", "opening", "activing", "updating", "closing"};
@@ -333,6 +356,19 @@ int tsg_stat_init(void)
const char *sendlog_column_name[LOG_STATUS_MAX]={"T_success_log", "T_fail_log", "T_drop_log", "success_log/s", "fail_log/s", "drop_log/s"};
g_rt_stat_para.sendlog.table_id=fieldstat_register_table(g_rt_stat_para.fs_instance, "sendlog", sendlog_column_name, sendlog_column_type, LOG_STATUS_MAX);
+ char fs3_table_name[128]={0};
+ enum field_type app_metrics_column_type[APP_METRICS_MAX]={FIELD_TYPE_GAUGE};
+ const char *app_metrics_column_name[APP_METRICS_MAX]={"metric_cnt"};
+ g_rt_stat_para.app_metrics.table_id=fieldstat_register_table(g_rt_stat_para.fs_instance, "application", app_metrics_column_name, app_metrics_column_type, APP_METRICS_MAX);
+
+ int thread_count=get_thread_count();
+ g_rt_stat_para.app_metrics.column_id=(int *)calloc(thread_count, sizeof(int));
+ for(int i=0; i<thread_count; i++)
+ {
+ snprintf(fs3_table_name, sizeof(fs3_table_name), "thread_%d", i);
+ fieldstat_register_table_row(g_rt_stat_para.fs_instance, g_rt_stat_para.app_metrics.table_id, fs3_table_name, NULL, 0, &(g_rt_stat_para.app_metrics.column_id[i]));
+ }
+
return 0;
}
diff --git a/src/tsg_stat.h b/src/tsg_stat.h
index 72a98f4..a4d9662 100644
--- a/src/tsg_stat.h
+++ b/src/tsg_stat.h
@@ -125,6 +125,7 @@ void tsg_stat_log_handle_update(enum LOG_HANDLE column_idx, long long increase);
void tsg_stat_sync_exdata_add_update(enum SYNC_EXDATA_ROW row_idx, long long increase);
void tsg_stat_sync_exdata_del_update(enum SYNC_EXDATA_ROW row_idx, long long increase);
void tsg_stat_sync_application_update(enum SYNC_APP column_idx, long long increase);
+void tsg_stat_application_metrics_count_set(int row_idx, long long current);
void tsg_stat_sendlog_update(int row_idx, enum LOG_STATUS column_idx, long long increase);
void tsg_stat_flow_update(enum STAT_STATUS status, enum FLOW_STAT column_idx, long long increase);
void tsg_stat_sync_ctrl_update(enum STAT_STATUS status, enum CTRL_SYNC column_idx, long long increase);
diff --git a/src/tsg_statistic.cpp b/src/tsg_statistic.cpp
index 312ade4..9a05579 100644
--- a/src/tsg_statistic.cpp
+++ b/src/tsg_statistic.cpp
@@ -6,6 +6,7 @@
#include <MESA/MESA_prof_load.h>
#include <MESA/MESA_handle_logger.h>
+#include "tsg_stat.h"
#include "tsg_log.h"
#include "tsg_entry.h"
#include "tsg_send_log.h"
@@ -340,6 +341,8 @@ int tsg_set_application_metrics(const struct streaminfo *a_stream, const char *l
thread_seq
);
+ tsg_stat_application_metrics_count_set(thread_seq, fieldstat_dynamic_read_htable_item_cnt(g_tsg_statis_para.fs_application.metrics_handle, thread_seq));
+
return 0;
}