Memory regions assigned to hardware and used during Tx/Rx are mapped to mbuf pools. Each Rx queue creates its own MR based on the mempool provided during queue setup, while each Tx queue looks up and registers MRs for all existing mbuf pools instead. Since most applications use few large mbuf pools (usually only a single one per NUMA node) common to all Tx/Rx queues, the above approach wastes hardware resources due to redundant MRs. This negatively affects performance, particularly with large numbers of queues. This patch therefore makes the entire MR registration common to all queues using a reference count. A spinlock is added to protect against asynchronous registration that may occur from the Tx side where new mempools are discovered based on mbuf data. Signed-off-by: Adrien Mazarguil <adrien.mazarguil@6wind.com>
…
…
…
DPDK is a set of libraries and drivers for fast packet processing. It supports many processor architectures and both FreeBSD and Linux. The DPDK uses the Open Source BSD license for the core libraries and drivers. The kernel components are GPLv2 licensed. Please check the doc directory for release notes, API documentation, and sample application information. For questions and usage discussions, subscribe to: users@dpdk.org Report bugs and issues to the development mailing list: dev@dpdk.org
Description
Languages
C
99.1%
Meson
0.5%
Python
0.2%
Shell
0.1%