mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/
synced 2026-11-10 20:48:12 +00:00
Merge branch 'net-devmem-remove-gen_pool-from-dma-buf-allocations'
Stanislav Fomichev says: ==================== net: devmem: remove gen_pool from dma-buf allocations Replace devmem's gen_pool based fixed-size allocator with a binding-level freelist similar to the one used by io_uring zero-copy receive. This is motivated by allocation latency observed in the NAPI receive path: [ 1036.228913] ? gen_pool_create+0x90/0x90 [ 1036.228915] net_devmem_alloc_dmabuf+0x1f/0x60 [ 1036.228918] mp_dmabuf_devmem_alloc_netmems+0x17/0x80 [ 1036.228920] mlx5e_post_rx_mpwqes+0xdbe/0xdd0 [ 1036.228926] mlx5e_napi_poll+0x113/0x830 [ 1036.228928] ? sched_clock+0x5/0x10 [ 1036.228931] ? wake_up_process+0x778/0x14b0 [ 1036.228933] net_rx_action+0x15d/0x570 [ 1036.228934] ? update_rq_clock+0x31/0x240 [ 1036.228937] ? __napi_schedule+0x55/0xa0 [ 1036.228938] ? mlx5_eq_comp_int+0x137/0x230 [ 1036.228940] ? atomic_notifier_call_chain+0x36/0x90 [ 1036.228943] ? sched_clock+0x5/0x10 [ 1036.228944] ? sched_clock_cpu+0xc/0x170 [ 1036.228947] irq_exit_rcu+0x12b/0x370 [ 1036.228950] common_interrupt+0x85/0x90 udmabuf can create a very large number of SG entries. In the worst case, devmem ends up adding one gen_pool chunk for each net_iov allocation unit backed by those entries. The gen_pool allocation path then has to traverse a linked list that can become too long for this hot path. Patch 1 removes the gen_pool and replaces it with a simple freelist of net_iov pointers protected by the same spin_lock_bh() pattern used by io_uring zcrx. Patch 2 removes the now-unnecessary chunk owner wrapper by embedding the net_iov_area directly in the dma-buf binding. Patch 3 batches freelist allocations. ==================== See mailing Link for performance evaluation. Link: https://patch.msgid.link/20260917181116.3319017-1-sdf@fomichev.me Signed-off-by: Jakub Kicinski <kuba@kernel.org>
This commit is contained in:
commit
eb01d93504
3 changed files with 104 additions and 157 deletions
Loading…
Add table
Add a link
Reference in a new issue