On Mon, Jan 30, 2023 at 01:38:45PM +0100, Ilya Maximets wrote:
> On 1/29/23 02:33, Cheng Li wrote:
> > On Fri, Jan 27, 2023 at 04:04:55PM +0100, Ilya Maximets wrote:
> >> On 1/24/23 16:52, Kevin Traynor wrote:
> >>> On 08/01/2023 03:55, Cheng Li wrote:
> >>>> In my test, if one logical core is pinned to PMD thread while the
> >>>> other logical(of the same physical core) is not. The PMD
> >>>> performance is affected the by the not-pinned logical core load.
> >>>> This maks it difficult to estimate the loads during a dry-run.
> >>>>
> >>>> Signed-off-by: Cheng Li <lic...@chinatelecom.cn>
> >>>> ---
> >>>>   Documentation/topics/dpdk/pmd.rst | 4 ++++
> >>>>   1 file changed, 4 insertions(+)
> >>>>
> >>>> diff --git a/Documentation/topics/dpdk/pmd.rst 
> >>>> b/Documentation/topics/dpdk/pmd.rst
> >>>> index 9006fd4..b220199 100644
> >>>> --- a/Documentation/topics/dpdk/pmd.rst
> >>>> +++ b/Documentation/topics/dpdk/pmd.rst
> >>>> @@ -312,6 +312,10 @@ If not set, the default variance improvement 
> >>>> threshold is 25%.
> >>>>       when all PMD threads are running on cores from a single NUMA node. 
> >>>> In this
> >>>>       case cross-NUMA datapaths will not change after reassignment.
> >>>>   +    For the same reason, please ensure that the pmd threads are 
> >>>> pinned to SMT
> >>>> +    siblings if HyperThreading is enabled. Otherwise, PMDs within a 
> >>>> NUMA may
> >>>> +    not have the same performance.
> >>
> >> Uhm... Am I reading this wrong or this note suggests to pin PMD threads
> >> to SMT siblings?  It sounds like that's the opposite of what you were
> >> trying to say.  Siblings are sharing the same physical core, so if some
> >> PMDs are pinned to siblings, the load prediction can not work correctly.
> > 
> > Thanks for the review, Ilya.
> > 
> > The note indeed suggests to pin PMD threads to sliblings. Sliblings share
> > the same physical core, if PMDs pin one slibling while leaving the other
> > slibling of the same physical core not pinned, the load prediction may
> > not work correctly. Because the pinned slibling performance may affected
> > by the not-pinned slibling workload. So we sugguest to pin both
> > sliblings of the same physical core.
> 
> But this makes sense only if all the PMD threads are on siblings of the
> same physical core.  If more than one physical core is involved, the load
> calculations will be incorrect.  For example, let's say we have 4 threads
> A, B, C and D, where A and B are siblings and C and D are siblings.  And
> it happened that we have only 2 ports, both of which are assigned to A.
> It makes a huge difference whether we move one of the ports from A to B
> or if we move it from A to C.  It is an oversimplified example, but we
> can't rely on load calculations in general case if PMD threads are running
> on SMT siblings.

Thanks for the detail explanation, now I get your point.

In your example, PMD B,C,D having no rxq assigned will be in sleep, which
costs little CPU cycles. When a logical core(B) is sleeping, its
slibling core(A) uses most of the physical core resource, so it's
powerfull. If we move one port from A to B, one physical core is
running. If we move one port from A to C, two physical cores are
running. So the result perfromance will be huge different. Hope I
understand correctly.

To cover this case, one choice is to use only one of the sliblings while
leaving the other slibling unused(isolate). I have ever done some tests,
using both sliblings have 25% performance improvement than using only
one slibling while leaving the other slibing unused. So this may not be
a good choice.

> 
> > 
> > 
> >>
> >> Nit: s/pmd/PMD/
> >>
> >> Best regards, Ilya Maximets.
> >>
> >>>> +
> >>>>   The minimum time between 2 consecutive PMD auto load balancing 
> >>>> iterations can
> >>>>   also be configured by::
> >>>>   
> >>>
> >>> I don't think it's a hard requirement as siblings should not impact as 
> >>> much as cross-numa might but it's probably good advice in general.
> >>>
> >>> Acked-by: Kevin Traynor <ktray...@redhat.com>
> >>>
> >>> _______________________________________________
> >>> dev mailing list
> >>> d...@openvswitch.org
> >>> https://mail.openvswitch.org/mailman/listinfo/ovs-dev
> >>>
> >>
> 
_______________________________________________
dev mailing list
d...@openvswitch.org
https://mail.openvswitch.org/mailman/listinfo/ovs-dev

Reply via email to