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

Ilya Maximets i.maximets at ovn.org
Thu Nov 4 22:57:28 UTC 2021


On 11/2/21 20:50, Dumitru Ceara wrote:
> 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, Han and Dumitru!
I made the above change and applied the patch.

Best regards, Ilya Maximets.


More information about the dev mailing list