[ovs-dev] [PATCH] ovn: Avoid nb_cfg update notification flooding

Han Zhou zhouhan at gmail.com
Sun Mar 18 04:59:02 UTC 2018


On Fri, Mar 16, 2018 at 4:24 PM, Han Zhou <zhouhan at gmail.com> wrote:
>
>
>
> On Fri, Mar 16, 2018 at 3:36 PM, Ben Pfaff <blp at ovn.org> wrote:
> >
> > On Fri, Mar 16, 2018 at 02:31:49PM -0700, Han Zhou wrote:
> > > nb_cfg as a mechanism to "ping" OVN control plane is very useful
> > > in many ways. However, the current implementation will trigger
> > > update notifications flooding in the whole control plane. Each
> > > HV updates to SB the nb_cfg number and all these updates are
> > > notified to all the other HVs, which is O(n^2). Although updates
> > > are batched in fewers notifications than n^2, it still generates
> > > significant load on SB DB and also on ovn-controllers.
> > >
> > > To solve this problem and make the mechanism more useful in large
> > > scale producation deployment, this patch separates the per HV
> > > nb_cfg data in SB from the Chassis table to a separate table, so
> > > that each HV can conditionally monitor and get updates only for
> > > its own record.
> > >
> > > Signed-off-by: Han Zhou <hzhou8 at ebay.com>
> >
> > By removing columns this will break upgrades.  Do you have another idea?
>
> Can we just keep the old nb_cfg column in the schema but don't use it,
just for ovsdb upgrade to work?

Hi Ben,

Here is the test result in ovn-scale-test environment, with 1K sandbox HVs
and 10K ports created, and then do the sync test when the system is idle,
with command: time ovn-nbctl --wait=hv sync

Original result:
real    4m52.926s
user    0m0.328s
sys     0m0.004s

With this patch:
real    0m11.405s
user    0m0.316s
sys     0m0.016s

As the result is very promising, I would like to submit v2 to keep the old
column for upgrading purpose. Do you have any other idea?

Thanks,
Han


More information about the dev mailing list