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. Mauro > 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.