diff options
| author | yangwei <[email protected]> | 2024-07-16 11:37:41 +0800 |
|---|---|---|
| committer | yangwei <[email protected]> | 2024-07-16 15:34:50 +0800 |
| commit | 7d5aafea3d0eb667073f89fce53d1d0d3cc97b12 (patch) | |
| tree | 0d3bffd92233742bb543d1465de726b0d646ae88 | |
| parent | e812eeead6504aefb6af49d7531f10616708d465 (diff) | |
✨ feat(sapp metrics): add fs4 as metrics exporter
| -rw-r--r-- | CMakeLists.txt | 2 | ||||
| -rw-r--r-- | benchmark/sapp_default_config/etc/sapp.toml | 5 | ||||
| -rw-r--r-- | bin/etc/sapp.toml | 7 | ||||
| -rw-r--r-- | include/private/sapp_declaration.h | 8 | ||||
| -rw-r--r-- | include/private/sapp_global_val.h | 12 | ||||
| -rw-r--r-- | src/config/cmd_args.c | 57 | ||||
| -rw-r--r-- | src/config/config_parse.cpp | 17 | ||||
| -rw-r--r-- | src/extensions/sapp_metrics.cpp | 196 | ||||
| -rw-r--r-- | src/packet_io/packet_io_status.cpp | 128 | ||||
| -rw-r--r-- | src/sapp_dev/sapp_global_val.c | 76 |
10 files changed, 428 insertions, 80 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt index 451ff7a..f0136d4 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -199,7 +199,7 @@ endif() add_definitions(${CAPTURE_DEFINITIONS} ${MEM_POOL_DEFINITIONS} -D__FAVOR_BSD=1 -D__USE_BSD=1 -D_GNU_SOURCE=1 -DMESA_SAPP_PLATFORM=1) -set(SAPP_DEPEND_DYN_LIB MESA_handle_logger MESA_prof_load MESA_htable MESA_field_stat2 fieldstat3 cjson MESA_jump_layer breakpad_mini ${SYSTEMD_LIBRARIES} pthread dl pcap) +set(SAPP_DEPEND_DYN_LIB MESA_handle_logger MESA_prof_load MESA_htable MESA_field_stat2 fieldstat3 fieldstat4 cjson MESA_jump_layer breakpad_mini ${SYSTEMD_LIBRARIES} pthread dl pcap) set(SAPP_INNER_STATIC_LIB sapp_dev dealpkt packet_io packet_io_pcap packet_io_marsio common config inline_keepalive gdev_assistant sapp_assistant sapp_metrics plugctrl project timer md5 symbol_check tomlc99_wrap MESA_socket_wrap timestamp_record diff --git a/benchmark/sapp_default_config/etc/sapp.toml b/benchmark/sapp_default_config/etc/sapp.toml index b63ec9c..66c2160 100644 --- a/benchmark/sapp_default_config/etc/sapp.toml +++ b/benchmark/sapp_default_config/etc/sapp.toml @@ -200,6 +200,11 @@ refresh_interval_s=1 app_name="sapp4" + [profiling.metric.fs4] + enabled=1 + local_file="./metrics/fs4_sysinfo.json" + refresh_interval_s=1 + app_name="sapp4" [profiling.process_latency] log_category="sapp_process_latency_log" diff --git a/bin/etc/sapp.toml b/bin/etc/sapp.toml index 17f7ae3..c01acfe 100644 --- a/bin/etc/sapp.toml +++ b/bin/etc/sapp.toml @@ -200,7 +200,12 @@ local_file="fs3_sysinfo.metrics" refresh_interval_s=1 app_name="sapp4" - + + [profiling.metric.fs4] + enabled=1 + local_file="./metrics/fs4_sysinfo.json" + refresh_interval_s=1 + app_name="sapp4" [profiling.process_latency] log_category="sapp_process_latency_log" diff --git a/include/private/sapp_declaration.h b/include/private/sapp_declaration.h index e02df12..4d11b23 100644 --- a/include/private/sapp_declaration.h +++ b/include/private/sapp_declaration.h @@ -23,7 +23,7 @@ extern volatile long long g_current_time_ms; #define MAX_DEFALUT_TIMEOUT_S 86400 -/* ��Ƕ�ײ��̫��, ʹ�ü������ */ +/* ��Ƕ�ײ��̫��, ʹ�ü������ */ #define ABBR_SAPP_LOG_HANDLE sapp_global_val->individual_fixed.log_handle #define ABBR_SAPP_PLUGIN_LOG_HANDLE sapp_global_val->individual_fixed.plugin_log_handle @@ -57,13 +57,14 @@ extern volatile long long g_current_time_ms; #define ABBR_SYSINFO_LOG_DATA_FILE sapp_global_val->config.data_file_path.data_sapp_sysinfo_log_absolute #define ABBR_FS2_LOG_DATA_FILE sapp_global_val->config.data_file_path.data_sapp_fs2_log_absolute #define ABBR_FS3_LOG_DATA_FILE sapp_global_val->config.data_file_path.data_sapp_fs3_log_absolute +#define ABBR_FS4_LOG_DATA_FILE sapp_global_val->config.data_file_path.data_sapp_fs4_log_absolute #define ABBR_PROCESS_LATENTCY_DATA_FILE sapp_global_val->config.data_file_path.data_sapp_fs2_process_latency_absolute #define ABBR_INLINE_KEEPALIVE_LOG_DATA_FILE sapp_global_val->config.data_file_path.data_inline_keepalive_log_absolute #define ABBR_LOAD_PLUG_STAT_LOG_DATA_FILE sapp_global_val->config.data_file_path.data_load_plugin_stat_log_absolute #define ABBR_MARSIO_LIBRARY_FILE sapp_global_val->config.library_file_path.libmarsio_file_path #define ABBR_MEMORY_STAT_LOG_DATA_FILE sapp_global_val->config.data_file_path.data_memory_stat_log_absolute -/* ��֮ǰ��ɢ��ȫ�ֱ���ǿ�Ƹ���Ϊ�µ�ȫ�ֱ��� */ +/* ��֮ǰ��ɢ��ȫ�ֱ���ǿ�Ƹ���Ϊ�µ�ȫ�ֱ��� */ #define g_CurrentTime_ms g_current_time_ms #define g_CurrentTime g_current_time #define g_sapp_log_handle sapp_global_val->individual_fixed.log_handle @@ -138,6 +139,9 @@ void sapp_fs2_set_plug_entry_latency(int entry_id, long long time_cost); void sapp_fs3_metric_incrby(int column_idx, int column_idy,long long value); void sapp_fs3_metric_set(int metric_idx, int metric_idy, long long value); +void sapp_fs4_metric_incrby(int column_idx, int column_idy,long long value); +void sapp_fs4_metric_set(int metric_idx, int metric_idy, long long value); + int sapp_independent_thread_init(void); void sapp_gval_init(void); diff --git a/include/private/sapp_global_val.h b/include/private/sapp_global_val.h index 39f5923..51a8152 100644 --- a/include/private/sapp_global_val.h +++ b/include/private/sapp_global_val.h @@ -151,6 +151,7 @@ typedef struct{ sapp_config_profiling_log_t log; sapp_config_profiling_metric_t fs2; sapp_config_profiling_metric_t fs3; + sapp_config_profiling_metric_t fs4; //process_latency and sanity_check char process_latency_log_category[NAME_MAX]; @@ -329,6 +330,10 @@ typedef struct{ const char *data_sapp_fs3_log_relative; const char *data_sapp_fs3_log_absolute; + + const char *data_sapp_fs4_log_relative; + const char *data_sapp_fs4_log_absolute; + const char *data_sapp_fs2_process_latency_relative; const char *data_sapp_fs2_process_latency_absolute; @@ -397,6 +402,12 @@ typedef struct{ int metrics_ids[2][SAPP_STAT_NUM_MAX]; }sapp_gval_individual_fixed_fs3_t; + +typedef struct{ + struct fieldstat_easy *fs_metric_handle; + int metrics_ids[2][SAPP_STAT_NUM_MAX]; +}sapp_gval_individual_fixed_fs4_t; + typedef struct{ void *log_handle; /* runtime.log */ void *plugin_log_handle; /* runtime.log */ @@ -410,6 +421,7 @@ typedef struct{ sapp_gval_individual_fixed_fs2_t fs2_runtime; sapp_gval_individual_fixed_fs3_t fs3_runtime; + sapp_gval_individual_fixed_fs4_t fs4_runtime; pthread_t thread_obtain_id[SAPP_MAX_THREADS]; pid_t thread_tid[SAPP_MAX_THREADS]; diff --git a/src/config/cmd_args.c b/src/config/cmd_args.c index aedd546..72cab8f 100644 --- a/src/config/cmd_args.c +++ b/src/config/cmd_args.c @@ -9,7 +9,7 @@ extern "C" { __attribute__((__used__)) const char *sapp_git_ver = GIT_VERSION; #endif -/* �˴�����ʹ��һ��ȫ�ֱ���, Ϊ����sapp_gval_init()�������ж��Ƿ�����dictator, ����Ԥ�ȷ����ڴ� */ +/* �˴�����ʹ��һ��ȫ�ֱ���, Ϊ����sapp_gval_init()�������ж��Ƿ�����dictator, ����Ԥ�ȷ����ڴ� */ char g_cmd_args_main_cfg_file[PATH_MAX] = "./etc/sapp.toml"; static inline int dumpfile_speed_check(const char *opt_name, const char *opt_arg) @@ -59,7 +59,7 @@ static int get_dumpfile_list_array(const char *opt_arg) char *exec_result, *tobe_free_result; char *save_ptr; - /* ��ִ��һ��, �������Ƿ�ɹ� */ + /* ��ִ��һ��, �������Ƿ�ɹ� */ sapp_log(10, ~0, ~0, "Executing command --dumpfile-file '%s' ... ", opt_arg); if(system(opt_arg) != 0){ sapp_log(30, ~0, ~0, "Execute command --dumpfile-file '%s' error!", opt_arg); @@ -86,7 +86,7 @@ static int get_dumpfile_list_array(const char *opt_arg) sapp_global_val->cla.dumpfie_list_array = NULL; while((ptr_cont = strtok_r(exec_result, delim, &save_ptr))){ - sapp_global_val->cla.dumpfie_list_array = (char **)sapp_mem_realloc(SAPP_MEM_FIX_GLOBAL_VAL, MEM_STAT_GLOBAL_THREAD_ID,sapp_global_val->cla.dumpfie_list_array, sizeof(void *) * (line_num + 2));//��ǰҪ�洢��ָ���ټ���EOF + sapp_global_val->cla.dumpfie_list_array = (char **)sapp_mem_realloc(SAPP_MEM_FIX_GLOBAL_VAL, MEM_STAT_GLOBAL_THREAD_ID,sapp_global_val->cla.dumpfie_list_array, sizeof(void *) * (line_num + 2));//��ǰҪ�洢��ָ���ټ���EOF sapp_global_val->cla.dumpfie_list_array[line_num] = sapp_strdup(ptr_cont);; line_num++; exec_result = NULL; @@ -101,10 +101,10 @@ static int get_dumpfile_list_array(const char *opt_arg) } -/* ��ֻ̬��ȫ�ֱ������Է����κδ����, ������sapp_global_val�� */ +/* ��ֻ̬��ȫ�ֱ������Է����κδ����, ������sapp_global_val�� */ static const sapp_cmd_args_usage_t cmd_args_usage[] = { - /* ����ĸ˳���������: */ + /* ����ĸ˳���������: */ {"-c", "main-config-file", "required", NULL, "specifies sapp main configuration file, default is './etc/sapp.toml', for example:\n \ ./sapp -c /opt/MESA/config/sapp.toml"}, {"-C", "config-root-dir", "required", NULL, "specifies the configuration root directory for plugins, \n \ @@ -128,10 +128,10 @@ static const sapp_cmd_args_usage_t cmd_args_usage[] = {NULL, NULL, NULL,NULL,NULL} }; -/* ��ֻ̬��ȫ�ֱ������Է����κδ����, ������sapp_global_val�� */ +/* ��ֻ̬��ȫ�ֱ������Է����κδ����, ������sapp_global_val�� */ static const char *sapp_cla_short_options = "dhgvnsc:C:D:e:r:p:f:t"; -/* ��ֻ̬��ȫ�ֱ������Է����κδ����, ������sapp_global_val�� */ +/* ��ֻ̬��ȫ�ֱ������Է����κδ����, ������sapp_global_val�� */ static const struct option sapp_cla_long_options[] = { {"help", no_argument, NULL, 'h'}, @@ -173,7 +173,7 @@ static int check_args_legality(const char *opt_name, const char *opt_arg) int index = 0, ret = 0; while(cmd_args_usage[index].long_opt_name != NULL){ - /* ѡ������Ҫ�ò�ͬ�ij��ȱȽ�����, ��ֹdumpfile �� dumpfile-speedʹ�ý϶̳��ȱȽ�, �������е���� */ + /* ѡ������Ҫ�ò�ͬ�ij��ȱȽ�����, ��ֹdumpfile �� dumpfile-speedʹ�ý϶̳��ȱȽ�, �������е���� */ if((strncasecmp(opt_name, cmd_args_usage[index].long_opt_name, strlen(opt_name)) == 0) && (strncasecmp(opt_name, cmd_args_usage[index].long_opt_name, strlen(cmd_args_usage[index].long_opt_name)) == 0) && (cmd_args_usage[index].check_fun != NULL)){ @@ -187,7 +187,7 @@ static int check_args_legality(const char *opt_name, const char *opt_arg) return ret; } -/* ��鲻ͬ����֮����������ϵ */ +/* ��鲻ͬ����֮����������ϵ */ static int check_args_sanity(void) { char *no_use; @@ -245,7 +245,7 @@ int sapp_get_cla_raw(const char *opt_long_name, char ** const opt_string_value) local_tmp_cla_num = sapp_global_val->cla.cmd_args_num; for(i = 0; i < local_tmp_cla_num; i++){ - /* ѡ������Ҫ�ò�ͬ�ij��ȱȽ�����, ��ֹdumpfile �� dumpfile-speedʹ�ý϶̳��ȱȽ�, �������е���� */ + /* ѡ������Ҫ�ò�ͬ�ij��ȱȽ�����, ��ֹdumpfile �� dumpfile-speedʹ�ý϶̳��ȱȽ�, �������е���� */ if((strncasecmp(opt_long_name, local_tmp_array[i]->long_opt_name, strlen(opt_long_name)) == 0) && (strncasecmp(opt_long_name, local_tmp_array[i]->long_opt_name, strlen(local_tmp_array[i]->long_opt_name)) == 0)){ if(local_tmp_array[i]->arg_val.string_value != NULL){ @@ -315,11 +315,11 @@ static int store_cmd_args(const char *opt_name, const char *opt_arg) } /* - ������ļ�·��ת��Ϊ����·��, �������в���-D�������ļ��Ƿ�ʹ�þ���·��Ӱ��. + ������ļ�·��ת��Ϊ����·��, �������в���-D�������ļ��Ƿ�ʹ�þ���·��Ӱ��. - sapp�Ķ�����־�ļ�·����sapp.toml��ȡ, - ����Ѿ��Ǿ���·��(����/��ʼ), �����������-D����, - ������-DΪ��Ŀ¼, ����sapp.toml�е�·��Ϊ��Ŀ¼�����ļ�. + sapp�Ķ�����־�ļ�·����sapp.toml��ȡ, + ����Ѿ��Ǿ���·��(����/��ʼ), �����������-D����, + ������-DΪ��Ŀ¼, ����sapp.toml�е�·��Ϊ��Ŀ¼�����ļ�. */ static void sapp_convert_relative_to_absolute(const char *raw_relative_path, char **absolute_path, const char *cmd_arg_root_dir) { @@ -329,7 +329,7 @@ static void sapp_convert_relative_to_absolute(const char *raw_relative_path, cha cfg_is_absolute_path = sapp_is_absolute_path(raw_relative_path); if(cfg_is_absolute_path){ - /* ��/��ʼ��·��, absolute���� relative */ + /* ��/��ʼ��·��, absolute���� relative */ *absolute_path = sapp_strdup(raw_relative_path); return; } @@ -351,7 +351,7 @@ void sapp_update_main_config_file(const char *main_entry_cfg) pconfig->cfg_main_entry_absolute = sapp_strdup("./etc/sapp.toml"); } - /* ��Ϊ��-c����, sapp.toml���ܲ���Ĭ��·����, �����»�ȡһ�������ļ����·�� */ + /* ��Ϊ��-c����, sapp.toml���ܲ���Ĭ��·����, �����»�ȡһ�������ļ����·�� */ sapp_get_secondary_file_path(); pconfig->cfg_sapp_log_absolute = sapp_strdup(pconfig->cfg_sapp_log_relative); @@ -400,7 +400,7 @@ void sapp_update_data_root_dir(const char *data_root_dir) pdata = &sapp_global_val->config.data_file_path; if(data_root_dir != NULL){ - /* ����Ŀ¼�������ȼ����û��, ��Ϊд��־���Զ�̬����Ŀ¼���ļ�, ������ʱ����ȷʵ������, ����������ڱ�����Ŀ¼ */ + /* ����Ŀ¼�������ȼ����û��, ��Ϊд��־���Զ�̬����Ŀ¼���ļ�, ������ʱ����ȷʵ������, ����������ڱ�����Ŀ¼ */ struct stat dir_fstat; if((stat(data_root_dir, &dir_fstat) >= 0) && (S_ISDIR(dir_fstat.st_mode) == 0)){ printf("\033[1;31;40mdata-root-dir '%s' already exist, but is not directory\033[0m\n", data_root_dir); @@ -413,14 +413,15 @@ void sapp_update_data_root_dir(const char *data_root_dir) pdata->data_files_root_dir = sapp_strdup("./"); } - /* sapp�Ķ�����־�ļ�·����sapp.toml��ȡ, - ����Ѿ��Ǿ���·��(����/��ʼ), �����������-D����, - ������-DΪ��Ŀ¼, ����sapp.toml�е�·��Ϊ��Ŀ¼�����ļ�. + /* sapp�Ķ�����־�ļ�·����sapp.toml��ȡ, + ����Ѿ��Ǿ���·��(����/��ʼ), �����������-D����, + ������-DΪ��Ŀ¼, ����sapp.toml�е�·��Ϊ��Ŀ¼�����ļ�. */ sapp_convert_relative_to_absolute(pdata->data_sapp_sysinfo_log_relative, (char **)&pdata->data_sapp_sysinfo_log_absolute, pdata->data_files_root_dir); sapp_convert_relative_to_absolute(pdata->data_sapp_fs2_log_relative, (char **)&pdata->data_sapp_fs2_log_absolute, pdata->data_files_root_dir); sapp_convert_relative_to_absolute(pdata->data_sapp_fs3_log_relative, (char **)&pdata->data_sapp_fs3_log_absolute, pdata->data_files_root_dir); + sapp_convert_relative_to_absolute(pdata->data_sapp_fs4_log_relative, (char **)&pdata->data_sapp_fs4_log_absolute, pdata->data_files_root_dir); sapp_convert_relative_to_absolute(pdata->data_sapp_fs2_process_latency_relative, (char **)&pdata->data_sapp_fs2_process_latency_absolute, pdata->data_files_root_dir); sapp_convert_relative_to_absolute(pdata->data_inline_keepalive_log_relative, (char **)&pdata->data_inline_keepalive_log_absolute, pdata->data_files_root_dir); sapp_convert_relative_to_absolute(pdata->data_load_plugin_stat_log_relative, (char **)&pdata->data_load_plugin_stat_log_absolute, pdata->data_files_root_dir); @@ -454,7 +455,7 @@ int sapp_parse_cmd_args(int argc, char *argv[]) int option_array_index; int test_config_flag = 0; - optind = 1; /* sapp֧�ֲ��˳����̶����³�ʼ��, ÿ�ν���cmd args֮ǰҪ��optind����Ϊ1 */ + optind = 1; /* sapp֧�ֲ��˳����̶����³�ʼ��, ÿ�ν���cmd args֮ǰҪ��optind����Ϊ1 */ while(1){ c = getopt_long(argc, argv, sapp_cla_short_options, sapp_cla_long_options, NULL); @@ -480,20 +481,20 @@ int sapp_parse_cmd_args(int argc, char *argv[]) cfg_main_entry_changed = 1; cmd_arg_cfg_main_entry = sapp_strdup(optarg); strncpy(g_cmd_args_main_cfg_file, optarg, PATH_MAX); - /* cmd argsû���Ⱥ�˳��, �˴��Ȳ�Ҫֱ�ӵ��� sapp_update_config_root_dir() */ + /* cmd argsû���Ⱥ�˳��, �˴��Ȳ�Ҫֱ�ӵ��� sapp_update_config_root_dir() */ break; case 'C': cfg_root_dir_changed = 1; cmd_arg_cfg_root_dir = sapp_strdup(optarg); - /* cmd argsû���Ⱥ�˳��, �˴��Ȳ�Ҫֱ�ӵ��� sapp_update_main_config_file() */ + /* cmd argsû���Ⱥ�˳��, �˴��Ȳ�Ҫֱ�ӵ��� sapp_update_main_config_file() */ break; case 'D': data_root_dir_changed = 1; cmd_arg_data_root_dir = sapp_strdup(optarg); - /* cmd argsû���Ⱥ�˳��, �˴��Ȳ�Ҫֱ�ӵ��� sapp_update_data_root_dir() */ + /* cmd argsû���Ⱥ�˳��, �˴��Ȳ�Ҫֱ�ӵ��� sapp_update_data_root_dir() */ break; case 'e': @@ -508,7 +509,7 @@ int sapp_parse_cmd_args(int argc, char *argv[]) case 'g': sapp_update_main_config_file(NULL); - sapp_parse_config(); /* �ȶ�ȡ���ļ�, �ٵ���breakpad_mini */ + sapp_parse_config(); /* �ȶ�ȡ���ļ�, �ٵ���breakpad_mini */ sapp_init_breakpad_mini(); sapp_segv_generate(); continue; @@ -575,7 +576,7 @@ int sapp_parse_cmd_args(int argc, char *argv[]) return -1; } - /* cmd argsû��˳��, �����ָ����-D �������-c����, ҲҪ���Ƚ���-c */ + /* cmd argsû��˳��, �����ָ����-D �������-c����, ҲҪ���Ƚ���-c */ if(0 == cfg_main_entry_changed){ sapp_update_main_config_file(NULL); }else{ @@ -583,7 +584,7 @@ int sapp_parse_cmd_args(int argc, char *argv[]) sapp_mem_free(SAPP_MEM_FIX_GLOBAL_VAL, MEM_STAT_GLOBAL_THREAD_ID, (void*)cmd_arg_cfg_main_entry); } - /* cmd argsû��˳��, �����ָ����-D �������-c����, ҲҪ���Ƚ���-c */ + /* cmd argsû��˳��, �����ָ����-D �������-c����, ҲҪ���Ƚ���-c */ if(0 == cfg_root_dir_changed){ sapp_update_config_root_dir(NULL); }else{ @@ -591,7 +592,7 @@ int sapp_parse_cmd_args(int argc, char *argv[]) SAPP_GLOBAL_FREE(cmd_arg_cfg_root_dir); } - /* cmd argsû��˳��, �����ָ����-D �������-c����, ҲҪ���Ƚ���-c */ + /* cmd argsû��˳��, �����ָ����-D �������-c����, ҲҪ���Ƚ���-c */ if(0 == data_root_dir_changed){ sapp_update_data_root_dir(NULL); }else{ diff --git a/src/config/config_parse.cpp b/src/config/config_parse.cpp index c82f8f7..af8ac32 100644 --- a/src/config/config_parse.cpp +++ b/src/config/config_parse.cpp @@ -1396,6 +1396,16 @@ int sapp_get_secondary_file_path(void) pconfig->data_file_path.data_sapp_fs2_log_relative = sapp_strdup(pconfig->profiling.fs2.local_file); } + tomlc99_wrap_load_string_def(ABBR_CFG_FILE_MAIN_ENTRY, (char *)"profiling.metric.fs4", (char *)"local_file", pconfig->profiling.fs4.local_file, NAME_MAX, ""); + if (strlen(pconfig->profiling.fs4.local_file) > 0) + { + if (pconfig->data_file_path.data_sapp_fs4_log_relative) + { + SAPP_GLOBAL_FREE(pconfig->data_file_path.data_sapp_fs4_log_relative); + } + pconfig->data_file_path.data_sapp_fs4_log_relative = sapp_strdup(pconfig->profiling.fs4.local_file); + } + tomlc99_wrap_load_string_def(ABBR_CFG_FILE_MAIN_ENTRY, (char *)"profiling.metric.fs3", (char *)"local_file", pconfig->profiling.fs3.local_file, NAME_MAX, ""); if (strlen(pconfig->profiling.fs3.local_file) > 0) { @@ -1746,6 +1756,13 @@ int sapp_parse_config(void) tomlc99_wrap_load_string_def(ABBR_CFG_FILE_MAIN_ENTRY, (char *)"profiling.metric.fs3", (char *)"app_name", pconfig->profiling.fs3.app_name, NAME_MAX, "sapp4"); } + tomlc99_wrap_load_int_def(ABBR_CFG_FILE_MAIN_ENTRY, (char *)"profiling.metric.fs4", (char *)"enabled", (int *)&pconfig->profiling.fs4.enabled, 0); + if(pconfig->profiling.fs4.enabled) + { + tomlc99_wrap_load_int_def(ABBR_CFG_FILE_MAIN_ENTRY, (char *)"profiling.metric.fs4", (char *)"refresh_interval_s", (int *)&pconfig->profiling.fs4.refresh_interval_s, 2); + tomlc99_wrap_load_string_def(ABBR_CFG_FILE_MAIN_ENTRY, (char *)"profiling.metric.fs4", (char *)"app_name", pconfig->profiling.fs4.app_name, NAME_MAX, "sapp4"); + } + tomlc99_wrap_load_int_def(ABBR_CFG_FILE_MAIN_ENTRY, (char *)"profiling.process_latency", (char *)"histogram_enabled", (int *)&pconfig->profiling.histogram_enabled, 0); tomlc99_wrap_load_string_def(ABBR_CFG_FILE_MAIN_ENTRY, (char *)"profiling.process_latency", (char *)"log_category", pconfig->profiling.process_latency_log_category, NAME_MAX, "sapp_process_latency_log"); diff --git a/src/extensions/sapp_metrics.cpp b/src/extensions/sapp_metrics.cpp index f5b7056..30c6f4c 100644 --- a/src/extensions/sapp_metrics.cpp +++ b/src/extensions/sapp_metrics.cpp @@ -1,3 +1,4 @@ +#include "fieldstat/fieldstat_easy.h" #include "field_stat2.h" #include "fieldstat.h" @@ -565,14 +566,6 @@ static int sapp_fs3_init(sapp_global_t *global_paramters) NULL, 0); fs3_rt->metrics_ids[0][SAPP_STAT_UDP_STREAM_TOTAL_S2C] = fieldstat_register(fs3_handle, FIELD_TYPE_GAUGE, "Udp_Link_S2C_ALL", NULL, 0); - - fs3_rt->metrics_ids[0][SAPP_STAT_UDP_STREAM_TOTAL_DOUBLE] = fieldstat_register(fs3_handle, FIELD_TYPE_GAUGE, "Udp_Link_Double_ALL", - NULL, 0); - fs3_rt->metrics_ids[0][SAPP_STAT_UDP_STREAM_TOTAL_C2S] = fieldstat_register(fs3_handle, FIELD_TYPE_GAUGE, "Udp_Link_C2S_ALL", - NULL, 0); - fs3_rt->metrics_ids[0][SAPP_STAT_UDP_STREAM_TOTAL_S2C] = fieldstat_register(fs3_handle, FIELD_TYPE_GAUGE, "Udp_Link_S2C_ALL", - NULL, 0); - fs3_rt->metrics_ids[0][SAPP_STAT_SND_TCP_RST] = fieldstat_register(fs3_handle, FIELD_TYPE_COUNTER, "Send_Tcp_Rst", NULL, 0); fs3_rt->metrics_ids[0][SAPP_STAT_SND_TCP_SYNACK] = fieldstat_register(fs3_handle, FIELD_TYPE_COUNTER, "Send_Tcp_S/A", @@ -670,6 +663,181 @@ static void sapp_fs3_destroy(sapp_global_t *global_paramters) return; } +void sapp_fs4_metric_set(int column_idx, int column_idy, long long value) +{ + sapp_gval_individual_fixed_fs4_t *fs4_rt = &sapp_global_val->individual_fixed.fs4_runtime; + if(fs4_rt->fs_metric_handle!=NULL) + { + fieldstat_easy_counter_set(fs4_rt->fs_metric_handle, + 0, + fs4_rt->metrics_ids[column_idx][column_idy], + NULL, + 0, + value); + } + return; +} + +void sapp_fs4_metric_incrby(int column_idx, int column_idy,long long value) +{ + sapp_gval_individual_fixed_fs4_t *fs4_rt = &sapp_global_val->individual_fixed.fs4_runtime; + if(fs4_rt->fs_metric_handle!=NULL) + { + fieldstat_easy_counter_incrby(fs4_rt->fs_metric_handle, + 0, + fs4_rt->metrics_ids[column_idx][column_idy], + NULL, + 0, + value); + } + return; +} + +static int sapp_fs4_init(sapp_global_t *global_paramters) +{ + sapp_config_profiling_metric_t *fs4_para = &global_paramters->config.profiling.fs4; + sapp_gval_individual_fixed_fs4_t *fs4_rt = &global_paramters->individual_fixed.fs4_runtime; + + fs4_rt->fs_metric_handle = fieldstat_easy_new(1, fs4_para->app_name, NULL, 0); + if(fs4_rt->fs_metric_handle == NULL) + { + return -1; + } + struct fieldstat_easy *fs4_handle = fs4_rt->fs_metric_handle; + + fs4_rt->metrics_ids[0][SAPP_STAT_RCV_LINE] = fieldstat_easy_register_counter(fs4_handle, "Line_Pkt"); + fs4_rt->metrics_ids[1][SAPP_STAT_RCV_LINE] = fieldstat_easy_register_counter(fs4_handle, "Line_Bit"); + + fs4_rt->metrics_ids[0][SAPP_STAT_RCV_ETHERNET] = fieldstat_easy_register_counter(fs4_handle, "Eth_Pkt"); + fs4_rt->metrics_ids[1][SAPP_STAT_RCV_ETHERNET] = fieldstat_easy_register_counter(fs4_handle, "Eth_Bit"); + + fs4_rt->metrics_ids[0][SAPP_STAT_ETH_INBOUND] = fieldstat_easy_register_counter(fs4_handle, "Pkt_Inbound"); + fs4_rt->metrics_ids[1][SAPP_STAT_ETH_INBOUND] = fieldstat_easy_register_counter(fs4_handle, "Bit_Inbound"); + + fs4_rt->metrics_ids[0][SAPP_STAT_ETH_OUTBOUND] = fieldstat_easy_register_counter(fs4_handle, "Pkt_Outbound"); + fs4_rt->metrics_ids[1][SAPP_STAT_ETH_OUTBOUND] = fieldstat_easy_register_counter(fs4_handle, "Bit_Outbound"); + + fs4_rt->metrics_ids[0][SAPP_STAT_RCV_UNKNOWN] = fieldstat_easy_register_counter(fs4_handle, "Unknown_Pkt"); + fs4_rt->metrics_ids[1][SAPP_STAT_RCV_UNKNOWN] = fieldstat_easy_register_counter(fs4_handle, "Unknown_Bit"); + + fs4_rt->metrics_ids[0][SAPP_STAT_SND_ERROR] = fieldstat_easy_register_counter(fs4_handle, "Snd_Err_Pkt"); + + fs4_rt->metrics_ids[0][SAPP_STAT_RCV_IPV4] = fieldstat_easy_register_counter(fs4_handle, "Ipv4_Pkt"); + fs4_rt->metrics_ids[1][SAPP_STAT_RCV_IPV4] = fieldstat_easy_register_counter(fs4_handle, "Ipv4_Bit"); + + + fs4_rt->metrics_ids[0][SAPP_STAT_RCV_IPV6] = fieldstat_easy_register_counter(fs4_handle, "Ipv6_Pkt"); + fs4_rt->metrics_ids[1][SAPP_STAT_RCV_IPV6] = fieldstat_easy_register_counter(fs4_handle, "Ipv6_Bit"); + + fs4_rt->metrics_ids[0][SAPP_STAT_RCV_TCP] = fieldstat_easy_register_counter(fs4_handle, "Tcp_Pkt"); + fs4_rt->metrics_ids[1][SAPP_STAT_RCV_TCP] = fieldstat_easy_register_counter(fs4_handle, "Tcp_Bit"); + + fs4_rt->metrics_ids[0][SAPP_STAT_RCV_DUP_TCP] = fieldstat_easy_register_counter(fs4_handle, "Dup_Tcp_Pkt"); + fs4_rt->metrics_ids[1][SAPP_STAT_RCV_DUP_TCP] = fieldstat_easy_register_counter(fs4_handle, "Dup_Tcp_Bit"); + + fs4_rt->metrics_ids[0][SAPP_STAT_TCP_LOST_PKT_STREAM_NUM] = fieldstat_easy_register_counter(fs4_handle, "Tcp_Lost_STM"); + + fs4_rt->metrics_ids[1][SAPP_STAT_TCP_LOST_PKT] = fieldstat_easy_register_counter(fs4_handle, "Tcp_Lost_Bit"); + + //fs4_rt->metrics_ids[0][SAPP_STAT_DUP_IDENTIFY_ERR] = fieldstat_easy_register_counter(fs4_handle, "Dup_Key_Err"); + + fs4_rt->metrics_ids[0][SAPP_STAT_TCP_CLOSE_BY_TIMEOUT] = fieldstat_easy_register_counter(fs4_handle, "Tcp_Close_byT"); + + fs4_rt->metrics_ids[0][SAPP_STAT_TCP_CLOSE_BY_KICKOUT] = fieldstat_easy_register_counter(fs4_handle, "Tcp_Close_byK"); + + fs4_rt->metrics_ids[0][SAPP_STAT_RCV_UDP] = fieldstat_easy_register_counter(fs4_handle, "Udp_Pkt"); + fs4_rt->metrics_ids[1][SAPP_STAT_RCV_UDP] = fieldstat_easy_register_counter(fs4_handle, "Udp_Bit"); + + fs4_rt->metrics_ids[0][SAPP_STAT_RCV_DUP_UDP] = fieldstat_easy_register_counter(fs4_handle, "Dup_Udp_Pkt"); + fs4_rt->metrics_ids[1][SAPP_STAT_RCV_DUP_UDP] = fieldstat_easy_register_counter(fs4_handle, "Dup_Udp_Bit"); + + fs4_rt->metrics_ids[0][SAPP_STAT_UDP_CLOSE_BY_TIMEOUT] = fieldstat_easy_register_counter(fs4_handle, "Udp_Close_byT"); + + fs4_rt->metrics_ids[0][SAPP_STAT_UDP_CLOSE_BY_KICKOUT] = fieldstat_easy_register_counter(fs4_handle, "Udp_Close_byK"); + + fs4_rt->metrics_ids[0][SAPP_STAT_TCP_STREAM_NEW] = fieldstat_easy_register_counter(fs4_handle, "Tcp_Link_New"); + fs4_rt->metrics_ids[0][SAPP_STAT_TCP_STREAM_DEL] = fieldstat_easy_register_counter(fs4_handle, "Tcp_Link_Del"); + fs4_rt->metrics_ids[0][SAPP_STAT_TCP_STREAM_DATA] = fieldstat_easy_register_counter(fs4_handle, "Tcp_Concurrent"); + + fs4_rt->metrics_ids[0][SAPP_STAT_UDP_STREAM_NEW] = fieldstat_easy_register_counter(fs4_handle, "Udp_Link_New"); + fs4_rt->metrics_ids[0][SAPP_STAT_UDP_STREAM_DEL] = fieldstat_easy_register_counter(fs4_handle, "Udp_Link_Del"); + fs4_rt->metrics_ids[0][SAPP_STAT_UDP_STREAM_MORE] = fieldstat_easy_register_counter(fs4_handle, "Udp_Concurrent"); + + fs4_rt->metrics_ids[0][SAPP_STAT_TCP_STREAM_DOUBLE] = fieldstat_easy_register_counter(fs4_handle, "Tcp_Link_Double"); + fs4_rt->metrics_ids[0][SAPP_STAT_TCP_STREAM_C2S] = fieldstat_easy_register_counter(fs4_handle, "Tcp_Link_C2S"); + fs4_rt->metrics_ids[0][SAPP_STAT_TCP_STREAM_S2C] = fieldstat_easy_register_counter(fs4_handle, "Tcp_Link_S2C"); + + fs4_rt->metrics_ids[0][SAPP_STAT_TCP_STREAM_TOTAL_DOUBLE] = fieldstat_easy_register_counter(fs4_handle, "Tcp_Link_Double_ALL"); + fs4_rt->metrics_ids[0][SAPP_STAT_TCP_STREAM_TOTAL_C2S] = fieldstat_easy_register_counter(fs4_handle, "Tcp_Link_C2S_ALL"); + fs4_rt->metrics_ids[0][SAPP_STAT_TCP_STREAM_TOTAL_S2C] = fieldstat_easy_register_counter(fs4_handle, "Tcp_Link_S2C_ALL"); + + + fs4_rt->metrics_ids[0][SAPP_STAT_UDP_STREAM_DOUBLE] = fieldstat_easy_register_counter(fs4_handle, "Udp_Link_Double"); + fs4_rt->metrics_ids[0][SAPP_STAT_UDP_STREAM_C2S] = fieldstat_easy_register_counter(fs4_handle, "Udp_Link_C2S"); + fs4_rt->metrics_ids[0][SAPP_STAT_UDP_STREAM_S2C] = fieldstat_easy_register_counter(fs4_handle, "Udp_Link_S2C"); + + fs4_rt->metrics_ids[0][SAPP_STAT_UDP_STREAM_TOTAL_DOUBLE] = fieldstat_easy_register_counter(fs4_handle, "Udp_Link_Double_ALL"); + fs4_rt->metrics_ids[0][SAPP_STAT_UDP_STREAM_TOTAL_C2S] = fieldstat_easy_register_counter(fs4_handle, "Udp_Link_C2S_ALL"); + fs4_rt->metrics_ids[0][SAPP_STAT_UDP_STREAM_TOTAL_S2C] = fieldstat_easy_register_counter(fs4_handle, "Udp_Link_S2C_ALL"); + + fs4_rt->metrics_ids[0][SAPP_STAT_SND_TCP_RST] = fieldstat_easy_register_counter(fs4_handle, "Send_Tcp_Rst"); + fs4_rt->metrics_ids[0][SAPP_STAT_SND_TCP_SYNACK] = fieldstat_easy_register_counter(fs4_handle, "Send_Tcp_S/A"); + fs4_rt->metrics_ids[0][SAPP_STAT_SND_UDP] = fieldstat_easy_register_counter(fs4_handle, "Send_Udp"); + + fs4_rt->metrics_ids[0][SAPP_STAT_GLOBAL_BYPASS] = fieldstat_easy_register_counter(fs4_handle, "DDOS_Bypass"); + + fs4_rt->metrics_ids[0][SAPP_STAT_TCP_BYPASS_STREAM] = fieldstat_easy_register_counter(fs4_handle, "Tcp_Bypass_STM"); + fs4_rt->metrics_ids[0][SAPP_STAT_TCP_BYPASS_PKTS] = fieldstat_easy_register_counter(fs4_handle, "Tcp_Bypass_Pkt"); + fs4_rt->metrics_ids[1][SAPP_STAT_TCP_BYPASS_BYTES] = fieldstat_easy_register_counter(fs4_handle, "Tcp_Bypass_Bit"); + + fs4_rt->metrics_ids[0][SAPP_STAT_UDP_BYPASS_STREAM] = fieldstat_easy_register_counter(fs4_handle, "Udp_Bypass_STM"); + fs4_rt->metrics_ids[0][SAPP_STAT_UDP_BYPASS_PKTS] = fieldstat_easy_register_counter(fs4_handle, "Udp_Bypass_Pkt"); + fs4_rt->metrics_ids[1][SAPP_STAT_UDP_BYPASS_BYTES] = fieldstat_easy_register_counter(fs4_handle, "Udp_Bypass_Bit"); + + fs4_rt->metrics_ids[0][SAPP_STAT_UDP_DUP_KICK_STREAM] = fieldstat_easy_register_counter(fs4_handle, "Udp_DUP_STM"); + fs4_rt->metrics_ids[0][SAPP_STAT_TCP_OPENING_OVERSPEED] = fieldstat_easy_register_counter(fs4_handle, "Tcp_OPEN_SPD"); + fs4_rt->metrics_ids[0][SAPP_STAT_UDP_OPENING_OVERSPEED] = fieldstat_easy_register_counter(fs4_handle, "Udp_OPEN_SPD"); + fs4_rt->metrics_ids[0][SAPP_STAT_TCP_TIMEOUTS_OVERSPEED] = fieldstat_easy_register_counter(fs4_handle, "Tcp_TIMED_SPD"); + fs4_rt->metrics_ids[0][SAPP_STAT_UDP_TIMEOUTS_OVERSPEED] = fieldstat_easy_register_counter(fs4_handle, "Udp_TIMED_SPD"); + fs4_rt->metrics_ids[0][SAPP_STAT_TCP_TRY_TIMEOUTS] = fieldstat_easy_register_counter(fs4_handle, "Tcp_TRY_TIMED"); + fs4_rt->metrics_ids[0][SAPP_STAT_UDP_TRY_TIMEOUTS] = fieldstat_easy_register_counter(fs4_handle, "Udp_TRY_TIMED"); + + + const sapp_dup_pkt_t *dup_cfg = &global_paramters->config.packet_io.dup_pkt_para; + if (dup_cfg->kickout_udp_stream_enabled + || dup_cfg->dup_pkt_distinguish_ipv4_tcp + || dup_cfg->dup_pkt_distinguish_ipv4_udp + || dup_cfg->dup_pkt_distinguish_all_inject) + { + fs4_rt->metrics_ids[0][SAPP_STAT_BM_HASH_NUM] = fieldstat_easy_register_counter(fs4_handle, "BM_HASH_NUM"); + + fs4_rt->metrics_ids[0][SAPP_STAT_BM_EXPAND_NUM] = fieldstat_easy_register_counter(fs4_handle, "BM_EXPAND"); + fs4_rt->metrics_ids[0][SAPP_STAT_BM_SLICE_NUM_NEW] = fieldstat_easy_register_counter(fs4_handle, "BM_SLICE_NEW"); + fs4_rt->metrics_ids[0][SAPP_STAT_BM_SLICE_NUM_FREE] = fieldstat_easy_register_counter(fs4_handle, "BM_SLICE_FREE"); + fs4_rt->metrics_ids[0][SAPP_STAT_BM_CUR_SLICE_NUM] = fieldstat_easy_register_counter(fs4_handle, "BM_MAX_SLICE"); + fs4_rt->metrics_ids[0][SAPP_STAT_APBM_EXPAND_MAX_MULTIPLE] = fieldstat_easy_register_counter(fs4_handle, "APBM_EXPAND_MULTIPLE"); + fs4_rt->metrics_ids[0][SAPP_STAT_DABM_RESIZE_MAX_RATIO] = fieldstat_easy_register_counter(fs4_handle, "DABM_MAX_RESIZE_RATIO"); + } + return 0; +} + +static int sapp_fs4_start(sapp_global_t *global_paramters) +{ + sapp_config_profiling_metric_t *fs4_para = &global_paramters->config.profiling.fs4; + sapp_gval_individual_fixed_fs4_t *fs4_rt = &global_paramters->individual_fixed.fs4_runtime; + struct fieldstat_easy *fs4_handle = fs4_rt->fs_metric_handle; + + fieldstat_easy_enable_auto_output(fs4_handle, ABBR_FS4_LOG_DATA_FILE, fs4_para->refresh_interval_s); + fieldstat_easy_enable_delta_in_active_output(fs4_handle); + return 0; +} + + +static void sapp_fs4_destroy(sapp_global_t *global_paramters) +{ + sapp_gval_individual_fixed_fs4_t *fs4_rt = &global_paramters->individual_fixed.fs4_runtime; + fieldstat_easy_free(fs4_rt->fs_metric_handle); +} int sapp_metric_init(void) { @@ -682,6 +850,10 @@ int sapp_metric_init(void) { sapp_fs3_init(sapp_global_val); } + if( sapp_global_val->config.profiling.fs4.enabled == 1) + { + sapp_fs4_init(sapp_global_val); + } if( sapp_global_val->config.profiling.histogram_enabled == 1) { sapp_process_latency_metric_init(sapp_global_val); @@ -701,6 +873,10 @@ int sapp_metric_start(void) { sapp_fs3_start(sapp_global_val); } + if( sapp_global_val->config.profiling.fs4.enabled == 1) + { + sapp_fs4_start(sapp_global_val); + } if( sapp_global_val->config.profiling.histogram_enabled == 1) { if(sapp_global_val->individual_fixed.fs2_runtime.fs_process_lantency_handle) @@ -722,6 +898,10 @@ void sapp_metric_destroy(void) { sapp_fs3_destroy(sapp_global_val); } + if( sapp_global_val->config.profiling.fs4.enabled == 1) + { + sapp_fs4_destroy(sapp_global_val); + } if( sapp_global_val->config.profiling.histogram_enabled == 1) { if (sapp_global_val->individual_fixed.fs2_runtime.fs_process_lantency_handle) diff --git a/src/packet_io/packet_io_status.cpp b/src/packet_io/packet_io_status.cpp index 4f1f81a..6109af9 100644 --- a/src/packet_io/packet_io_status.cpp +++ b/src/packet_io/packet_io_status.cpp @@ -256,6 +256,124 @@ static void packet_io_update_metrics_fs3(void) return; } + +static void packet_io_update_metrics_fs4(void) +{ + sapp_fs4_metric_incrby(0, SAPP_STAT_RCV_UNKNOWN,cur_count[SAPP_STAT_RCV_UNKNOWN]-history_count[SAPP_STAT_RCV_UNKNOWN]); + sapp_fs4_metric_incrby(1, SAPP_STAT_RCV_UNKNOWN, 8 *( cur_length[SAPP_STAT_RCV_UNKNOWN]-history_length[SAPP_STAT_RCV_UNKNOWN])); /* to bps, bit per second */ + + sapp_fs4_metric_incrby(0, SAPP_STAT_RCV_LINE,cur_count[SAPP_STAT_RCV_LINE]-history_count[SAPP_STAT_RCV_LINE]); + sapp_fs4_metric_incrby(1, SAPP_STAT_RCV_LINE, 8 *( cur_length[SAPP_STAT_RCV_LINE]-history_length[SAPP_STAT_RCV_LINE])); /* to bps, bit per second */ + + sapp_fs4_metric_incrby(0, SAPP_STAT_SND_ERROR,cur_count[SAPP_STAT_SND_ERROR]-history_count[SAPP_STAT_SND_ERROR]); + sapp_fs4_metric_incrby(1, SAPP_STAT_SND_ERROR, 8 *( cur_length[SAPP_STAT_SND_ERROR]-history_length[SAPP_STAT_SND_ERROR])); /* to bps, bit per second */ + + sapp_fs4_metric_incrby(0, SAPP_STAT_RCV_ETHERNET,cur_count[SAPP_STAT_RCV_ETHERNET]-history_count[SAPP_STAT_RCV_ETHERNET]); + sapp_fs4_metric_incrby(1, SAPP_STAT_RCV_ETHERNET, 8 *( cur_length[SAPP_STAT_RCV_ETHERNET]-history_length[SAPP_STAT_RCV_ETHERNET])); /* to bps, bit per second */ + + if((DEPLOYMENT_MODE_INLINE == sapp_global_val->config.packet_io.deployment_mode_bin) + || (DEPLOYMENT_MODE_TRANSPARENT == sapp_global_val->config.packet_io.deployment_mode_bin)){ + sapp_fs4_metric_incrby(0, SAPP_STAT_ETH_INBOUND, cur_count[SAPP_STAT_ETH_INBOUND] - history_count[SAPP_STAT_ETH_INBOUND]); + sapp_fs4_metric_incrby(1, SAPP_STAT_ETH_INBOUND, 8 * (cur_length[SAPP_STAT_ETH_INBOUND] - history_length[SAPP_STAT_ETH_INBOUND])); /* to bps, bit per second */ + + sapp_fs4_metric_incrby(0, SAPP_STAT_ETH_OUTBOUND, cur_count[SAPP_STAT_ETH_OUTBOUND] - history_count[SAPP_STAT_ETH_OUTBOUND]); + sapp_fs4_metric_incrby(1, SAPP_STAT_ETH_OUTBOUND, 8 * (cur_length[SAPP_STAT_ETH_OUTBOUND] - history_length[SAPP_STAT_ETH_OUTBOUND])); /* to bps, bit per second */ + } + sapp_fs4_metric_incrby(0, SAPP_STAT_RCV_IPV4,cur_count[SAPP_STAT_RCV_IPV4]-history_count[SAPP_STAT_RCV_IPV4]); + sapp_fs4_metric_incrby(1, SAPP_STAT_RCV_IPV4, 8 *( cur_length[SAPP_STAT_RCV_IPV4]-history_length[SAPP_STAT_RCV_IPV4])); /* to bps, bit per second */ + + sapp_fs4_metric_incrby(0, SAPP_STAT_RCV_IPV6,cur_count[SAPP_STAT_RCV_IPV6]-history_count[SAPP_STAT_RCV_IPV6]); + sapp_fs4_metric_incrby(1, SAPP_STAT_RCV_IPV6, 8 *( cur_length[SAPP_STAT_RCV_IPV6]-history_length[SAPP_STAT_RCV_IPV6])); /* to bps, bit per second */ + + sapp_fs4_metric_incrby(0, SAPP_STAT_RCV_TCP,cur_count[SAPP_STAT_RCV_TCP]-history_count[SAPP_STAT_RCV_TCP]); + sapp_fs4_metric_incrby(1, SAPP_STAT_RCV_TCP, 8 *( cur_length[SAPP_STAT_RCV_TCP]-history_length[SAPP_STAT_RCV_TCP])); /* to bps, bit per second */ + + sapp_fs4_metric_incrby(0, SAPP_STAT_RCV_DUP_TCP,cur_count[SAPP_STAT_RCV_DUP_TCP]-history_count[SAPP_STAT_RCV_DUP_TCP]); + sapp_fs4_metric_incrby(1, SAPP_STAT_RCV_DUP_TCP, 8 *( cur_length[SAPP_STAT_RCV_DUP_TCP]-history_length[SAPP_STAT_RCV_DUP_TCP])); /* to bps, bit per second */ + sapp_fs4_metric_incrby(0, SAPP_STAT_DUP_IDENTIFY_ERR,cur_count[SAPP_STAT_DUP_IDENTIFY_ERR]-history_count[SAPP_STAT_DUP_IDENTIFY_ERR]); + + sapp_fs4_metric_incrby(1, SAPP_STAT_TCP_LOST_PKT, 8 *( cur_length[SAPP_STAT_TCP_LOST_PKT]-history_length[SAPP_STAT_TCP_LOST_PKT])); /* to bps, bit per second */ + sapp_fs4_metric_incrby(0, SAPP_STAT_TCP_LOST_PKT_STREAM_NUM,cur_count[SAPP_STAT_TCP_LOST_PKT_STREAM_NUM]-history_count[SAPP_STAT_TCP_LOST_PKT_STREAM_NUM]); + + sapp_fs4_metric_incrby(0, SAPP_STAT_TCP_CLOSE_BY_TIMEOUT,cur_count[SAPP_STAT_TCP_CLOSE_BY_TIMEOUT]-history_count[SAPP_STAT_TCP_CLOSE_BY_TIMEOUT]); + sapp_fs4_metric_incrby(0, SAPP_STAT_TCP_CLOSE_BY_KICKOUT,cur_count[SAPP_STAT_TCP_CLOSE_BY_KICKOUT]-history_count[SAPP_STAT_TCP_CLOSE_BY_KICKOUT]); + + sapp_fs4_metric_incrby(0, SAPP_STAT_RCV_UDP,cur_count[SAPP_STAT_RCV_UDP]-history_count[SAPP_STAT_RCV_UDP]); + sapp_fs4_metric_incrby(1, SAPP_STAT_RCV_UDP, 8 *( cur_length[SAPP_STAT_RCV_UDP]-history_length[SAPP_STAT_RCV_UDP])); /* to bps, bit per second */ + + sapp_fs4_metric_incrby(0, SAPP_STAT_RCV_DUP_UDP,cur_count[SAPP_STAT_RCV_DUP_UDP]-history_count[SAPP_STAT_RCV_DUP_UDP]); + sapp_fs4_metric_incrby(1, SAPP_STAT_RCV_DUP_UDP, 8 *( cur_length[SAPP_STAT_RCV_DUP_UDP]-history_length[SAPP_STAT_RCV_DUP_UDP])); /* to bps, bit per second */ + + sapp_fs4_metric_incrby(0, SAPP_STAT_UDP_CLOSE_BY_TIMEOUT,cur_count[SAPP_STAT_UDP_CLOSE_BY_TIMEOUT]-history_count[SAPP_STAT_UDP_CLOSE_BY_TIMEOUT]); + sapp_fs4_metric_incrby(0, SAPP_STAT_UDP_CLOSE_BY_KICKOUT,cur_count[SAPP_STAT_UDP_CLOSE_BY_KICKOUT]-history_count[SAPP_STAT_UDP_CLOSE_BY_KICKOUT]); + + sapp_fs4_metric_incrby(0, SAPP_STAT_TCP_STREAM_NEW,cur_count[SAPP_STAT_TCP_STREAM_NEW]-history_count[SAPP_STAT_TCP_STREAM_NEW]); + sapp_fs4_metric_incrby(0, SAPP_STAT_TCP_STREAM_DEL,cur_count[SAPP_STAT_TCP_STREAM_DEL]-history_count[SAPP_STAT_TCP_STREAM_DEL]); + sapp_fs4_metric_incrby(0, SAPP_STAT_TCP_STREAM_DATA,cur_count[SAPP_STAT_TCP_STREAM_DATA]); + + sapp_fs4_metric_incrby(0, SAPP_STAT_UDP_STREAM_NEW,cur_count[SAPP_STAT_UDP_STREAM_NEW]-history_count[SAPP_STAT_UDP_STREAM_NEW]); + sapp_fs4_metric_incrby(0, SAPP_STAT_UDP_STREAM_DEL,cur_count[SAPP_STAT_UDP_STREAM_DEL]-history_count[SAPP_STAT_UDP_STREAM_DEL]); + sapp_fs4_metric_incrby(0, SAPP_STAT_UDP_STREAM_MORE,cur_count[SAPP_STAT_UDP_STREAM_MORE]); + + sapp_fs4_metric_set(0, SAPP_STAT_TCP_STREAM_DOUBLE,cur_count[SAPP_STAT_TCP_STREAM_DOUBLE]); + sapp_fs4_metric_set(0, SAPP_STAT_TCP_STREAM_C2S,cur_count[SAPP_STAT_TCP_STREAM_C2S]); + sapp_fs4_metric_set(0, SAPP_STAT_TCP_STREAM_S2C,cur_count[SAPP_STAT_TCP_STREAM_S2C]); + + sapp_fs4_metric_set(0, SAPP_STAT_TCP_STREAM_TOTAL_DOUBLE,cur_count[SAPP_STAT_TCP_STREAM_TOTAL_DOUBLE]); + sapp_fs4_metric_set(0, SAPP_STAT_TCP_STREAM_TOTAL_C2S,cur_count[SAPP_STAT_TCP_STREAM_TOTAL_C2S]); + sapp_fs4_metric_set(0, SAPP_STAT_TCP_STREAM_TOTAL_S2C,cur_count[SAPP_STAT_TCP_STREAM_TOTAL_S2C]); + + sapp_fs4_metric_set(0, SAPP_STAT_UDP_STREAM_DOUBLE,cur_count[SAPP_STAT_UDP_STREAM_DOUBLE]); + sapp_fs4_metric_set(0, SAPP_STAT_UDP_STREAM_C2S,cur_count[SAPP_STAT_UDP_STREAM_C2S]); + sapp_fs4_metric_set(0, SAPP_STAT_UDP_STREAM_S2C,cur_count[SAPP_STAT_UDP_STREAM_S2C]); + + sapp_fs4_metric_set(0, SAPP_STAT_UDP_STREAM_TOTAL_DOUBLE,cur_count[SAPP_STAT_UDP_STREAM_TOTAL_DOUBLE]); + sapp_fs4_metric_set(0, SAPP_STAT_UDP_STREAM_TOTAL_C2S,cur_count[SAPP_STAT_UDP_STREAM_TOTAL_C2S]); + sapp_fs4_metric_set(0, SAPP_STAT_UDP_STREAM_TOTAL_S2C,cur_count[SAPP_STAT_UDP_STREAM_TOTAL_S2C]); + + sapp_fs4_metric_incrby(0, SAPP_STAT_SND_TCP_RST,cur_count[SAPP_STAT_SND_TCP_RST]-history_count[SAPP_STAT_SND_TCP_RST]); + sapp_fs4_metric_incrby(0, SAPP_STAT_SND_TCP_SYNACK,cur_count[SAPP_STAT_SND_TCP_SYNACK]-history_count[SAPP_STAT_SND_TCP_SYNACK]); + sapp_fs4_metric_incrby(0, SAPP_STAT_SND_UDP,cur_count[SAPP_STAT_SND_UDP]-history_count[SAPP_STAT_SND_UDP]); + + sapp_fs4_metric_set(0, SAPP_STAT_GLOBAL_BYPASS,packet_io_under_ddos_global_status()); + + sapp_fs4_metric_incrby(0, SAPP_STAT_TCP_BYPASS_STREAM,cur_count[SAPP_STAT_TCP_BYPASS_STREAM]-history_count[SAPP_STAT_TCP_BYPASS_STREAM]); + sapp_fs4_metric_incrby(0, SAPP_STAT_TCP_BYPASS_PKTS,cur_count[SAPP_STAT_TCP_BYPASS_PKTS]-history_count[SAPP_STAT_TCP_BYPASS_PKTS]); + sapp_fs4_metric_incrby(0, SAPP_STAT_TCP_BYPASS_BYTES,cur_count[SAPP_STAT_TCP_BYPASS_BYTES]-history_count[SAPP_STAT_TCP_BYPASS_BYTES]); + + sapp_fs4_metric_incrby(0, SAPP_STAT_UDP_BYPASS_STREAM,cur_count[SAPP_STAT_UDP_BYPASS_STREAM]-history_count[SAPP_STAT_UDP_BYPASS_STREAM]); + sapp_fs4_metric_incrby(0, SAPP_STAT_UDP_BYPASS_PKTS,cur_count[SAPP_STAT_UDP_BYPASS_PKTS]-history_count[SAPP_STAT_UDP_BYPASS_PKTS]); + sapp_fs4_metric_incrby(0, SAPP_STAT_UDP_BYPASS_BYTES,cur_count[SAPP_STAT_UDP_BYPASS_BYTES]-history_count[SAPP_STAT_UDP_BYPASS_BYTES]); + + sapp_fs4_metric_incrby(0, SAPP_STAT_UDP_DUP_KICK_STREAM,cur_count[SAPP_STAT_UDP_DUP_KICK_STREAM]-history_count[SAPP_STAT_UDP_DUP_KICK_STREAM]); + + + sapp_fs4_metric_incrby(0, SAPP_STAT_TCP_OPENING_OVERSPEED,cur_count[SAPP_STAT_TCP_OPENING_OVERSPEED]-history_count[SAPP_STAT_TCP_OPENING_OVERSPEED]); + sapp_fs4_metric_incrby(0, SAPP_STAT_UDP_OPENING_OVERSPEED,cur_count[SAPP_STAT_UDP_OPENING_OVERSPEED]-history_count[SAPP_STAT_UDP_OPENING_OVERSPEED]); + sapp_fs4_metric_incrby(0, SAPP_STAT_TCP_TIMEOUTS_OVERSPEED,cur_count[SAPP_STAT_TCP_TIMEOUTS_OVERSPEED]-history_count[SAPP_STAT_TCP_TIMEOUTS_OVERSPEED]); + sapp_fs4_metric_incrby(0, SAPP_STAT_UDP_TIMEOUTS_OVERSPEED,cur_count[SAPP_STAT_UDP_TIMEOUTS_OVERSPEED]-history_count[SAPP_STAT_UDP_TIMEOUTS_OVERSPEED]); + + sapp_fs4_metric_incrby(0, SAPP_STAT_TCP_TRY_TIMEOUTS,cur_count[SAPP_STAT_TCP_TRY_TIMEOUTS]-history_count[SAPP_STAT_TCP_TRY_TIMEOUTS]); + sapp_fs4_metric_incrby(0, SAPP_STAT_UDP_TRY_TIMEOUTS,cur_count[SAPP_STAT_UDP_TRY_TIMEOUTS]-history_count[SAPP_STAT_UDP_TRY_TIMEOUTS]); + + const sapp_dup_pkt_t *dup_cfg = &sapp_global_val->config.packet_io.dup_pkt_para; + if (dup_cfg->kickout_udp_stream_enabled + || dup_cfg->dup_pkt_distinguish_ipv4_tcp + || dup_cfg->dup_pkt_distinguish_ipv4_udp + || dup_cfg->dup_pkt_distinguish_all_inject) + { + sapp_fs4_metric_set(0, SAPP_STAT_BM_HASH_NUM, cur_count[SAPP_STAT_BM_HASH_NUM]); + sapp_fs4_metric_incrby(0, SAPP_STAT_BM_EXPAND_NUM, cur_count[SAPP_STAT_BM_EXPAND_NUM]-history_count[SAPP_STAT_BM_EXPAND_NUM]); + sapp_fs4_metric_incrby(0, SAPP_STAT_BM_SLICE_NUM_NEW, cur_count[SAPP_STAT_BM_SLICE_NUM_NEW]-history_count[SAPP_STAT_BM_SLICE_NUM_NEW]); + sapp_fs4_metric_incrby(0, SAPP_STAT_BM_SLICE_NUM_FREE, cur_count[SAPP_STAT_BM_SLICE_NUM_FREE]-history_count[SAPP_STAT_BM_SLICE_NUM_FREE]); + sapp_fs4_metric_set(0, SAPP_STAT_BM_CUR_SLICE_NUM, cur_count[SAPP_STAT_BM_CUR_SLICE_NUM]); + sapp_fs4_metric_set(0, SAPP_STAT_APBM_EXPAND_MAX_MULTIPLE, cur_count[SAPP_STAT_APBM_EXPAND_MAX_MULTIPLE]); + sapp_fs4_metric_set(0, SAPP_STAT_DABM_RESIZE_MAX_RATIO, cur_count[SAPP_STAT_DABM_RESIZE_MAX_RATIO]); + } + + return; +} + static void packet_io_update_metrics(void) { if (1 == sapp_global_val->config.profiling.fs2.enabled ) @@ -266,6 +384,10 @@ static void packet_io_update_metrics(void) { packet_io_update_metrics_fs3(); } + if (1 == sapp_global_val->config.profiling.fs4.enabled ) + { + packet_io_update_metrics_fs4(); + } return; } @@ -299,7 +421,7 @@ static void sysinfo_output_per_layer_stat(FILE *fp) stat_sum += sum_count_per_layer[layer_type][layer_num]; } if(0 == stat_sum){ - continue; /* ����ȫ��0�IJ�Ͳ���ʾ�� */ + continue; /* ����ȫ��0�IJ�Ͳ���ʾ�� */ } fprintf(fp,"%-10s %12llu %12llu %12llu %12llu %12llu %12llu %12llu %12llu\n", addr_type_abbreviation_ntop((enum addr_type_t)layer_type), @@ -313,10 +435,10 @@ static void sysinfo_output_per_layer_stat(FILE *fp) stat_sum = 0; for(layer_num = 0; layer_num < SAPP_SUPPORT_LAYER_NUM_MAX; layer_num++){ stat_sum += sum_length_per_layer[layer_type][layer_num]; - byte_convert_human(sum_length_per_layer[layer_type][layer_num], 1, 1, layer_length_human_str[layer_num]); /* �ܼ��ֽ���, �˴���������������, ���ܳ���8 */ + byte_convert_human(sum_length_per_layer[layer_type][layer_num], 1, 1, layer_length_human_str[layer_num]); /* �ܼ��ֽ���, �˴���������������, ���ܳ���8 */ } if(0 == stat_sum){ - continue; /* ����ȫ��0�IJ�Ͳ���ʾ�� */ + continue; /* ����ȫ��0�IJ�Ͳ���ʾ�� */ } fprintf(fp,"%-10s %12s %12s %12s %12s %12s %12s %12s %12s\n", addr_type_abbreviation_ntop((enum addr_type_t)layer_type), diff --git a/src/sapp_dev/sapp_global_val.c b/src/sapp_dev/sapp_global_val.c index b2e5959..07fb92d 100644 --- a/src/sapp_dev/sapp_global_val.c +++ b/src/sapp_dev/sapp_global_val.c @@ -18,62 +18,62 @@ extern char g_cmd_args_main_cfg_file[PATH_MAX]; extern int g_sapp_global_mem_used_block; extern int g_sapp_global_mem_used_bytes; -/* ����ʱ��ʹ��ȫ�ֱ���, �Ժ�̬��ȡ�����ļ�, - overlay�㶨��, ����vxlan�Ļ�����, overlay�����IJ�, eth[0], ipv4[1], udp[2], vxlan[3], ��Щ�㲻��ԭʼ������, ��Ϊ�˱��ڷ�����������IJ�, ���ܵ��ò��, - ��ʵ�ʻ�ע������ʱҲҪЯ��, +/* ����ʱ��ʹ��ȫ�ֱ���, �Ժ�̬��ȡ�����ļ�, + overlay�㶨��, ����vxlan�Ļ�����, overlay�����IJ�, eth[0], ipv4[1], udp[2], vxlan[3], ��Щ�㲻��ԭʼ������, ��Ϊ�˱��ڷ�����������IJ�, ���ܵ��ò��, + ��ʵ�ʻ�ע������ʱҲҪЯ��, - TODO, ��vxlan��������ô��? - ��gdev_keepaliveģ���Ƶ�sapp�ڲ�, ����Ϊ���.so����, ʹ��sapp.toml���ؿ��ƶ����ǿ�plug conflist����. + TODO, ��vxlan��������ô��? + ��gdev_keepaliveģ���Ƶ�sapp�ڲ�, ����Ϊ���.so����, ʹ��sapp.toml���ؿ��ƶ����ǿ�plug conflist����. - TODO: �ƶ���ȫ�ֱ���sapp_global_val��. + TODO: �ƶ���ȫ�ֱ���sapp_global_val��. */ int g_overlay_layer_set[__ADDR_TYPE_MAX][SAPP_SUPPORT_LAYER_NUM_MAX]; /* - ע������㶨��, ������ʱ�����˲�, - mirrorģʽ��, ������ע��㲻һ��ʱ, ��rst��Ҫ����vlan, mpls, gtp�Ȳ�, - ��Ϊ����overlay, overlay��ʽ�϶���Ԥ�ȹ涨�õ�, ����ʵ������һ����Ԥ��ָ��ij��Э�����IJ�, - ����֧��ģ������, ��*��ʾ, ��vlan[*], gtp[*]��, ��ʾ����ʱ�����˲�϶�����, ��������һ��, - �����ip-in-ip, ip-gre-ip, 4over6, 6over4��������, ���������ipֱ��ע���ڲ�ip����Ԫ��, �Ƿdz�Σ�յ�, - ��Ϊ������д��ip[*], Ҳ����д��ip[1], ip[2]����, ��Ѳ��������Ĵ�ip/tcp������, - - �������ó�һ����ַ������, ����ͬʱ����ָ���������в�, ������. + ע������㶨��, ������ʱ�����˲�, + mirrorģʽ��, ������ע��㲻һ��ʱ, ��rst��Ҫ����vlan, mpls, gtp�Ȳ�, + ��Ϊ����overlay, overlay��ʽ�϶���Ԥ�ȹ涨�õ�, ����ʵ������һ����Ԥ��ָ��ij��Э�����IJ�, + ����֧��ģ������, ��*��ʾ, ��vlan[*], gtp[*]��, ��ʾ����ʱ�����˲�϶�����, ��������һ��, + �����ip-in-ip, ip-gre-ip, 4over6, 6over4��������, ���������ipֱ��ע���ڲ�ip����Ԫ��, �Ƿdz�Σ�յ�, + ��Ϊ������д��ip[*], Ҳ����д��ip[1], ip[2]����, ��Ѳ��������Ĵ�ip/tcp������, + + �������ó�һ����ַ������, ����ͬʱ����ָ���������в�, ������. */ /* - ����ʱ����ͬʱ����һ��������prune��������, ˳���Ǵ�internal��external, - ����֧��N����������, mirrorģʽ��, ��ײ��ethernetд��д������, + ����ʱ����ͬʱ����һ��������prune��������, ˳���Ǵ�internal��external, + ����֧��N����������, mirrorģʽ��, ��ײ��ethernetд��д������, - ����������Ŀgtpԭʼ������Ϊ: ethernet/ipv4/udp/gtp/ipv4/tcp/http, ����gtp������: "gtp[3],udp[2],ip[1]", + ����������Ŀgtpԭʼ������Ϊ: ethernet/ipv4/udp/gtp/ipv4/tcp/http, ����gtp������: "gtp[3],udp[2],ip[1]", - ����ijGRE����ԭʼ������Ϊ: ethernet/ipv4/gre/ipv4/udp/dns, �������������������: "gre[2],ip[1]", - TODO: �ƶ���ȫ�ֱ���sapp_global_val��. + ����ijGRE����ԭʼ������Ϊ: ethernet/ipv4/gre/ipv4/udp/dns, �������������������: "gre[2],ip[1]", + TODO: �ƶ���ȫ�ֱ���sapp_global_val��. */ embed_layer_t g_prune_inject_layer_set[SAPP_PRUNE_LAYER_NUM_MAX]; /* - ������Щ���ǷǶԳƴ��ڲ�, ��C2S��S2C�����п���û����һ��,���´�����compare_addrʱ����Գ�, ��Ҫ����һ���ղ�, ��ע���ʱ����ע��, ��Ҫ����. - TODO: �ƶ���ȫ�ֱ���sapp_global_val��. + ������Щ���ǷǶԳƴ��ڲ�, ��C2S��S2C�����п���û����һ��,���´�����compare_addrʱ����Գ�, ��Ҫ����һ���ղ�, ��ע���ʱ����ע��, ��Ҫ����. + TODO: �ƶ���ȫ�ֱ���sapp_global_val��. */ asymmetric_presence_layer_t g_asymmetric_presence_layer_set[__ADDR_TYPE_MAX]; /* - ��g_asymmetric_presence_layer_set���岻ͬ, ������Щ���Dz���һ����˫���ַ��һ�µIJ�, - ��C2S��S2C����IJ�����Ȼ��һ����,��˫��ĵ�ַ��һ��, ��������gtp, gre, mpls��, ethernet, vlanҲ�п���. - �������ע�����ݰ�, ������˫����, - ��Ҫ���¶Բ���Ϣ, ע���ʱ����ע��. - ����ǵ�����, �ҿ�����������, ����ע�����ʧ�ܵ�!! - TODO: �ƶ���ȫ�ֱ���sapp_global_val��. + ��g_asymmetric_presence_layer_set���岻ͬ, ������Щ���Dz���һ����˫���ַ��һ�µIJ�, + ��C2S��S2C����IJ�����Ȼ��һ����,��˫��ĵ�ַ��һ��, ��������gtp, gre, mpls��, ethernet, vlanҲ�п���. + �������ע�����ݰ�, ������˫����, + ��Ҫ���¶Բ���Ϣ, ע���ʱ����ע��. + ����ǵ�����, �ҿ�����������, ����ע�����ʧ�ܵ�!! + TODO: �ƶ���ȫ�ֱ���sapp_global_val��. */ embed_layer_t g_asymmetric_addr_layer_set; /* - ����ָ����ЩЭ�����Ϊ��ַ����, ����Ψһȷ��һ����, ���粻ͬ�����ڶ�ʹ��˽�е�ַʱ, ���п��ܳ�ͻ��, Ӧ�ðѵײ�vlan,mpls�Ȳ�Ҳ��Ϊ��ַ�Ƚϲ���, - TODO: �ƶ���ȫ�ֱ���sapp_global_val��. + ����ָ����ЩЭ�����Ϊ��ַ����, ����Ψһȷ��һ����, ���粻ͬ�����ڶ�ʹ��˽�е�ַʱ, ���п��ܳ�ͻ��, Ӧ�ðѵײ�vlan,mpls�Ȳ�Ҳ��Ϊ��ַ�Ƚϲ���, + TODO: �ƶ���ȫ�ֱ���sapp_global_val��. */ embed_layer_t g_stream_compare_layer_set; @@ -121,7 +121,7 @@ static void sapp_include_header_check_file(const char *file_name, const char *st return; } -/* ��ǰ���л����µ�.h����뻷���Ƿ�һ�� */ +/* ��ǰ���л����µ�.h����뻷���Ƿ�һ�� */ void sapp_include_header_check(void) { const char *hdr_dir; @@ -187,7 +187,7 @@ static inline int mem_alignment_pad(int size) void sapp_global_val_sanity_check(void) { - /* ���߳�ȫ�ֱ���size������64�ֽ�������, ������cache�����ͻ, ����Ӱ������ */ + /* ���߳�ȫ�ֱ���size������64�ֽ�������, ������cache�����ͻ, ����Ӱ������ */ if((sizeof(struct sapp_global_mthread_t) % 64) != 0){ printf("\033[1;31;40msizeof(struct sapp_global_mthread_t)=%zu, is not multiple of 64B!\033[0m\n", sizeof(struct sapp_global_mthread_t)); printf("\033[1;31;40mYou must add %d bytes padding to sapp_global_mthread_t!\033[0m\n", mem_alignment_pad(sizeof(struct sapp_global_mthread_t))); @@ -224,7 +224,7 @@ void sapp_gval_init(void) { int tseq; - /* �ڴ�ͳ�Ƶ������������Ǵ洢��ȫ�ֱ�����, �������м��������е�������, �˴�ֱ����ϵͳ��calloc, �������� */ + /* �ڴ�ͳ�Ƶ������������Ǵ洢��ȫ�ֱ�����, �������м��������е�������, �˴�ֱ����ϵͳ��calloc, �������� */ sapp_global_val = (sapp_global_t *)calloc(1, sizeof(sapp_global_t)); g_sapp_global_mem_used_block++; g_sapp_global_mem_used_bytes += sizeof(sapp_global_t); @@ -235,7 +235,7 @@ void sapp_gval_init(void) for(tseq = 0; tseq < SAPP_MAX_THREADS; tseq++){ sapp_global_val->mthread_volatile[tseq] = (sapp_gval_mthread_t *)calloc(1, sizeof(sapp_gval_mthread_t)); - sapp_global_val->individual_fixed.cpu_bind_core_id_per_thread[tseq] = -1; /* ��ʼ������Ϊ-1, ��ʾû���κ�һ��cpu core */ + sapp_global_val->individual_fixed.cpu_bind_core_id_per_thread[tseq] = -1; /* ��ʼ������Ϊ-1, ��ʾû���κ�һ��cpu core */ g_sapp_global_mem_used_block++; g_sapp_global_mem_used_bytes += sizeof(sapp_gval_mthread_t); } @@ -261,7 +261,7 @@ void sapp_gval_destroy(void) SAPP_GLOBAL_FREE(free_opt); } - SAPP_GLOBAL_FREE(sapp_global_val->cla.cmd_args_array);//�˴�ʹ����realloc��, Ҫ��sapp_mem_free() + SAPP_GLOBAL_FREE(sapp_global_val->cla.cmd_args_array);//�˴�ʹ����realloc��, Ҫ��sapp_mem_free() if (sapp_global_val->cla.dumpfie_list_array) { int num = 0; @@ -316,6 +316,8 @@ void sapp_gval_destroy(void) SAPP_GLOBAL_FREE(pdata->data_sapp_fs2_log_absolute); SAPP_GLOBAL_FREE(pdata->data_sapp_fs3_log_relative); SAPP_GLOBAL_FREE(pdata->data_sapp_fs3_log_absolute); + SAPP_GLOBAL_FREE(pdata->data_sapp_fs4_log_relative); + SAPP_GLOBAL_FREE(pdata->data_sapp_fs4_log_absolute); SAPP_GLOBAL_FREE(pdata->data_sapp_fs2_process_latency_absolute); SAPP_GLOBAL_FREE(pdata->data_sapp_fs2_process_latency_relative); SAPP_GLOBAL_FREE(pdata->data_inline_keepalive_log_relative); @@ -333,15 +335,15 @@ void sapp_gval_destroy(void) SAPP_GLOBAL_FREE(sapp_global_val->config.tools.pkt_dump.bpf_filter); SAPP_GLOBAL_FREE(sapp_global_val->config.tools.pkt_dump.storge_path); - /* individual_volatile, sapp_global_val���free */ + /* individual_volatile, sapp_global_val���free */ if(sapp_global_val->individual_volatile){ - free(sapp_global_val->individual_volatile); /* ��ʼ��ʱ��calloc, �˴�ֻ����free */ + free(sapp_global_val->individual_volatile); /* ��ʼ��ʱ��calloc, �˴�ֻ����free */ g_sapp_global_mem_used_block--; g_sapp_global_mem_used_bytes -= sizeof(sapp_gval_individual_volatile_t); } for(tseq = 0; tseq < SAPP_MAX_THREADS; tseq++){ - free(sapp_global_val->mthread_volatile[tseq]); /* ��ʼ��ʱ��calloc, �˴�ֻ����free */ + free(sapp_global_val->mthread_volatile[tseq]); /* ��ʼ��ʱ��calloc, �˴�ֻ����free */ g_sapp_global_mem_used_block--; g_sapp_global_mem_used_bytes -= sizeof(sapp_gval_mthread_t); } |
