On 2018-12-21 20:12, Venky Venkatesh wrote:


On 12/21/18, 10:59 AM, "Mattias Rönnblom" <mattias.ronnb...@ericsson.com> 
wrote:

     On 2018-12-21 19:34, Venky Venkatesh wrote:
     >
     >
     > On 12/21/18, 10:24 AM, "Mattias Rönnblom" 
<mattias.ronnb...@ericsson.com> wrote:
     >
     >      On 2018-12-21 06:13, Venky Venkatesh wrote:
     >      > Hi,
     >      > We are considering using a multi-process mode of the DPDK with 
the event generators and consumers being spread across multiple processes (on 
different cores). We are also considering using the DSW eventdev. Is the DSW designed 
for such a use case? If so, are there some restrictions and something specific that 
need to be done to make it work correctly?
     >      >
     >
     >      The purpose of an event device is to do dynamic load balancing 
across
     >      multiple cores. Using the DPDK multiple-process support, with its
     >      requirement of having unique, non-overlapping, core masks works 
against
     >      or even defeats this purpose.
     >
     > [VV]: I don’t understand your last sentence. Suppose I am having multiple packet 
processing processes (each with a single thread and polling a disjoint set of queues) and 
each linked to DSW. Each process would invoke the enqueue which will be handled by the DSW 
linked to that process. Will the DSWs across these processes "collaborate" to get 
load balancing across the processes?
     >
If the processes are to collaborate, and process packets in the same
     pipeline, they will need to share an event device (for example, a DSW
     instance).
However, if you put each of your pipeline stages into a process with a
     single worker thread, you will not leave any room for an event device to
     load balance, since every eventdev queue will have only a single
     consumer linked to it.

[VV]: Sorry for the ambiguous terminology used by me -- queue (above) referred 
to port queues and not eventdev queues. Additionally, consider a very simple 
pipeline -- just 1 stage followed by transmit. Thus each process is pulling 
packets out of the port queue, enqueue into local DSW, dequeue from local DSW 
and running this 1 stage pipeline and transmitting. The role of eventdev in 
this world is to load balance across the processes -- that is what I meant by 
DSWs collaborate (since they need to exchange load information and do migration 
handshake). Hope that clarifies. Pls let me know if this will work.

I'm not familiar with the details of DPDK multiprocess support, but I think this should work. Again, the DSW instance needs to be shared, and can't be local to the process in case you want to use it to load balance across different DPDK processes.

All of the huge page memory is shared, and that's the only memory a DSW event device is using (except for execution stacks of course, which of course doesn't have to be shared).

Reply via email to