[PATCH] examples/l3fwd: fix Tx performance deteriorate
Jie Hai
haijie1 at huawei.com
Tue Nov 26 08:39:25 CET 2024
Hi, konstantin.ananyev,
That sounds better, will send V2。
Thanks,
Jie Hai
>
> In commit:
> examples/l3fwd: add option to set Rx burst size
> you introduced new global
> uint32_t nb_pkt_per_burst;
> Why not to use it for both (rx and tx) paths?
> Or if necessary introduce another one for tx, so we'll have:
> uint32_t nb_rx_pkt_per_burst, nb_tx_pkt_per_burst,;
> To me that is much better then create some hardcoded
> and implicit thresholds.
>
>> Fixes: d5c4897ecfb2 ("examples/l3fwd: add option to set Rx burst size")
>>
>> Signed-off-by: Jie Hai <haijie1 at huawei.com>
>> ---
>> 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;
>> --
>> 2.22.0
>
More information about the dev
mailing list