[ovs-dev] [PATCH 0/6] DPDK: simplify configuration

Daniele Di Proietto diproiettod at vmware.com
Wed Mar 18 18:34:30 UTC 2015


> On 18 Mar 2015, at 16:53, Traynor, Kevin <kevin.traynor at intel.com> wrote:
> 
>> 
>> -----Original Message-----
>> From: Daniele Di Proietto [mailto:diproiettod at vmware.com]
>> Sent: Monday, March 16, 2015 6:16 PM
>> To: Traynor, Kevin
>> Cc: dev at openvswitch.org
>> Subject: Re: [ovs-dev] [PATCH 0/6] DPDK: simplify configuration
>> 
>> 
>>> On 16 Mar 2015, at 15:18, Traynor, Kevin <kevin.traynor at intel.com> wrote:
>>> 
>>>> -----Original Message-----
>>>> From: dev [mailto:dev-bounces at openvswitch.org] On Behalf Of Daniele Di
>>>> Proietto
>>>> Sent: Thursday, March 12, 2015 6:05 PM
>>>> To: dev at openvswitch.org
>>>> Subject: [ovs-dev] [PATCH 0/6] DPDK: simplify configuration
>>>> 
>>>> This series improves OVS configuration with DPDK in three ways:
>>>> 
>>>> * netdev-dpdk is patched to work on smaller systems (without 1GB
>> hugepages)
>>>> or with smaller NICs (without lots of transmission queues).
>>>> * the 'other_config:nonpmd-cpu-mask' key is introduced: it can be used to
>>>> limit OVS non PMD threads to a particular set of cores.
>>>> * the 'other_config:n-pmd-cores' key is introduced: it allows setting the
>>>> number of PMD threads without specifing a CPU mask.
>>> 
>>> Hi, I've reviewed this patchset - few comments/questions on it…
>> 
>> Hi Kevin, thanks
>> 
>>> I haven't tested yet - but I'm wondering what is the impact to the dpdk -c
>>> parameter. Is it no longer used for OVS?
>>> 
>> 
>> Yes, that’s correct. It should have no impact on OVS. I think we
>> should also provide a default, i.e. generate the parameters passed to
>> dpdk_eal_init at some point.
>> 
>>> At present the NON_PMD_CORE_ID define overrides the db settings (which is
>>> clearly documented). Is it needed now that a db key is available? Perhaps
>>> it would make things simpler that the define is overridden when a key is
>>> specified?
>>> 
>> 
>> We check NON_PMD_CORE_ID often in the fast path.  I would prefer leaving it
>> as
>> it is right now and removing this limitation later, making sure that it has
>> no
>> impact on performance.
> 
> Hi, I've tested the core pinning. Everything worked as I expected with a 
> couple of exceptions. There was no noticeable negative effect on datapath 
> performance.
> 
> - the NON_PMD_CORE_ID is used *in addition* to the mask for nonpmd's - I think 
>  this should get a mention in the docs.

I mentioned it in vswitchd/vswitch.xml:

        <p>
          Please note that core 0 (NON_PMD_CORE_ID in the code) is always used
          for non PMD threads, even if unset in this mask.
        </p>

and in INSTALL.DPDK.md:

   `ovs-vsctl set Open_vSwitch . other_config:nonpmd-cpu-mask=<hex string>`

   The above command will limit OVS non PMD threads on the CPU set specified
   by the hex string.  Please note that core 0 is always used by non PMD
   threads, even if it is unset in this mask. For more information,
   please refer to `man ovs-vswitchd.conf.db`

I thought it was clear enough, but we can always improve it

> - I haven't done it before, so I'm not sure if it's related to these changes, 
>  but I wasn't able to get pmd's setup on the second socket. Getting this 
>  error "dpif_netdev|ERR|Cannot create pmd threads due to out of unpinned 
>  cores on numa node”.

If you’re trying to use a NIC attached to NUMA socket 0 and you’re specifying
a CPU mask without any core attached to NUMA socket 0, then the error makes sense.
If you specify a CPU mask I expect that you know what you’re doing, you know about
NUMA and stuff.
To prevent this kind of errors the series introduces the far simpler ’n-pmd-cores’
parameter: the user doesn’t need to be aware of the NUMA configuration at all.

Does this make sense?

> - There is still a few requirements regarding the -c option as it's not 
>  completely 'don't care' now. e.g. it can't be set to 0. These would be 
>  redundant if you do remove from it the cmd line - if they end up staying 
>  I can update the docs.

You’re right, it cannot be zero. I was hoping to remove it anyway.

Thanks for the testing,

Daniele


More information about the dev mailing list