summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authoryangwei <[email protected]>2024-07-16 11:37:41 +0800
committeryangwei <[email protected]>2024-07-16 15:34:50 +0800
commit7d5aafea3d0eb667073f89fce53d1d0d3cc97b12 (patch)
tree0d3bffd92233742bb543d1465de726b0d646ae88
parente812eeead6504aefb6af49d7531f10616708d465 (diff)
✨ feat(sapp metrics): add fs4 as metrics exporter
-rw-r--r--CMakeLists.txt2
-rw-r--r--benchmark/sapp_default_config/etc/sapp.toml5
-rw-r--r--bin/etc/sapp.toml7
-rw-r--r--include/private/sapp_declaration.h8
-rw-r--r--include/private/sapp_global_val.h12
-rw-r--r--src/config/cmd_args.c57
-rw-r--r--src/config/config_parse.cpp17
-rw-r--r--src/extensions/sapp_metrics.cpp196
-rw-r--r--src/packet_io/packet_io_status.cpp128
-rw-r--r--src/sapp_dev/sapp_global_val.c76
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);
}