diff --git a/common/include/kni_utils.h b/common/include/kni_utils.h index 8adc275..3830f7f 100644 --- a/common/include/kni_utils.h +++ b/common/include/kni_utils.h @@ -105,6 +105,7 @@ enum kni_field{ //pme KNI_FIELD_PME_NEW_SUCC, KNI_FIELD_PME_FREE, + KNI_FIELD_PME_CUR, //errors KNI_FIELD_SENDLOG_FAIL, KNI_FIELD_ID2PME_ADD_FAIL, @@ -117,8 +118,10 @@ enum kni_field{ //htable KNI_FIELD_ID2PME_ADD_SUCC, KNI_FIELD_ID2PME_DEL_SUCC, + KNI_FIELD_ID2PME_CUR, KNI_FIELD_TUPLE2STM_ADD_SUCC, KNI_FIELD_TUPLE2STM_DEL_SUCC, + KNI_FIELD_TUPLE2STM_CUR, //send_log KNI_FIELD_SENDLOG_SUCC, //sapp_inject diff --git a/docs/fs统计说明.md b/docs/fs统计说明.md index 8afba59..c262cfa 100644 --- a/docs/fs统计说明.md +++ b/docs/fs统计说明.md @@ -53,15 +53,24 @@ * 可拦截字节数 * pme_new / pme_free * 申请/释放了多少个流上下文 +* pme_cur + * 当前内存中有多少个pme +* id2pme_cur + * traceid2pme_htable中当前有多少个元素 +* tuple2stm_cur + * tuple2stream_htable中当前有多少元素 * bloom_hit - * hit表示识别出了重复包 -* 统计之间关系 - * intcp_stm = ipv4_stm + ipv6_stm = ssl_stm + http_stm - * byp_stm = byp_policy + byp_stm_err - * byp_stm_err = e_asym_route + e_no_syn + .... +e_cmsg_add - * pme_new = byp_stm + intcp_stm - * pme_new - pme_free = 当前未释放的流 - * ip2pme_add_S - id2pme_del_S = id2pme表当前的元素 - * tuple2stm_add_S - tuple2stm_del_S = tuple2stm表当前的元素 + * 被识别成重复包的个数 +* 各种统计之间关系 + + ```cpp + 1. 所有的流 = pme_new + = byp_stm + intcp_stm + 2. intcp_stm = ipv4_stm + ipv6_stm + = ssl_stm + http_stm + = dup_stm + 非dup + 3. byp_stm = byp_policy + byp_stm_err + 4. byp_stm_err = e_asym_route + e_no_syn + .... +e_cmsg_add + ``` diff --git a/entry/src/kni_entry.cpp b/entry/src/kni_entry.cpp index 597e57f..ceaf200 100644 --- a/entry/src/kni_entry.cpp +++ b/entry/src/kni_entry.cpp @@ -288,6 +288,7 @@ static void pme_info_destroy(void *data){ FREE(&pmeinfo); FS_operate(g_kni_fs_handle->handle, g_kni_fs_handle->fields[KNI_FIELD_PME_FREE], 0, FS_OP_ADD, 1); + FS_operate(g_kni_fs_handle->handle, g_kni_fs_handle->fields[KNI_FIELD_PME_CUR], 0, FS_OP_ADD, -1); } else{ KNI_LOG_ERROR(logger, "Failed at pme_info_destroy, pmeinfo = null"); @@ -912,6 +913,7 @@ static int tuple2stream_htable_add(MESA_htable_handle tuple2stream_htable, addr_ } else{ FS_operate(g_kni_fs_handle->handle, g_kni_fs_handle->fields[KNI_FIELD_TUPLE2STM_ADD_SUCC], 0, FS_OP_ADD, 1); + FS_operate(g_kni_fs_handle->handle, g_kni_fs_handle->fields[KNI_FIELD_TUPLE2STM_CUR], 0, FS_OP_ADD, 1); } } //ipv4 @@ -930,6 +932,7 @@ static int tuple2stream_htable_add(MESA_htable_handle tuple2stream_htable, addr_ //KNI_LOG_DEBUG(logger, "MESA_htable: Succeed at add, table = tuple2stream_htable, key = %s, key_size = %d, value = %p, ret = %d", key_str, sizeof(key), value, ret); FS_operate(g_kni_fs_handle->handle, g_kni_fs_handle->fields[KNI_FIELD_TUPLE2STM_ADD_SUCC], 0, FS_OP_ADD, 1); + FS_operate(g_kni_fs_handle->handle, g_kni_fs_handle->fields[KNI_FIELD_TUPLE2STM_CUR], 0, FS_OP_ADD, 1); } } return ret; @@ -989,6 +992,7 @@ static int traceid2pme_htable_add(struct pme_info *pmeinfo){ } else{ FS_operate(g_kni_fs_handle->handle, g_kni_fs_handle->fields[KNI_FIELD_ID2PME_ADD_SUCC], 0, FS_OP_ADD, 1); + FS_operate(g_kni_fs_handle->handle, g_kni_fs_handle->fields[KNI_FIELD_ID2PME_CUR], 0, FS_OP_ADD, 1); } return ret; } @@ -1011,6 +1015,7 @@ int tuple2stream_htable_del(MESA_htable_handle handle, const struct streaminfo * } else{ FS_operate(g_kni_fs_handle->handle, g_kni_fs_handle->fields[KNI_FIELD_TUPLE2STM_DEL_SUCC], 0, FS_OP_ADD, 1); + FS_operate(g_kni_fs_handle->handle, g_kni_fs_handle->fields[KNI_FIELD_TUPLE2STM_CUR], 0, FS_OP_ADD, -1); } } //ipv4 @@ -1029,6 +1034,7 @@ int tuple2stream_htable_del(MESA_htable_handle handle, const struct streaminfo * //KNI_LOG_DEBUG(logger, "MESA_htable: Succeed at del, table = %s, key = %s, key_size = %d, ret = %d", "tuple2stream_htable", key_str, sizeof(key), ret); FS_operate(g_kni_fs_handle->handle, g_kni_fs_handle->fields[KNI_FIELD_TUPLE2STM_DEL_SUCC], 0, FS_OP_ADD, 1); + FS_operate(g_kni_fs_handle->handle, g_kni_fs_handle->fields[KNI_FIELD_TUPLE2STM_CUR], 0, FS_OP_ADD, -1); } } return ret; @@ -1051,6 +1057,7 @@ static void traceid2pme_htable_del(struct pme_info *pmeinfo){ //KNI_LOG_DEBUG(logger, "MESA_htable: Succeed at del, table = %s, key = %s, key_size = %d", // "traceid2pme_htable", pmeinfo->stream_traceid, key_size); FS_operate(g_kni_fs_handle->handle, g_kni_fs_handle->fields[KNI_FIELD_ID2PME_DEL_SUCC], 0, FS_OP_ADD, 1); + FS_operate(g_kni_fs_handle->handle, g_kni_fs_handle->fields[KNI_FIELD_ID2PME_CUR], 0, FS_OP_ADD, -1); } } } @@ -1406,6 +1413,7 @@ extern "C" char kni_tcpall_entry(struct streaminfo *stream, void** pme, int thre //FS_operate(g_kni_fs_handle->handle, g_kni_fs_handle->fields[KNI_FIELD_STATE_PENDING], 0, FS_OP_ADD, 1); pmeinfo = ALLOC(struct pme_info, 1); FS_operate(g_kni_fs_handle->handle, g_kni_fs_handle->fields[KNI_FIELD_PME_NEW_SUCC], 0, FS_OP_ADD, 1); + FS_operate(g_kni_fs_handle->handle, g_kni_fs_handle->fields[KNI_FIELD_PME_CUR], 0, FS_OP_ADD, 1); *pme = pmeinfo; //stream error: pme init fail ret = pme_info_init(pmeinfo, stream, thread_seq); @@ -1969,6 +1977,7 @@ static struct kni_field_stat_handle * fs_init(const char *profile){ //pme fs_handle->fields[KNI_FIELD_PME_NEW_SUCC] = FS_register(handle, FS_STYLE_FIELD, FS_CALC_CURRENT, "pme_new"); fs_handle->fields[KNI_FIELD_PME_FREE] = FS_register(handle, FS_STYLE_FIELD, FS_CALC_CURRENT, "pme_free"); + fs_handle->fields[KNI_FIELD_PME_CUR] = FS_register(handle, FS_STYLE_FIELD, FS_CALC_CURRENT, "pme_cur"); //errors fs_handle->fields[KNI_FIELD_SENDLOG_FAIL] = FS_register(handle, FS_STYLE_FIELD, FS_CALC_CURRENT, "e_sendlog"); @@ -1983,8 +1992,10 @@ static struct kni_field_stat_handle * fs_init(const char *profile){ //htable fs_handle->fields[KNI_FIELD_ID2PME_ADD_SUCC] = FS_register(handle, FS_STYLE_FIELD, FS_CALC_CURRENT, "id2pme_add_S"); fs_handle->fields[KNI_FIELD_ID2PME_DEL_SUCC] = FS_register(handle, FS_STYLE_FIELD, FS_CALC_CURRENT, "id2pme_del_S"); + fs_handle->fields[KNI_FIELD_ID2PME_CUR] = FS_register(handle, FS_STYLE_FIELD, FS_CALC_CURRENT, "id2pme_cur"); fs_handle->fields[KNI_FIELD_TUPLE2STM_ADD_SUCC] = FS_register(handle, FS_STYLE_FIELD, FS_CALC_CURRENT, "tup2stm_add_S"); fs_handle->fields[KNI_FIELD_TUPLE2STM_DEL_SUCC] = FS_register(handle, FS_STYLE_FIELD, FS_CALC_CURRENT, "tup2stm_del_S"); + fs_handle->fields[KNI_FIELD_TUPLE2STM_CUR] = FS_register(handle, FS_STYLE_FIELD, FS_CALC_CURRENT, "tuple2stm_cur"); //sendlog fs_handle->fields[KNI_FIELD_SENDLOG_SUCC] = FS_register(handle, FS_STYLE_FIELD, FS_CALC_CURRENT, "sendlog_S"); @@ -2040,6 +2051,7 @@ static int traceid2pme_htable_expire_notify_cb(void *data, int eliminate_type){ can_destroy = judge_stream_can_destroy(pmeinfo, CALLER_TFE); if(can_destroy == 1){ FS_operate(g_kni_fs_handle->handle, g_kni_fs_handle->fields[KNI_FIELD_ID2PME_DEL_SUCC], 0, FS_OP_ADD, 1); + FS_operate(g_kni_fs_handle->handle, g_kni_fs_handle->fields[KNI_FIELD_ID2PME_CUR], 0, FS_OP_ADD, -1); stream_destroy(pmeinfo, pmeinfo->do_log); return 1; }