20 Star 0 Fork 32

openEuler-RISC-V/gazelle

forked from src-openEuler/gazelle 
加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
0156-ltran-rxtx-mbuf-pool-size-config-by-conf.patch 6.86 KB
一键复制 编辑 原始数据 按行查看 历史
jinag12 提交于 2022-12-15 19:10 . ltran rxtx mbuf pool size config by conf
From 3ed8f430fb3070404d5b77da99964623877a01dd Mon Sep 17 00:00:00 2001
From: jiangheng <jiangheng14@huawei.com>
Date: Thu, 15 Dec 2022 16:35:46 +0800
Subject: [PATCH] ltran rxtx mbuf pool size config by conf
---
src/ltran/ltran.conf | 3 +++
src/ltran/ltran_ethdev.c | 18 ++++++++----------
src/ltran/ltran_param.c | 32 ++++++++++++++++++++++++++++++++
src/ltran/ltran_param.h | 2 ++
src/ltran/ltran_stat.h | 2 +-
5 files changed, 46 insertions(+), 11 deletions(-)
diff --git a/src/ltran/ltran.conf b/src/ltran/ltran.conf
index 3c1a2bc..4bfcbef 100644
--- a/src/ltran/ltran.conf
+++ b/src/ltran/ltran.conf
@@ -24,3 +24,6 @@ bond_macs="aa:bb:cc:dd:ee:ff"
bond_ports="0x1"
tcp_conn_scan_interval=10
+# number of mbuf for tx and rx. default tx is 30720, default rx is 307200.
+#rx_pool_mbuf_size = 307200
+#tx_pool_mbuf_size = 30720
diff --git a/src/ltran/ltran_ethdev.c b/src/ltran/ltran_ethdev.c
index 45bf2ef..62a662d 100644
--- a/src/ltran/ltran_ethdev.c
+++ b/src/ltran/ltran_ethdev.c
@@ -78,8 +78,8 @@ static int32_t ltran_log_init(void);
static int32_t ltran_eal_init(void);
static int32_t ltran_pdump_init(void);
static int32_t ltran_log_level_init(void);
-static struct rte_mempool *ltran_create_rx_mbuf_pool(uint32_t bond_port_index, uint32_t scale);
-static struct rte_mempool *ltran_create_tx_mbuf_pool(uint32_t bond_port_index, uint32_t scale);
+static struct rte_mempool *ltran_create_rx_mbuf_pool(uint32_t bond_port_index);
+static struct rte_mempool *ltran_create_tx_mbuf_pool(uint32_t bond_port_index);
static int32_t ltran_parse_port(void);
static int32_t ltran_mbuf_pool_init(void);
static int32_t ltran_single_slave_port_init(uint16_t port_num, struct rte_mempool *pktmbuf_rxpool);
@@ -133,9 +133,9 @@ static int32_t ltran_pdump_init(void)
return GAZELLE_OK;
}
-static struct rte_mempool *ltran_create_rx_mbuf_pool(uint32_t bond_port_index, uint32_t scale)
+static struct rte_mempool *ltran_create_rx_mbuf_pool(uint32_t bond_port_index)
{
- uint32_t num_mbufs = GAZELLE_MBUFS_RX_COUNT * scale;
+ uint32_t num_mbufs = get_ltran_config()->rx_mbuf_pool_size;
char mbuf_pool_name[GAZELLE_PKT_MBUF_POOL_NAME_LENGTH] = {0};
@@ -151,9 +151,9 @@ static struct rte_mempool *ltran_create_rx_mbuf_pool(uint32_t bond_port_index, u
RTE_MBUF_DEFAULT_BUF_SIZE, (int32_t)rte_socket_id());
}
-static struct rte_mempool *ltran_create_tx_mbuf_pool(uint32_t bond_port_index, uint32_t scale)
+static struct rte_mempool *ltran_create_tx_mbuf_pool(uint32_t bond_port_index)
{
- const uint32_t num_mbufs = GAZELLE_MBUFS_TX_COUNT * scale;
+ const uint32_t num_mbufs = get_ltran_config()->tx_mbuf_pool_size;
char mbuf_pool_name[GAZELLE_PKT_MBUF_POOL_NAME_LENGTH] = {0};
@@ -174,17 +174,15 @@ static int32_t ltran_mbuf_pool_init(void)
uint32_t bond_num = get_bond_num();
struct rte_mempool** rxpool = get_pktmbuf_rxpool();
struct rte_mempool** txpool = get_pktmbuf_txpool();
- struct ltran_config* ltran_config = get_ltran_config();
- struct port_info* port_info = get_port_info();
for (uint32_t i = 0; i < bond_num; i++) {
- rxpool[i] = ltran_create_rx_mbuf_pool(i, 1);
+ rxpool[i] = ltran_create_rx_mbuf_pool(i);
if (rxpool[i] == NULL) {
LTRAN_ERR("rxpool[%u] is NULL, pktmbuf_pool init failed. rte_errno: %d. \n", i, rte_errno);
return GAZELLE_ERR;
}
- txpool[i] = ltran_create_tx_mbuf_pool(i, port_info[i].num_ports * ltran_config->bond.tx_queue_num);
+ txpool[i] = ltran_create_tx_mbuf_pool(i);
if (txpool[i] == NULL) {
LTRAN_ERR("txpool[%u] is NULL, pktmbuf_pool init failed. rte_errno: %d. \n", i, rte_errno);
return GAZELLE_ERR;
diff --git a/src/ltran/ltran_param.c b/src/ltran/ltran_param.c
index 18854cf..1b9d82b 100644
--- a/src/ltran/ltran_param.c
+++ b/src/ltran/ltran_param.c
@@ -43,6 +43,8 @@
#define PARAM_BOND_MACS "bond_macs"
#define PARAM_TCP_CONN_SCAN_INTERVAL "tcp_conn_scan_interval"
#define PARAM_UNIX_PREFIX "unix_prefix"
+#define PARAM_RX_MBUF_POOL_SIZE "rx_mbuf_pool_size"
+#define PARAM_TX_MBUF_POOL_SIZE "tx_mbuf_pool_size"
static struct ltran_config g_ltran_config = {0};
struct ltran_config* get_ltran_config(void)
@@ -610,6 +612,34 @@ static int32_t parse_unix_prefix(const config_t *config, const char *key, struct
return GAZELLE_OK;
}
+static int32_t parse_rx_mbuf_pool_size(const config_t *config, const char *key, struct ltran_config *ltran_config)
+{
+ int32_t ret;
+ int32_t rx_mbuf_pool_size = 0;
+ ret = config_lookup_int(config, key, &rx_mbuf_pool_size);
+ if (ret == 0) {
+ ltran_config->rx_mbuf_pool_size = GAZELLE_MBUFS_RX_COUNT;
+ return GAZELLE_OK;
+ }
+
+ ltran_config->rx_mbuf_pool_size = rx_mbuf_pool_size;
+ return GAZELLE_OK;
+}
+
+static int32_t parse_tx_mbuf_pool_size(const config_t *config, const char *key, struct ltran_config *ltran_config)
+{
+ int32_t ret;
+ int32_t tx_mbuf_pool_size = 0;
+ ret = config_lookup_int(config, key, &tx_mbuf_pool_size);
+ if (ret == 0) {
+ ltran_config->tx_mbuf_pool_size = GAZELLE_MBUFS_TX_COUNT;
+ return GAZELLE_OK;
+ }
+
+ ltran_config->tx_mbuf_pool_size = tx_mbuf_pool_size;
+ return GAZELLE_OK;
+}
+
struct param_parser g_param_parse_tbl[] = {
{PARAM_FORWARD_KIT_ARGS, parse_forward_kit_args},
{PARAM_DISPATCH_MAX_CLIENT, parse_dispatch_max_client},
@@ -625,6 +655,8 @@ struct param_parser g_param_parse_tbl[] = {
{PARAM_TCP_CONN_SCAN_INTERVAL, parse_tcp_conn_scan_interval},
{PARAM_KNI_SWITCH, parse_kni_switch},
{PARAM_UNIX_PREFIX, parse_unix_prefix},
+ {PARAM_RX_MBUF_POOL_SIZE, parse_rx_mbuf_pool_size},
+ {PARAM_TX_MBUF_POOL_SIZE, parse_tx_mbuf_pool_size},
};
int32_t parse_config_file_args(const char *conf_file_path, struct ltran_config *ltran_config)
diff --git a/src/ltran/ltran_param.h b/src/ltran/ltran_param.h
index 6f013d5..40a92b1 100644
--- a/src/ltran/ltran_param.h
+++ b/src/ltran/ltran_param.h
@@ -58,6 +58,8 @@ struct ltran_config {
} log;
char unix_socket_filename[NAME_MAX];
char dfx_socket_filename[NAME_MAX];
+ uint32_t rx_mbuf_pool_size;
+ uint32_t tx_mbuf_pool_size;
};
int32_t parse_config_file_args(const char *conf_file_path, struct ltran_config *ltran_config);
diff --git a/src/ltran/ltran_stat.h b/src/ltran/ltran_stat.h
index f91b0c4..16d03a1 100644
--- a/src/ltran/ltran_stat.h
+++ b/src/ltran/ltran_stat.h
@@ -23,7 +23,7 @@
* When doing reads from the NIC or the client queues,
* use this batch size
*/
-#define BACKUP_SIZE_FACTOR (256)
+#define BACKUP_SIZE_FACTOR (1024)
#define RING_MAX_SIZE (512) /* determined by g_mbuf_ring.rx_ring in func create_shared_ring in file dpdk.c */
#define PACKET_READ_SIZE (32)
#define BACKUP_MBUF_SIZE (BACKUP_SIZE_FACTOR * PACKET_READ_SIZE)
--
2.33.0
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
1
https://gitee.com/openeuler-risc-v/gazelle.git
git@gitee.com:openeuler-risc-v/gazelle.git
openeuler-risc-v
gazelle
gazelle
master

搜索帮助