[ovs-dev] [PATCH v3 ovn 4/4] controller: binding: add memory accounting for local_lports and related_lports

Dumitru Ceara dceara at redhat.com
Thu Oct 14 11:05:41 UTC 2021


On 10/14/21 1:01 PM, Lorenzo Bianconi wrote:
>> On 10/14/21 12:45 PM, Lorenzo Bianconi wrote:
>>>> On 9/25/21 12:19 AM, Lorenzo Bianconi wrote:
>>>>> Introduce memory accounting for:
>>>>> - binding local_lports map
>>>>> - binding related_lports map
>>>>>
>>>>> Signed-off-by: Lorenzo Bianconi <lorenzo.bianconi at redhat.com>
>>>>> ---
>>>>>  controller/binding.c        | 59 +++++++++++++++++++++++++++++++++++++
>>>>>  controller/binding.h        |  5 ++++
>>>>>  controller/ovn-controller.c |  5 ++--
>>>>>  3 files changed, 67 insertions(+), 2 deletions(-)
>>>>>
>>>>> diff --git a/controller/binding.c b/controller/binding.c
>>>>> index 661b4bb24..ec1e8bec7 100644
>>>>> --- a/controller/binding.c
>>>>> +++ b/controller/binding.c
>>>>> @@ -39,6 +39,31 @@
>>>>>  
>>>>>  VLOG_DEFINE_THIS_MODULE(binding);
>>>>>  
>>>>> +static uint64_t local_lports_usage;
>>>>> +static uint64_t related_lports_usage;
>>>>> +
>>>>> +static void
>>>>> +sset_mem_update(uint64_t *usage, struct sset *set,
>>>>> +                const char *name, bool erase)
>>>>> +{
>>>>> +    struct sset_node *node = sset_find(set, name);
>>>>> +
>>>>> +    if (!node && !erase) { /* add new element */
>>>>> +        *usage += (sizeof *node + strlen(name));
>>>>> +    } else if (node && erase) { /* remove an element */
>>>>> +        *usage -= (sizeof *node + strlen(name));
>>>>> +    }
>>>>> +}
>>>>> +
>>>>> +static void
>>>>> +sset_mem_clear(struct sset *set, uint64_t *usage)
>>>>> +{
>>>>> +    const char *name;
>>>>> +    SSET_FOR_EACH (name, set) {
>>>>> +        sset_mem_update(usage, set, name, true);
>>>>> +    }
>>>>> +}
>>>>> +
>>>>
>>>> I'm not too sure about this.  These functions are very generic.  I think
>>>> this should be part of the sset code itself.  Maybe a sset should just
>>>> automatically (or if configured) track all the memory it owns?  What do
>>>> you think?
>>>
>>> +Ilya
>>>
>>> I guess it would be a nice to have. sset are widely used but I do not think
>>> this patch will introduce a huge overhead.
>>>
>>> Regarding the specific patch we can remove it from the series in order to
>>> unlock it or we can have a local routines for the moment and then remove them
>>> when we have sset support. What do you think?
>>
>> I don't really expect the local_lports and related_lports ssets to grow
>> too big so I think we can probably wait with this patch until we have a
>> more generic solution, maybe directly in sset.
> 
> so we can just remove the patch from the series and repost it w/o 4/4
> 

Sounds good to me, thanks!



More information about the dev mailing list