[dpdk-dev] [PATCH 0/3] eal affinitize low priority threads to lcore 0

2014-09-12 Thread Richardson, Bruce
> -Original Message-
> From: Hiroshi Shimamoto [mailto:h-shimamoto at ct.jp.nec.com]
> Sent: Friday, September 12, 2014 12:48 AM
> To: Richardson, Bruce; dev at dpdk.org
> Subject: RE: [dpdk-dev] [PATCH 0/3] eal affinitize low priority threads to 
> lcore 0
> 
> Hi Bruce,
> 
> > Subject: [dpdk-dev] [PATCH 0/3] eal affinitize low priority threads to 
> > lcore 0
> >
> > This patchset sets things up so that we can affinitize the interrupt,
> > vfio management, and hpet timer management threads to lcore 0, so that
> > they never interfere with data plane threads.
> 
> I don't think it works well always.
> The management threads can be floating all cpus on demand, because those
> threads are created before the master thread affinity is set. The kernel
> scheduler will take care of it. And we should isolate cpus which data plane
> threads are pinned to, so the management threads cannot run on those isolated
> cpus data plane thread run.

Yes, this was my understanding as well of how things would work - we just had a 
report back of where the management threads were using the same core as the 
data-plane despite the core being isolated. I'll double-check to see if this 
really is happening and resubmit a new patch with a configurable core 
assignment if it is definitely needed.

/Bruce

> In some cases, the user may run data plane thread on lcore 0, but with
> this patchset the data plane pinned to lcore 0 always run with the
> management threads. That doesn't seem good.
> 
> I think this functionality should be conditional.
> How about to add a parameter to specify the mask for the management threads
> instead of statically assignment to lcore 0?
> 
> thanks,
> Hiroshi
> 
> >
> > Bruce Richardson (3):
> >   eal: add core id param to  eal_thread_set_affinity
> >   eal: increase scope of eal_thread_set_affinity
> >   eal: affinitize low-priority threads to lcore 0
> >
> >  lib/librte_eal/bsdapp/eal/eal_thread.c | 12 ++--
> >  lib/librte_eal/common/include/eal_private.h| 10 ++
> >  lib/librte_eal/linuxapp/eal/eal_interrupts.c   |  5 +
> >  lib/librte_eal/linuxapp/eal/eal_pci_vfio_mp_sync.c |  6 ++
> >  lib/librte_eal/linuxapp/eal/eal_thread.c   | 12 ++--
> >  lib/librte_eal/linuxapp/eal/eal_timer.c|  5 +
> >  6 files changed, 38 insertions(+), 12 deletions(-)
> >
> > --
> > 1.9.3



[dpdk-dev] [PATCH 0/3] eal affinitize low priority threads to lcore 0

2014-09-12 Thread Hiroshi Shimamoto
Hi Bruce,

> Subject: [dpdk-dev] [PATCH 0/3] eal affinitize low priority threads to lcore 0
> 
> This patchset sets things up so that we can affinitize the interrupt,
> vfio management, and hpet timer management threads to lcore 0, so that
> they never interfere with data plane threads.

I don't think it works well always.
The management threads can be floating all cpus on demand, because those
threads are created before the master thread affinity is set. The kernel
scheduler will take care of it. And we should isolate cpus which data plane
threads are pinned to, so the management threads cannot run on those isolated
cpus data plane thread run.
In some cases, the user may run data plane thread on lcore 0, but with
this patchset the data plane pinned to lcore 0 always run with the
management threads. That doesn't seem good.

I think this functionality should be conditional.
How about to add a parameter to specify the mask for the management threads
instead of statically assignment to lcore 0?

thanks,
Hiroshi

