[ovs-dev] [PATCH v3 ovn 3/4] controller: add memory accounting for local_datapath

Dumitru Ceara dceara at redhat.com
Fri Oct 8 14:51:00 UTC 2021


On 9/25/21 12:19 AM, Lorenzo Bianconi wrote:
> Similar to if-status-mgr, track memory allocated for local_datapath.
> 
> Signed-off-by: Lorenzo Bianconi <lorenzo.bianconi at redhat.com>
> ---

Hi Lorenzo,

>  controller/binding.c        |  3 +++
>  controller/local_data.c     | 50 +++++++++++++++++++++++++++++++++++++
>  controller/local_data.h     |  3 +++
>  controller/ovn-controller.c |  1 +
>  4 files changed, 57 insertions(+)
> 
> diff --git a/controller/binding.c b/controller/binding.c
> index c037b2352..661b4bb24 100644
> --- a/controller/binding.c
> +++ b/controller/binding.c
> @@ -374,6 +374,8 @@ update_ld_external_ports(const struct sbrec_port_binding *binding_rec,
>      struct local_datapath *ld = get_local_datapath(
>          local_datapaths, binding_rec->datapath->tunnel_key);
>      if (ld) {
> +        local_datapath_ext_port_mem_update(ld, binding_rec->logical_port,
> +                                           false);
>          shash_replace(&ld->external_ports, binding_rec->logical_port,
>                        binding_rec);
>      }
> @@ -1756,6 +1758,7 @@ remove_pb_from_local_datapath(const struct sbrec_port_binding *pb,
>              ld->localnet_port = NULL;
>          }
>      } else if (!strcmp(pb->type, "external")) {
> +        local_datapath_ext_port_mem_update(ld, pb->logical_port, true);
>          shash_find_and_delete(&ld->external_ports, pb->logical_port);
>      }
>  }

I think the better way of doing this is to add functions to local_data.c
for external ports too.  We have something similar for peer ports:

add_local_datapath_peer_port()
remove_local_datapath_peer_port()

We can create new ones in local_data.c:

add_local_datapath_external_port()
remove_local_datapath_external_port()

And also do the memory accounting there.  Like that we don't have to
expose local_datapath_ext_port_mem_update(), it can be internal inside
the local_data.c module.

Regards,
Dumitru



More information about the dev mailing list