public inbox for netdev@vger.kernel.org
 help / color / mirror / Atom feed
* [PATCH net-next V2 0/2] net: use kmem_cache_free_bulk in kfree_skb_list
@ 2023-01-13 13:51 Jesper Dangaard Brouer
  2023-01-13 13:51 ` [PATCH net-next V2 1/2] net: fix call location in kfree_skb_list_reason Jesper Dangaard Brouer
                   ` (2 more replies)
  0 siblings, 3 replies; 15+ messages in thread
From: Jesper Dangaard Brouer @ 2023-01-13 13:51 UTC (permalink / raw)
  To: netdev
  Cc: Jesper Dangaard Brouer, Jakub Kicinski, David S. Miller, edumazet,
	pabeni

The kfree_skb_list function walks SKB (via skb->next) and frees them
individually to the SLUB/SLAB allocator (kmem_cache). It is more
efficient to bulk free them via the kmem_cache_free_bulk API.

Netstack NAPI fastpath already uses kmem_cache bulk alloc and free
APIs for SKBs.

The kfree_skb_list call got an interesting optimization in commit
520ac30f4551 ("net_sched: drop packets after root qdisc lock is
released") that can create a list of SKBs "to_free" e.g. when qdisc
enqueue fails or deliberately chooses to drop . It isn't a normal data
fastpath, but the situation will likely occur when system/qdisc are
under heavy workloads, thus it makes sense to use a faster API for
freeing the SKBs.

E.g. the (often distro default) qdisc fq_codel will drop batches of
packets from fattest elephant flow, default capped at 64 packets (but
adjustable via tc argument drop_batch).

Performance measurements done in [1]:
 [1] https://github.com/xdp-project/xdp-project/blob/master/areas/mem/kfree_skb_list01.org

---

Jesper Dangaard Brouer (2):
      net: fix call location in kfree_skb_list_reason
      net: kfree_skb_list use kmem_cache_free_bulk


 net/core/skbuff.c | 68 +++++++++++++++++++++++++++++++++++++++--------
 1 file changed, 57 insertions(+), 11 deletions(-)

--


^ permalink raw reply	[flat|nested] 15+ messages in thread

end of thread, other threads:[~2023-01-19 13:19 UTC | newest]

Thread overview: 15+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2023-01-13 13:51 [PATCH net-next V2 0/2] net: use kmem_cache_free_bulk in kfree_skb_list Jesper Dangaard Brouer
2023-01-13 13:51 ` [PATCH net-next V2 1/2] net: fix call location in kfree_skb_list_reason Jesper Dangaard Brouer
2023-01-13 13:52 ` [PATCH net-next V2 2/2] net: kfree_skb_list use kmem_cache_free_bulk Jesper Dangaard Brouer
2023-01-18 16:05   ` Eric Dumazet
2023-01-18 16:42     ` Jesper Dangaard Brouer
2023-01-18 16:42       ` Eric Dumazet
2023-01-18 21:37   ` Jesper Dangaard Brouer
2023-01-19  2:26     ` Jakub Kicinski
2023-01-19 10:17       ` Jesper Dangaard Brouer
2023-01-19 10:28         ` Eric Dumazet
2023-01-19 11:22           ` Jesper Dangaard Brouer
2023-01-19 11:46             ` Eric Dumazet
2023-01-19 13:18               ` Jesper Dangaard Brouer
2023-01-19  2:39     ` Yunsheng Lin
2023-01-17  9:40 ` [PATCH net-next V2 0/2] net: use kmem_cache_free_bulk in kfree_skb_list patchwork-bot+netdevbpf

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox