DPDK usage discussions
 help / color / mirror / Atom feed
From: Stephen Hemminger <stephen@networkplumber.org>
To: "Juan Pablo L." <jpablolorenzetti@hotmail.com>
Cc: "users@dpdk.org" <users@dpdk.org>
Subject: Re: lcores clarification
Date: Tue, 18 Oct 2022 16:20:01 -0700	[thread overview]
Message-ID: <20221018162001.58965de1@hermes.local> (raw)
In-Reply-To: <AM0PR04MB6692AE7F21FF5882C18E75C6D9289@AM0PR04MB6692.eurprd04.prod.outlook.com>

On Tue, 18 Oct 2022 23:04:48 +0000
Juan Pablo L. <jpablolorenzetti@hotmail.com> wrote:

> Hi Stephen, thank you for your advise, I understand that, like you said the same applies to other things not only dpdk, but I was asking to run different lcores on a CPU .. I understand that a lcore is a thread (pthread in this case) running on a CPU .. I also understand that many lcores can run on same CPU( right ?) and said lcores have sperate per-lcore variables, env, etc so one lcore is a single thread running on a while(resource is busy) NOT sharing anything with the other lcores running on same CPU that is each lcore has its own ring for example waiting for packages coming from different sockets, etc ... and the lcore is NOT running threads inside or anything like that ...
> 
> I have to admit that I am trying to understand this whole lcore,CPU, scheduling, etc in DPDK still ... thank you for your input!
> ________________________________
> From: Stephen Hemminger <stephen@networkplumber.org>
> Sent: Tuesday, October 18, 2022 10:41 PM
> To: Juan Pablo L. <jpablolorenzetti@hotmail.com>
> Cc: users@dpdk.org <users@dpdk.org>
> Subject: Re: lcores clarification
> 
> On Tue, 18 Oct 2022 22:06:04 +0000
> Juan Pablo L. <jpablolorenzetti@hotmail.com> wrote:
> 
> > Hellos guys, I have a doubt that I have not been able to clarify with the docs, so maybe you can help me please ...
> >
> > I have a process that I want to run on a set of CPUs (performing the same task) but I want to run all of them at the same time, so my question is:
> >
> > if I configure something like "--lcores='2@(5-7)'" that will make my lcore with id 2 run simultaneously (at the same time in parallel) on CPUs 5,6,7 or it will run my lcore id 2 only one time at any given time on either CPU 5,6 or 7 ?
> >
> > would it be better if I configure different lcore id for the same and assign it to individual CPUs ? , e.g: "--lcores='2@5,3@6,4@7'" even though lcore id 2,3,4 are really the same job ?
> >
> > I think my question is just a matter of what is the best way to configure EAL to accomplish what I want, that is to run the same process on all CPU available concurrently, even though, I believe, option 2 seems to be the obvious way I just want to make sure I am not doing something that DPDK could do for me already ....
> >
> > A bonus question if its not too much, since lcores are really pthreads (in linux) and I have isolated the CPUs from the kernel scheduler, my guess is that if I have different lcores (performing the same or different tasks) running on the same CPU DPDK will be doing the scheduling right ? ..
> >
> > thank you very much!!!!
> >  
> 
> If you have multiple threads running on same lcore, you better not use locks or rings,
> or mbufs, or most of the DPDK. Because these features all work like:
> 
>   while (resource is busy)
>      spin wait
> 
> So if one thread has a resource and gets preempted. When another thread runs
> and tries to acquire the same resource; the thread will spin until scheduler
> decides to run the other thread.
> 
> This is not unique to DPDK, the same problem is described in the pthread_spinlock
> man page.

Running multiple DPDK lcores on same cpu risks the scheduler hitting you and
will hurt performance.

Running a DPDK lcore with an affinity cpuset that spans multiple cpu's will
not be faster. It just will cause the scheduler to move that thread among
cpus.

The fastest is to do the default and pin the lcore to a single cpu;
and use CPU isolation so that no other process runs on that CPU.

Sure you can do lots of weird and wonderful things to rearrange lcores
but your just making the application unstable.


  reply	other threads:[~2022-10-18 23:20 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-10-18 22:06 Juan Pablo L.
2022-10-18 22:41 ` Stephen Hemminger
2022-10-18 23:04   ` Juan Pablo L.
2022-10-18 23:20     ` Stephen Hemminger [this message]
2022-10-19 14:31       ` Juan Pablo L.

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20221018162001.58965de1@hermes.local \
    --to=stephen@networkplumber.org \
    --cc=jpablolorenzetti@hotmail.com \
    --cc=users@dpdk.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).