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

Reply via email to