[dpdk-dev] Question on DPDK multi-process support

Mauro Annarumma mauroannarumma at hotmail.it
Tue Feb 18 13:45:58 CET 2014

Hi Bruce,
   just for dispel
 any doubt: if there is one primary process and N secondary processes, 
and each process uses only one logical core (they have a coremask equal 
to 0x01, 0x02, 0x04, ....), I can run at the same time at most "my CPU logical cores - 1" secondary processes. Is it right? 
Is it true also if I disable the mempool per-core cache?

Thanks for your help, regards.


> From: bruce.richardson at intel.com
> To: mauroannarumma at hotmail.it; dev at dpdk.org
> Subject: RE: [dpdk-dev] Question on DPDK multi-process support
> Date: Mon, 17 Feb 2014 16:44:55 +0000
> > Hi,
> > I have some doubts on the DPDK multi-process support:
> > 
> > 1) According to the Programmers Guide (pag. 109 - 20.3 Multi-process
> > Limitations), one of the multi-process limitations is:
> > 
> > "All Intel(r) DPDK processes running as a single application and using shared
> > memory must have distinct coremask arguments. It is not possible to have
> > a primary and secondary instance, or two secondary instances, using any of
> > the same logical cores. Attempting to do so can cause corruption of
> > memory pool caches, among other issues."
> > 
> > Does it mean that I can run a number of DPDK processes at most equal to
> > the number of my CPU logical cores? In the case I run 2 mono-lcore DPDK
> > processes with the same coremask, what are the possible issues?
> > 
> The potential issues are caused by a dependence on the lcore_id internally by Intel DPDK data structures, especially mempools. If two processes use the same lcore they will have the same lcore_id value, and will try and access the same mempool cache which is not thread-safe. This will cause mempool corruption.
> NOTE: this applies only to co-operating processes, i.e. those run as primary and secondary processes. There are no mempool issues with running completely independent Intel DPDK processes on the same cores, i.e. processes run using different "--file-prefix=" parameters, since those do not share any memory and data structures. 
> > 
> > 2) Can a secondary process use the rte_eth_rx_burst over a queue of a NIC
> > port configured in the primary process?
> > 
> Yes. NIC ports and their data structures are shared between co-operating processes. Multiple processes doing RX on the same port is shown in the "examples/multi_process/symmetric_mp" example application.

More information about the dev mailing list