[ovs-dev] [PATCH ovn 1/2] nbctl: Cache to which switch or router particular port belongs.

Dumitru Ceara dceara at redhat.com
Wed Dec 9 20:33:45 UTC 2020


On 12/8/20 1:56 PM, Ilya Maximets wrote:
> nbctl always iterates over all ports in all logical switches or routers
> to find to which logical router/switch current port belongs.  This
> could be optimized by iterating only once and caching the current
> state.  This should improve a little bit performance of this utility
> in case where many updates are passed in a single nbctl command.
> 
> However, this change alone will slightly reduce performance of
> standalone commands, since we're iterating twice over ports on port
> deletion.
> 
> Cache is required for the upcoming change that will make nbctl to use
> partial set updates.  It will allow us to drop redundant iterations
> over ports, i.e. to not duplicate work.
> 
> Signed-off-by: Ilya Maximets <i.maximets at ovn.org>
> ---
>  utilities/ovn-nbctl.c | 209 +++++++++++++++++++++++++++++-------------
>  1 file changed, 146 insertions(+), 63 deletions(-)
> 
> diff --git a/utilities/ovn-nbctl.c b/utilities/ovn-nbctl.c
> index d19e1b6c6..3886da889 100644
> --- a/utilities/ovn-nbctl.c
> +++ b/utilities/ovn-nbctl.c
> @@ -125,6 +125,61 @@ static char * OVS_WARN_UNUSED_RESULT main_loop(const char *args,
>                                                 const struct timer *);
>  static void server_loop(struct ovsdb_idl *idl, int argc, char *argv[]);
>  
> +/* A context for keeping track of which switch/router certain ports are
> + * connected to. */
> +struct nbctl_context {
> +    struct ctl_context base;
> +    struct shash lsp_to_ls;
> +    struct shash lrp_to_lr;

Hi Ilya,

Tiny nit: There are already functions called lsp_to_ls/lrp_to_lr. Not a
big deal but it might create a bit of confusion. What about using
lsp_to_ls_map/lrp_to_lr_map?

The rest looks good to me, therefore:

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

Thanks,
Dumitru



More information about the dev mailing list