[ovs-dev] [PATCH] ovsdb-idl: Add memory report function.

Dumitru Ceara dceara at redhat.com
Tue Nov 2 19:50:26 UTC 2021


On 10/14/21 1:46 PM, Ilya Maximets wrote:
> Added new function to return memory usage statistics for database
> objects inside IDL.  Statistics similar to what ovsdb-server reports.
> Not counting _Server database as it should be small, hence doesn't
> worth adding extra code to the ovsdb-cs module.  Can be added later
> if needed.
> 
> ovs-vswitchd is a user in OVS, but this API will be mostly useful for
> OVN daemons.
> 
> Signed-off-by: Ilya Maximets <i.maximets at ovn.org>
> ---
>  lib/ovsdb-idl.c   | 24 ++++++++++++++++++++++++
>  lib/ovsdb-idl.h   |  3 +++
>  vswitchd/bridge.c |  2 ++
>  3 files changed, 29 insertions(+)
> 
> diff --git a/lib/ovsdb-idl.c b/lib/ovsdb-idl.c
> index 383a601f6..b22492d5e 100644
> --- a/lib/ovsdb-idl.c
> +++ b/lib/ovsdb-idl.c
> @@ -42,6 +42,7 @@
>  #include "openvswitch/poll-loop.h"
>  #include "openvswitch/shash.h"
>  #include "skiplist.h"
> +#include "simap.h"
>  #include "sset.h"
>  #include "svec.h"
>  #include "util.h"
> @@ -465,6 +466,29 @@ ovsdb_idl_wait(struct ovsdb_idl *idl)
>      ovsdb_cs_wait(idl->cs);
>  }
>  
> +/* Returns memory usage statistics. */
> +void
> +ovsdb_idl_get_memory_usage(struct ovsdb_idl *idl, struct simap *usage)
> +{
> +    unsigned int cells = 0;
> +
> +    if (!idl) {
> +        return;
> +    }
> +
> +    for (size_t i = 0; i < idl->class_->n_tables; i++) {
> +        struct ovsdb_idl_table *table = &idl->tables[i];
> +        unsigned int n_columns = shash_count(&table->columns);

Nit: even though this is also constant time we already have the number
of columns stored in the table class, we could instead do:

unsigned int n_columns = table->class_->n_columns;

I guess this can be fixed up at apply time, therefore:

Acked-by: Dumitru Ceara <dceara at redhat.com>

Thanks,
Dumitru



More information about the dev mailing list