[ovs-dev] [PATCH ovn 4/4] ovn-controller: Support configuration option ovn-delay-nb-cfg-report.

Han Zhou hzhou at ovn.org
Tue Sep 1 23:26:45 UTC 2020


This option is added to avoid the flooding of nb_cfg updates from
a large nubmer of hypervisors interfere with the original SB DB
data distribution and handling, so that the e2e control plane latency
can be measured more accurately during scale testing.

Signed-off-by: Han Zhou <hzhou at ovn.org>
---
 controller/ovn-controller.8.xml | 12 ++++++++++++
 controller/ovn-controller.c     |  9 +++++++++
 2 files changed, 21 insertions(+)

diff --git a/controller/ovn-controller.8.xml b/controller/ovn-controller.8.xml
index 6687731..4cb3f41 100644
--- a/controller/ovn-controller.8.xml
+++ b/controller/ovn-controller.8.xml
@@ -233,6 +233,18 @@
         The boolean flag indicates if the chassis is used as an
         interconnection gateway.
       </dd>
+
+      <dt><code>external_ids:ovn-delay-nb-cfg-report</code></dt>
+      <dd>
+        An integer that represents the time (in seconds) to sleep before
+        <code>ovn-controller</code> updating <code>nb_cfg</code> column
+        of <code>Chassis_Private</code> table after it completes processing
+        the corresponding changes. By default it is 0 (meaning do not sleep).
+        This value can be configured when doing control plane latency testing,
+        to make sure the updates of <code>nb_cfg</code> to the Southbound DB
+        from a large number of hypervisors do not interfere with the original
+        Southbound DB data processing.
+      </dd>
     </dl>
 
     <p>
diff --git a/controller/ovn-controller.c b/controller/ovn-controller.c
index 89f10a6..5ab5a13 100644
--- a/controller/ovn-controller.c
+++ b/controller/ovn-controller.c
@@ -2568,6 +2568,15 @@ main(int argc, char *argv[])
                     sbrec_chassis_private_set_nb_cfg(chassis_private, cur_cfg);
                     sbrec_chassis_private_set_nb_cfg_timestamp(
                         chassis_private, time_wall_msec());
+                    const struct ovsrec_open_vswitch *cfg =
+                        ovsrec_open_vswitch_first(ovs_idl_loop.idl);
+                    if (cfg) {
+                        int delay_cfg_report = smap_get_int(&cfg->external_ids,
+                                               "ovn-delay-nb-cfg-report", 0);
+                        if (delay_cfg_report) {
+                            xsleep(delay_cfg_report);
+                        }
+                    }
                 }
             }
 
-- 
2.1.0



More information about the dev mailing list