From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id 1FEDF45D7B; Fri, 22 Nov 2024 10:14:58 +0100 (CET) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 10483402E3; Fri, 22 Nov 2024 10:14:58 +0100 (CET) Received: from szxga02-in.huawei.com (szxga02-in.huawei.com [45.249.212.188]) by mails.dpdk.org (Postfix) with ESMTP id 4ABFA40270 for ; Fri, 22 Nov 2024 10:14:56 +0100 (CET) Received: from mail.maildlp.com (unknown [172.19.163.174]) by szxga02-in.huawei.com (SkyGuard) with ESMTP id 4Xvq9j6crwz69Zd; Fri, 22 Nov 2024 17:12:09 +0800 (CST) Received: from dggemv703-chm.china.huawei.com (unknown [10.3.19.46]) by mail.maildlp.com (Postfix) with ESMTPS id 36EB41402C1; Fri, 22 Nov 2024 17:14:54 +0800 (CST) Received: from kwepemn100009.china.huawei.com (7.202.194.112) by dggemv703-chm.china.huawei.com (10.3.19.46) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2507.39; Fri, 22 Nov 2024 17:14:53 +0800 Received: from [10.67.121.59] (10.67.121.59) by kwepemn100009.china.huawei.com (7.202.194.112) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1544.11; Fri, 22 Nov 2024 17:14:53 +0800 Message-ID: <5b8c1d0b-1ab3-b6c5-3212-fd5a62df9502@huawei.com> Date: Fri, 22 Nov 2024 17:14:52 +0800 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:91.0) Gecko/20100101 Thunderbird/91.2.0 Subject: Re: [PATCH] examples/l3fwd: fix Tx performance deteriorate To: Jie Hai , , , , =?UTF-8?Q?Morten_Br=c3=b8rup?= , Chengwen Feng CC: References: <20241122071336.18470-1-haijie1@huawei.com> From: "lihuisong (C)" In-Reply-To: <20241122071336.18470-1-haijie1@huawei.com> Content-Type: text/plain; charset="UTF-8"; format=flowed Content-Transfer-Encoding: 8bit X-Originating-IP: [10.67.121.59] X-ClientProxiedBy: dggems701-chm.china.huawei.com (10.3.19.178) To kwepemn100009.china.huawei.com (7.202.194.112) X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org LGTM, good job. Acked-by: Huisong Li 在 2024/11/22 15:13, Jie Hai 写道: > The application send packets only when the buffer is full, or the > buffer is empty and the number of packets to be sent extends half > of the buffer. > > The change of MAX_PKT_BURST increases TX buffer size, while the > default size of local cache on each lcore is 256, which not greater > than the limit of transmitting. That would make the mbuf not on the > local cache be frequently used and the performance deteriorates. > > This problem can be solved by making the TX threshold smaller than > the local cache size. For example, use the '--mbcache' parameter to > make the local cache greater. This patch optimizes the default > performance by lowering TX threshold. > > Fixes: d5c4897ecfb2 ("examples/l3fwd: add option to set Rx burst size") > > Signed-off-by: Jie Hai > --- > examples/l3fwd/l3fwd.h | 8 +++++--- > examples/l3fwd/l3fwd_common.h | 6 +++--- > 2 files changed, 8 insertions(+), 6 deletions(-) > > diff --git a/examples/l3fwd/l3fwd.h b/examples/l3fwd/l3fwd.h > index 0cce3406ee7d..a01fecd51261 100644 > --- a/examples/l3fwd/l3fwd.h > +++ b/examples/l3fwd/l3fwd.h > @@ -35,7 +35,7 @@ > /* > * Try to avoid TX buffering if we have at least MAX_TX_BURST packets to send. > */ > -#define MAX_TX_BURST (MAX_PKT_BURST / 2) > +#define MAX_TX_BURST DEFAULT_PKT_BURST > > #define NB_SOCKETS 8 > > @@ -57,6 +57,8 @@ > #define L3FWD_HASH_ENTRIES (1024*1024*1) > #endif > > +static_assert(MAX_TX_BURST <= MAX_PKT_BURST, "MAX_TX_BURST should be at most MAX_PKT_BURST"); > + > struct parm_cfg { > const char *rule_ipv4_name; > const char *rule_ipv6_name; > @@ -152,8 +154,8 @@ send_single_packet(struct lcore_conf *qconf, > len++; > > /* enough pkts to be sent */ > - if (unlikely(len == MAX_PKT_BURST)) { > - send_burst(qconf, MAX_PKT_BURST, port); > + if (unlikely(len == MAX_TX_BURST)) { > + send_burst(qconf, MAX_TX_BURST, port); > len = 0; > } > > diff --git a/examples/l3fwd/l3fwd_common.h b/examples/l3fwd/l3fwd_common.h > index d94e5f135791..3f504dc0a552 100644 > --- a/examples/l3fwd/l3fwd_common.h > +++ b/examples/l3fwd/l3fwd_common.h > @@ -71,7 +71,7 @@ send_packetsx4(struct lcore_conf *qconf, uint16_t port, struct rte_mbuf *m[], > * If TX buffer for that queue is empty, and we have enough packets, > * then send them straightway. > */ > - if (num >= MAX_TX_BURST && len == 0) { > + if (num >= MAX_TX_BURST / 2 && len == 0) { > n = rte_eth_tx_burst(port, qconf->tx_queue_id[port], m, num); > if (unlikely(n < num)) { > do { > @@ -112,9 +112,9 @@ send_packetsx4(struct lcore_conf *qconf, uint16_t port, struct rte_mbuf *m[], > len += n; > > /* enough pkts to be sent */ > - if (unlikely(len == MAX_PKT_BURST)) { > + if (unlikely(len > MAX_TX_BURST)) { > > - send_burst(qconf, MAX_PKT_BURST, port); > + send_burst(qconf, len, port); > > /* copy rest of the packets into the TX buffer. */ > len = num - n;