On 2/26/24 18:44, Ilya Maximets wrote: > Currently, ovn-controller attempts to sync all the meters on each > ofctrl_put() call. And the complexity of this logic is quadratic > because for each desired meter we perform a full scan of all the > rows in the Southbound Meter table in order to lookup a matching > meter. This is very inefficient. In a setup with 25K meters this > operation takes anywhere from 30 to 60 seconds to perform. All > that time ovn-controller is blocked and doesn't process any updates. > So, addition of new ports in such a setup becomes very slow. > > The meter lookup is performed by name and we have an index for it > in the database schema. Might as well use it. > > Using the index for lookup reduces complexity to O(n * log n). > And the time to process port addition on the same setup drops down > to just 100 - 300 ms. > > We are still iterating over all the desired meters while they can > probably be processed incrementally instead. But using an index > is a simpler fix for now. > > Fixes: 885655e16e63 ("controller: reconfigure ovs meters for ovn meters") > Fixes: 999e1adfb572 ("ovn: Support configuring meters through SB Meter > table.") > Reported-at: https://issues.redhat.com/browse/FDP-399 > Signed-off-by: Ilya Maximets <i.maxim...@ovn.org> > --- > > This is a "performance bug", so the decision to backport this or not > is on maintainers. But it is severe enough, IMO. > > controller/ofctrl.c | 37 ++++++++++++++++++++++--------------- > controller/ofctrl.h | 2 +- > controller/ovn-controller.c | 4 +++- > 3 files changed, 26 insertions(+), 17 deletions(-)
Recheck-request: github-robot-_Build_and_Test _______________________________________________ dev mailing list d...@openvswitch.org https://mail.openvswitch.org/mailman/listinfo/ovs-dev