14 Star 5 Fork 32

src-openEuler/gazelle

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
0016-cfg-nic-rx-tx-queue-size-configure.patch 4.90 KB
一键复制 编辑 原始数据 按行查看 历史
From 4adbb49fe002f097683c3c2155387d6fe7d59952 Mon Sep 17 00:00:00 2001
From: jiangheng <jiangheng14@huawei.com>
Date: Mon, 9 Oct 2023 14:21:41 +0800
Subject: [PATCH] cfg: nic rx/tx queue size configure
---
src/common/gazelle_opt.h | 4 ++--
src/lstack/core/lstack_cfg.c | 20 ++++++++++++++++++++
src/lstack/core/lstack_dpdk.c | 4 ++--
src/lstack/include/lstack_cfg.h | 6 ++++++
src/lstack/include/lstack_protocol_stack.h | 2 +-
src/lstack/lstack.conf | 3 +++
6 files changed, 34 insertions(+), 5 deletions(-)
diff --git a/src/common/gazelle_opt.h b/src/common/gazelle_opt.h
index 7b6aa19..7b855f9 100644
--- a/src/common/gazelle_opt.h
+++ b/src/common/gazelle_opt.h
@@ -42,8 +42,8 @@
#define VDEV_TX_QUEUE_SZ DEFAULT_RING_SIZE
#define FREE_RX_QUEUE_SZ DPDK_PKT_BURST_SIZE
-#define RTE_TEST_TX_DESC_DEFAULT 2048
-#define RTE_TEST_RX_DESC_DEFAULT 4096
+#define NIC_QUEUE_SIZE_MAX 8192
+#define NIC_QUEUE_SIZE_MIN 512
#define TCP_CONN_COUNT 1500
#define MBUF_COUNT_PER_CONN 170
diff --git a/src/lstack/core/lstack_cfg.c b/src/lstack/core/lstack_cfg.c
index 9fc16dd..0eca86e 100644
--- a/src/lstack/core/lstack_cfg.c
+++ b/src/lstack/core/lstack_cfg.c
@@ -74,6 +74,8 @@ static int32_t parse_use_bond4(void);
static int32_t parse_bond4_slave_mac(void);
static int32_t parse_use_sockmap(void);
static int32_t parse_udp_enable(void);
+static int32_t parse_nic_rxqueue_size(void);
+static int32_t parse_nic_txqueue_size(void);
#define PARSE_ARG(_arg, _arg_string, _default_val, _min_val, _max_val, _ret) \
do { \
@@ -131,6 +133,8 @@ static struct config_vector_t g_config_tbl[] = {
{ "bond4_slave_mac", parse_bond4_slave_mac },
{ "use_sockmap", parse_use_sockmap },
{ "udp_enable", parse_udp_enable },
+ { "nic_rxqueue_size", parse_nic_rxqueue_size},
+ { "nic_txqueue_size", parse_nic_txqueue_size},
{ NULL, NULL }
};
@@ -1163,3 +1167,19 @@ static int32_t parse_use_sockmap(void)
PARSE_ARG(g_config_params.use_sockmap, "use_sockmap", 0, 0, 1, ret);
return ret;
}
+
+static int32_t parse_nic_rxqueue_size(void)
+{
+ int32_t ret;
+ PARSE_ARG(g_config_params.nic.rxqueue_size, "nic_rxqueue_size", 4096,
+ NIC_QUEUE_SIZE_MIN, NIC_QUEUE_SIZE_MAX, ret);
+ return ret;
+}
+
+static int32_t parse_nic_txqueue_size(void)
+{
+ int32_t ret;
+ PARSE_ARG(g_config_params.nic.txqueue_size, "nic_txqueue_size", 2048,
+ NIC_QUEUE_SIZE_MIN, NIC_QUEUE_SIZE_MAX, ret);
+ return ret;
+}
diff --git a/src/lstack/core/lstack_dpdk.c b/src/lstack/core/lstack_dpdk.c
index 902dadc..a53e85c 100644
--- a/src/lstack/core/lstack_dpdk.c
+++ b/src/lstack/core/lstack_dpdk.c
@@ -370,8 +370,8 @@ static struct eth_params *alloc_eth_params(uint16_t port_id, uint16_t nb_queues)
eth_params->port_id = port_id;
eth_params->nb_queues = nb_queues;
- eth_params->nb_rx_desc = RTE_TEST_RX_DESC_DEFAULT;
- eth_params->nb_tx_desc = RTE_TEST_TX_DESC_DEFAULT;
+ eth_params->nb_rx_desc = get_global_cfg_params()->nic.rxqueue_size;
+ eth_params->nb_tx_desc = get_global_cfg_params()->nic.txqueue_size;
eth_params->conf.link_speeds = ETH_LINK_SPEED_AUTONEG;
eth_params->conf.txmode.mq_mode = ETH_MQ_TX_NONE;
eth_params->conf.rxmode.mq_mode = ETH_MQ_RX_NONE;
diff --git a/src/lstack/include/lstack_cfg.h b/src/lstack/include/lstack_cfg.h
index 52a1abd..e48a501 100644
--- a/src/lstack/include/lstack_cfg.h
+++ b/src/lstack/include/lstack_cfg.h
@@ -59,6 +59,11 @@ struct secondary_attach_arg {
char file_prefix[PATH_MAX];
};
+struct cfg_nic_params {
+ uint32_t rxqueue_size;
+ uint32_t txqueue_size;
+};
+
struct cfg_params {
ip4_addr_t host_addr;
ip4_addr_t netmask;
@@ -110,6 +115,7 @@ struct cfg_params {
uint8_t bond4_slave2_mac_addr[ETHER_ADDR_LEN];
bool use_sockmap;
bool udp_enable;
+ struct cfg_nic_params nic;
};
struct cfg_params *get_global_cfg_params(void);
diff --git a/src/lstack/include/lstack_protocol_stack.h b/src/lstack/include/lstack_protocol_stack.h
index b7c18d3..a4f6ac2 100644
--- a/src/lstack/include/lstack_protocol_stack.h
+++ b/src/lstack/include/lstack_protocol_stack.h
@@ -69,7 +69,7 @@ struct protocol_stack {
uint32_t rx_ring_used;
uint32_t tx_ring_used;
- struct rte_mbuf *pkts[RTE_TEST_RX_DESC_DEFAULT];
+ struct rte_mbuf *pkts[NIC_QUEUE_SIZE_MAX];
struct list_node recv_list;
struct list_node same_node_recv_list; /* used for same node processes communication */
struct list_node wakeup_list;
diff --git a/src/lstack/lstack.conf b/src/lstack/lstack.conf
index fa7e284..ad574e1 100644
--- a/src/lstack/lstack.conf
+++ b/src/lstack/lstack.conf
@@ -34,6 +34,9 @@ rpc_number = 4
#read nic pkts number
nic_read_number = 128
+nic_rxqueue_size = 4096
+nic_txqueue_size = 2048
+
#each cpu core start a protocol stack thread.
num_cpus="2"
--
2.27.0
Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
1
https://gitee.com/src-openeuler/gazelle.git
git@gitee.com:src-openeuler/gazelle.git
src-openeuler
gazelle
gazelle
master

搜索帮助

0d507c66 1850385 C8b1a773 1850385