[dpdk-dev] RFC: Support for multiple buffer pool in examples/l3fwd

Shreyansh Jain shreyansh.jain at nxp.com
Thu Nov 29 18:28:16 CET 2018


Currently examples/l3fwd/main.c has support for pktmbuf_pool per socket.

L136: static struct rte_mempool * pktmbuf_pool[NB_SOCKETS];                          

In various setups, having a separate buffer pool per port (or even per queue) can achieve performance many-folds higher than single pool case.
Being the most widely used/referred example application for raw performance, examples/l3fwd needs to support such scenarios.

The changes I am expecting are very minimal:

1. Changing pktmbuf_pool[NB_SOCKETS] to either
  - a multi-dimensional array for pktmbuf_pool[NB_SOCKETS][RTE_MAX_ETHPORTS]
  - or pktmbuf_pool[NB_SOCKETS*RTE_MAX_ETHPORTS]
Such that for a given (port, socket) combination, a buffer pool is allocated.
2. This would be done on passing a l3fwd specific argument "--per-port-bpool"
3. During rte_eth_rx_queue_setup(), pool passed would continue to be the one for that (port,socket) combination

It is also possible to extend this behavior to per queue basis, but probably for the first iteration per-port can be supported. If use-cases for per-queue arise, another "-per-queue-bpool" can be added. (But, that would also need a larger pktmbuf_pool array.

I am hoping to push out a first-cut very soon.

Regards,
Shreyansh


More information about the dev mailing list