On 28/01/2025 11:38, Roi Dayan wrote:
> 
> 
> On 22/01/2025 14:26, Kevin Traynor wrote:
>> On 20/01/2025 10:12, Roi Dayan via dev wrote:
>>> From: Eli Britstein <[email protected]>
>>>
>>> ovs-vsctl set o . other_config:dpdk-max-memzones=XXX.
>>> This configuration requires restart in order to take effect.
>>>
>>
>> Hi Roi/Eli,
>>
>> Before we add a low level configuration knob - why is it needed, is the
>> default in DPDK not suitable for some cases ?
>>
>> Looking from OVS user perspective, they would need some documentation on:
>> - how they will know if they need to use this
>> - how to calculate a suitable value
>>
>> It would be ok to point to DPDK for further details, but OVS user will
>> need some starting points. Otherwise you will have people trying random
>> numbers if they encounter any memory issues.
>>
>> thanks,
>> Kevin.
> 
> Hi Kevin,
> 
> Thanks for the review. It's like you said really. In some scenarios, and
> with custom code we tested, we found the need to increase the default for
> more dpdk memory zones. That said, I'm not 100% sure if we still need to
> change it but we thought that an option to be able to modify the default
> might be useful for the future.
> I'm also not able to point to DPDK for further details as I couldn't find
> a specific help page for this besides a man page that just say the function
> exists.
> 
> So if it's not helpful as it is we can skip it for now.
> 

Hi Roi,

ok, let's drop it for now. We can always revisit in the future if the
need arises.

> If someone can review the second, and not related, patch in this
> series or if no comments at all then I'll resend it alone at a
> later time.
> 

Yes, we'll review that. No need to resend unless there is rework required.

thanks,
Kevin.

> Thanks,
> Roi
> 
> 
> 
>>
>>> Signed-off-by: Eli Britstein <[email protected]>
>>> Acked-by: Roi Dayan <[email protected]>
>>> ---
>>>  NEWS                 |  2 ++
>>>  lib/dpdk.c           | 26 ++++++++++++++++++++++++++
>>>  vswitchd/vswitch.xml | 12 ++++++++++++
>>>  3 files changed, 40 insertions(+)
>>>
>>> diff --git a/NEWS b/NEWS
>>> index d59692d8b305..e232d35067ed 100644
>>> --- a/NEWS
>>> +++ b/NEWS
>>> @@ -89,6 +89,8 @@ v3.4.0 - 15 Aug 2024
>>>       * Link status changes are now handled via interrupt mode if the DPDK
>>>         driver supports it.  It is possible to revert to polling mode by 
>>> setting
>>>         per interface 'options:dpdk-lsc-interrupt' to 'false'.
>>> +     * New configuration knob 'other_config:dpdk-max-memzones' to set dpdk
>>> +       max memory zones.
>>>     - Python:
>>>       * Added custom transaction support to the Idl via add_op().
>>>       * Added support for different output formats like 'json' to Python's
>>> diff --git a/lib/dpdk.c b/lib/dpdk.c
>>> index b7516257c5e4..de729bedd9da 100644
>>> --- a/lib/dpdk.c
>>> +++ b/lib/dpdk.c
>>> @@ -310,6 +310,28 @@ malloc_dump_stats_wrapper(FILE *stream)
>>>      rte_malloc_dump_stats(stream, NULL);
>>>  }
>>>  
>>> +#ifdef ALLOW_EXPERIMENTAL_API
>>
>> rte_memzone_max_set() is no longer experimental
>> https://git.dpdk.org/dpdk-stable/tree/lib/eal/version.map#n229
>>
>>> +static void
>>> +dpdk_init_max_memzones(const struct smap *ovs_other_config)
>>> +{
>>> +    uint32_t max_memzones;
>>> +    int rv;
>>> +
>>> +    max_memzones = smap_get_uint(ovs_other_config, "dpdk-max-memzones", 0);
>>> +
>>> +    if (!max_memzones) {
>>> +        return;
>>> +    }
>>> +
>>> +    rv = rte_memzone_max_set(max_memzones);
>>> +    if (rv) {
>>> +        VLOG_WARN("Failed to set max memzones to %"PRIu32, max_memzones);
>>> +    } else {
>>> +        VLOG_INFO("Setting max memzones to %"PRIu32, max_memzones);
>>> +    }
>>> +}
>>> +#endif
>>> +
>>>  static bool
>>>  dpdk_init__(const struct smap *ovs_other_config)
>>>  {
>>> @@ -342,6 +364,10 @@ dpdk_init__(const struct smap *ovs_other_config)
>>>          auto_determine = false;
>>>      }
>>>  
>>> +#ifdef ALLOW_EXPERIMENTAL_API
>>> +    dpdk_init_max_memzones(ovs_other_config);
>>> +#endif
>>> +
>>>      /**
>>>       * NOTE: This is an unsophisticated mechanism for determining the DPDK
>>>       * main core.
>>> diff --git a/vswitchd/vswitch.xml b/vswitchd/vswitch.xml
>>> index 275bcbec0b5a..38259e251c9d 100644
>>> --- a/vswitchd/vswitch.xml
>>> +++ b/vswitchd/vswitch.xml
>>> @@ -425,6 +425,18 @@
>>>          </p>
>>>        </column>
>>>  
>>> +      <column name="other_config" key="dpdk-max-memzones"
>>> +              type='{"type": "integer"}'>
>>> +        <p>
>>> +          Specifies the maximum number of memzones that can be created in
>>> +          DPDK.
>>> +        </p>
>>> +        <p>
>>> +          The default is empty, keeping DPDK's default. Changing this value
>>> +          requires restarting the daemon.
>>> +        </p>
>>> +      </column>
>>> +
>>>        <column name="other_config" key="dpdk-extra"
>>>                type='{"type": "string"}'>
>>>          <p>
>>
> 

_______________________________________________
dev mailing list
[email protected]
https://mail.openvswitch.org/mailman/listinfo/ovs-dev

Reply via email to