> 
> Bruce Richardson (3):
>   eal: add core id param to  eal_thread_set_affinity
>   eal: increase scope of eal_thread_set_affinity
>   eal: affinitize low-priority threads to lcore 0
> 
>  lib/librte_eal/bsdapp/eal/eal_thread.c | 12 ++--
>  lib/librte_eal/common/include/eal_private.h| 10 ++
>  lib/librte_eal/linuxapp/eal/eal_interrupts.c   |  5 +
>  lib/librte_eal/linuxapp/eal/eal_pci_vfio_mp_sync.c |  6 ++
>  lib/librte_eal/linuxapp/eal/eal_thread.c   | 12 ++--
>  lib/librte_eal/linuxapp/eal/eal_timer.c|  5 +
>  6 files changed, 38 insertions(+), 12 deletions(-)
> 
> --
> 1.9.3



[dpdk-dev] [PATCH 0/3] eal affinitize low priority threads to lcore 0

2014-09-11 Thread Stephen Hemminger
On Thu, 11 Sep 2014 23:47:52 +
Hiroshi Shimamoto  wrote:

> Hi Bruce,
> 
> > Subject: [dpdk-dev] [PATCH 0/3] eal affinitize low priority threads to 
> > lcore 0
> > 
> > This patchset sets things up so that we can affinitize the interrupt,
> > vfio management, and hpet timer management threads to lcore 0, so that
> > they never interfere with data plane threads.
> 
> I don't think it works well always.
> The management threads can be floating all cpus on demand, because those
> threads are created before the master thread affinity is set. The kernel
> scheduler will take care of it. And we should isolate cpus which data plane
> threads are pinned to, so the management threads cannot run on those isolated
> cpus data plane thread run.
> In some cases, the user may run data plane thread on lcore 0, but with
> this patchset the data plane pinned to lcore 0 always run with the
> management threads. That doesn't seem good.
> 
> I think this functionality should be conditional.
> How about to add a parameter to specify the mask for the management threads
> instead of statically assignment to lcore 0?
> 
> thanks,
> Hiroshi
> 
> > 
> > Bruce Richardson (3):
> >   eal: add core id param to  eal_thread_set_affinity
> >   eal: increase scope of eal_thread_set_affinity
> >   eal: affinitize low-priority threads to lcore 0
> > 
> >  lib/librte_eal/bsdapp/eal/eal_thread.c | 12 ++--
> >  lib/librte_eal/common/include/eal_private.h| 10 ++
> >  lib/librte_eal/linuxapp/eal/eal_interrupts.c   |  5 +
> >  lib/librte_eal/linuxapp/eal/eal_pci_vfio_mp_sync.c |  6 ++
> >  lib/librte_eal/linuxapp/eal/eal_thread.c   | 12 ++--
> >  lib/librte_eal/linuxapp/eal/eal_timer.c|  5 +
> >  6 files changed, 38 insertions(+), 12 deletions(-)
> > 
> > --
> > 1.9.3
> 

We just set the non-master DPDK worker threads to be real time by
using pthread_set_scheduler. This works very well and makes it clear to
Linux scheduler what the intention is. This also improves wakeup behavior
from sleeps.


[dpdk-dev] [PATCH 0/3] eal affinitize low priority threads to lcore 0

2014-09-11 Thread Bruce Richardson
This patchset sets things up so that we can affinitize the interrupt,
vfio management, and hpet timer management threads to lcore 0, so that
they never interfere with data plane threads.

Bruce Richardson (3):
  eal: add core id param to  eal_thread_set_affinity
  eal: increase scope of eal_thread_set_affinity
  eal: affinitize low-priority threads to lcore 0

 lib/librte_eal/bsdapp/eal/eal_thread.c | 12 ++--
 lib/librte_eal/common/include/eal_private.h| 10 ++
 lib/librte_eal/linuxapp/eal/eal_interrupts.c   |  5 +
 lib/librte_eal/linuxapp/eal/eal_pci_vfio_mp_sync.c |  6 ++
 lib/librte_eal/linuxapp/eal/eal_thread.c   | 12 ++--
 lib/librte_eal/linuxapp/eal/eal_timer.c|  5 +
 6 files changed, 38 insertions(+), 12 deletions(-)

-- 
1.9.3