perf: 删除无效代码;修改变量命名;减少内存分配

This commit is contained in:
luwenpeng
2023-11-23 16:52:06 +08:00
parent cbac7fea29
commit bda50d79af
19 changed files with 2937 additions and 472 deletions

View File

@@ -99,7 +99,9 @@ int packet_get_outermost_two_tuple(const struct packet *handler, struct two_tupl
const struct layer_record *packet_get_innermost_layer(const struct packet *handler, enum layer_type type);
const struct layer_record *packet_get_outermost_layer(const struct packet *handler, enum layer_type type);
uint64_t packet_get_hash(const struct packet *handler, enum ldbc_method method, int dir_is_i2e);
// direction 1: E2I
// direction 0: I2E
uint64_t packet_get_hash(const struct packet *handler, enum ldbc_method method, int direction);
#ifdef __cpluscplus
}

View File

@@ -13,9 +13,8 @@ extern "C"
#define LOG_TAG_PKTIO "PACKET_IO"
#define LOG_TAG_RAWPKT "DATA_PACKET"
#define LOG_TAG_CTRLPKT "CTRL_PACKET"
#define LOG_TAG_METRICS "G_METRICS"
#define LOG_TAG_SF_METRICS "SF_METRICS"
#define LOG_TAG_SF_STATUS "SF_STATUS"
#define LOG_TAG_SFMETRICS "SF_METRICS"
#define LOG_TAG_SFSTATUS "SF_STATUS"
#define LOG_TAG_UTILS "UTILS"
#define LOG_TAG_HEALTH_CHECK "HEALTH_CHECK"
#define LOG_TAG_TIMESTAMP "TIMESTAMP"
@@ -66,7 +65,6 @@ struct sids
sid_t elems[MR_SID_LIST_MAXLEN];
};
void sids_write_once(struct sids *dst, struct sids *src);
void sids_copy(struct sids *dst, struct sids *src);
/******************************************************************************
@@ -79,7 +77,6 @@ struct route_ctx
int len;
};
void route_ctx_write_once(struct route_ctx *dst, struct route_ctx *src);
void route_ctx_copy(struct route_ctx *dst, struct route_ctx *src);
/******************************************************************************

View File

@@ -1175,7 +1175,9 @@ const struct layer_record *packet_get_outermost_layer(const struct packet *handl
return NULL;
}
uint64_t packet_get_hash(const struct packet *handler, enum ldbc_method method, int dir_is_i2e)
// direction 1: E2I
// direction 0: I2E
uint64_t packet_get_hash(const struct packet *handler, enum ldbc_method method, int direction)
{
uint64_t temp = 0;
uint64_t hash_value = 1;
@@ -1216,23 +1218,27 @@ uint64_t packet_get_hash(const struct packet *handler, enum ldbc_method method,
switch (method)
{
case LDBC_METHOD_HASH_INT_IP:
if (dir_is_i2e)
if (direction)
{
HASH_VALUE(outer_src_addr, outer_addr_len, hash_value);
// direction 1: E2I
HASH_VALUE(outer_dst_addr, outer_addr_len, hash_value);
}
else
{
HASH_VALUE(outer_dst_addr, outer_addr_len, hash_value);
// direction 0: I2E
HASH_VALUE(outer_src_addr, outer_addr_len, hash_value);
}
break;
case LDBC_METHOD_HASH_EXT_IP:
if (dir_is_i2e)
if (direction)
{
HASH_VALUE(outer_dst_addr, outer_addr_len, hash_value);
// direction 1: E2I
HASH_VALUE(outer_src_addr, outer_addr_len, hash_value);
}
else
{
HASH_VALUE(outer_src_addr, outer_addr_len, hash_value);
// direction 0: I2E
HASH_VALUE(outer_dst_addr, outer_addr_len, hash_value);
}
break;
case LDBC_METHOD_HASH_INT_IP_AND_EXT_IP:
@@ -1241,23 +1247,27 @@ uint64_t packet_get_hash(const struct packet *handler, enum ldbc_method method,
hash_value = hash_value ^ temp;
break;
case LDBC_METHOD_HASH_INNERMOST_INT_IP:
if (dir_is_i2e)
if (direction)
{
HASH_VALUE(inner_src_addr, inner_addr_len, hash_value);
// direction 1: E2I
HASH_VALUE(inner_dst_addr, inner_addr_len, hash_value);
}
else
{
HASH_VALUE(inner_dst_addr, inner_addr_len, hash_value);
// direction 0: I2E
HASH_VALUE(inner_src_addr, inner_addr_len, hash_value);
}
break;
case LDBC_METHOD_HASH_INNERMOST_EXT_IP:
if (dir_is_i2e)
if (direction)
{
HASH_VALUE(inner_dst_addr, inner_addr_len, hash_value);
// direction 1: E2I
HASH_VALUE(inner_src_addr, inner_addr_len, hash_value);
}
else
{
HASH_VALUE(inner_src_addr, inner_addr_len, hash_value);
// direction 0: I2E
HASH_VALUE(inner_dst_addr, inner_addr_len, hash_value);
}
break;
default:
@@ -1268,7 +1278,7 @@ uint64_t packet_get_hash(const struct packet *handler, enum ldbc_method method,
char *inner_addr_str = two_tuple_tostring(&inner_addr);
char *outer_addr_str = two_tuple_tostring(&outer_addr);
printf("%s: outer_addr: %s, inner_addr: %s, dir: %s, hash_method: %s, hash_value: %lu\n",
LOG_PACKET, outer_addr_str, inner_addr_str, (dir_is_i2e ? "I2E" : "E2I"), ldbc_method_tostring(method), hash_value);
LOG_PACKET, outer_addr_str, inner_addr_str, (direction ? "E2I" : "I2E"), ldbc_method_tostring(method), hash_value);
free(inner_addr_str);
free(outer_addr_str);
#endif

View File

@@ -102,17 +102,6 @@ int mutable_array_index_elem(struct mutable_array *array, int index)
* sids
******************************************************************************/
void sids_write_once(struct sids *dst, struct sids *src)
{
if (dst && src)
{
if (dst->num == 0 && src->num > 0)
{
sids_copy(dst, src);
}
}
}
void sids_copy(struct sids *dst, struct sids *src)
{
if (dst && src)
@@ -126,17 +115,6 @@ void sids_copy(struct sids *dst, struct sids *src)
* route_ctx
******************************************************************************/
void route_ctx_write_once(struct route_ctx *dst, struct route_ctx *src)
{
if (dst && src)
{
if (dst->len == 0)
{
route_ctx_copy(dst, src);
}
}
}
void route_ctx_copy(struct route_ctx *dst, struct route_ctx *src)
{
memcpy(dst->data, src->data, src->len);

View File

@@ -14,6 +14,14 @@ add_executable(gtest_control_packet gtest_control_packet.cpp)
target_include_directories(gtest_control_packet PUBLIC ${CMAKE_SOURCE_DIR}/common/include)
target_link_libraries(gtest_control_packet common gtest)
###############################################################################
# gtest_packet
###############################################################################
add_executable(gtest_packet gtest_packet.cpp)
target_include_directories(gtest_packet PUBLIC ${CMAKE_SOURCE_DIR}/common/include)
target_link_libraries(gtest_packet common gtest)
###############################################################################
# gtest_utils
###############################################################################
@@ -37,5 +45,6 @@ target_link_libraries(gtest_health_check_table common gtest platform)
include(GoogleTest)
gtest_discover_tests(gtest_session_table)
gtest_discover_tests(gtest_control_packet)
gtest_discover_tests(gtest_packet)
gtest_discover_tests(gtest_utils)
gtest_discover_tests(gtest_health_check_table)

View File

@@ -146,6 +146,7 @@ TEST(HEALTH_CHECK_TABLE, SET_STATUS)
EXPECT_TRUE(health_check_session_del(session_id3, 3) == 0);
}
#if 0
TEST(HEALTH_CHECK_TABLE, DELETE)
{
uint64_t session_id1 = 0;
@@ -194,6 +195,7 @@ TEST(HEALTH_CHECK_TABLE, DELETE)
EXPECT_TRUE(health_check_session_del(session_id6, 6) == 0);
EXPECT_TRUE(health_check_session_del(session_id6, 6) == -1);
}
#endif
int main(int argc, char **argv)
{

2545
common/test/gtest_packet.cpp Normal file

File diff suppressed because it is too large Load Diff

View File

@@ -41,34 +41,14 @@ TEST(UTILS, SIDS)
struct sids src;
struct sids dst;
// set src
for (int i = 0; i < MR_SID_LIST_MAXLEN; i++)
{
src.elems[i] = i;
}
src.num = MR_SID_LIST_MAXLEN;
// copy src to dst
memset(&dst, 0, sizeof(struct sids));
sids_write_once(&dst, &src);
sids_copy(&dst, &src);
// check dst
EXPECT_TRUE(dst.num == src.num);
for (int i = 0; i < MR_SID_LIST_MAXLEN; i++)
{
EXPECT_TRUE(dst.elems[i] == i);
}
// update src
for (int i = 0; i < MR_SID_LIST_MAXLEN; i++)
{
src.elems[i] = i * 2;
}
// copy src to dst
sids_write_once(&dst, &src);
// check dst
EXPECT_TRUE(dst.num == src.num);
for (int i = 0; i < MR_SID_LIST_MAXLEN; i++)
{