[dpdk-users] running multiple pthreads in the same lcore id

Victor Huertas vhuertas at gmail.com
Fri Mar 16 17:24:08 CET 2018


Hi all,

I have developed a simple application which implements a network bridge. It
captures packets in one port (port0), sends them into a software ring
towards a second thread which receives them and sends them out via port1.

Same implementation is performed in the direction port1->port0. So there
are 4 threads in total.

[port0]-->rx thread0 -->sw ring--> tx thread1-->[port 1]
[port0]<--rx thread2 <--sw ring<-- tx thread3<--[port 1]

The thing is that this application is a first step of a functionality
expansion by inserting additional threads (all connected with software
rings) in the middle of the path so that it performs some packet
manipulation before delivering them to the destination port:

[port0]-->rx thread0 -->sw ring--> add_thread 1-->sw ring--> add_thread
N-->sw ring-> tx thread1-->[port 1]

The total number of threads can reach hundreds (much more than number of
lcores) and I would like to assign every thread to a particular lcore, no
mattering if more than one thread is being executed by the same lcore. This
assignment would be done through an XML config file, which would be loaded
at the very beginning of the application execution.

the rte_eal_remote_launch function at rte_launch.h can only launch one
thread and attach it to one and unique lcore. So imagine that I want to
launch another thread on the same lcore. DPDK doesn't seem to allow me to
do that.

I have read that using cgroups could make this possible but I haven't found
an example application where DPDK and cgroups are used toghether.

what is your recommendation on this as expert users? Is using cgroups an
acceptable option?

Is DPDK contemplating in a future release to support natively multi pthread
on one lcore on the rte_launch.h lib?

Thanks for your attention,

-- 
Victor


More information about the users mailing list