shaklee3 at gmail.com
Fri Apr 15 23:57:56 CEST 2016
Thanks Stephen. One of the issues I'm having is that it seems the master
lcore is the *only* one that can receive from one of the queues I created
on a port. For instance, I start my app with 5 cores, 0-4, where I want 1-4
to listen to port 0 , queue 0-3, and core 0 to be the master. I launch all
4 workers with rte_eal_remote_launch on cores 1-4, and the master (0) sits
there waiting on rte_eal_mp_wait_lcore(). However, I receive no packets on
core 1 even though it's listening to the proper queue. If I copy the code
that's listening on core 1 and stick it in the master lcore, it sees all
the packets. Is there some lcore->queue binding that I'm missing? I thought
that by launching with rte_eal_remote_launch on all but the master core
would work, but it doesn't.
My main goal is to have the master run on its own core not doing packet
processing, but periodically printing stats out. It's similar to the l2fwd
example, except in that example, the master is also processing packets.
On Wed, Apr 13, 2016 at 11:10 AM, Stephen Hemminger <
stephen at networkplumber.org> wrote:
> On Wed, 13 Apr 2016 09:42:29 -0700
> Cliff Burdick <shaklee3 at gmail.com> wrote:
> > I don't see the answer to this in the documentation, so I'll try here.
> > function does the coremask that's required in rte_eal_init() actually do
> > other than tell the API what cores you're using? In other words, can't I
> > just set the core mask to all of the cores in my system, and selectively
> > use the ones I want? Is there a downside to that? What if the particular
> > thread running on an lcore isn't doing any DPDK functions?
> The coremask is used to determine which CPU's are setup and a per-cpu
> thread is started by the launch operation.
> You can tell EAL about as many CPU's as you want, either all or even
> just one. If you use all CPU's, then in the launch it is possible to
> have the thread function of unneeded CPU's return and go back to the
> launch idle loop.
More information about the users