[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Message-ID: <20251106202935.1776179-1-edumazet@google.com>
Date: Thu, 6 Nov 2025 20:29:32 +0000
From: Eric Dumazet <edumazet@...gle.com>
To: "David S . Miller" <davem@...emloft.net>, Jakub Kicinski <kuba@...nel.org>,
Paolo Abeni <pabeni@...hat.com>
Cc: Simon Horman <horms@...nel.org>, Kuniyuki Iwashima <kuniyu@...gle.com>,
Willem de Bruijn <willemb@...gle.com>, netdev@...r.kernel.org, eric.dumazet@...il.com,
Eric Dumazet <edumazet@...gle.com>
Subject: [PATCH net-next 0/3] net: use skb_attempt_defer_free() in napi_consume_skb()
There is a lack of NUMA awareness and more generally lack
of slab caches affinity on TX completion path.
Modern drivers are using napi_consume_skb(), hoping to cache sk_buff
in per-cpu caches so that they can be recycled in RX path.
Only use this if the skb was allocated on the same cpu,
otherwise use skb_attempt_defer_free() so that the skb
is freed on the original cpu.
This removes contention on SLUB spinlocks and data structures,
and this makes sure that recycled sk_buff have correct NUMA locality.
After this series, I get ~50% improvement for an UDP tx workload
on an AMD EPYC 9B45 (IDPF 200Gbit NIC with 32 TX queues).
I will later refactor skb_attempt_defer_free()
to no longer have to care of skb_shared() and skb_release_head_state().
Eric Dumazet (3):
net: allow skb_release_head_state() to be called multiple times
net: fix napi_consume_skb() with alien skbs
net: increase skb_defer_max default to 128
Documentation/admin-guide/sysctl/net.rst | 4 ++--
net/core/hotdata.c | 2 +-
net/core/skbuff.c | 12 ++++++++----
3 files changed, 11 insertions(+), 7 deletions(-)
--
2.51.2.1041.gc1ab5b90ca-goog
Powered by blists - more mailing lists