[ovs-dev] [bug5961 3/3] bridge: Enable system stats only if turned on in the database.

Ben Pfaff blp at nicira.com
Mon Jun 20 21:21:35 UTC 2011


Most hypervisors have no use for this column, so populating it just wastes
CPU time.  It can still be enabled explicitly via other-config.

CC: Peter Balland <peter at nicira.com>
CC: David Tsai <dtsai at nicira.com>
Bug #5961.
NIC-397.
---
 vswitchd/bridge.c          |   21 ++++++++++++++++++++-
 vswitchd/vswitch.ovsschema |    6 ++++--
 vswitchd/vswitch.xml       |   18 ++++++++++++++++++
 3 files changed, 42 insertions(+), 3 deletions(-)

diff --git a/vswitchd/bridge.c b/vswitchd/bridge.c
index 3a9cfa9..d0a5764 100644
--- a/vswitchd/bridge.c
+++ b/vswitchd/bridge.c
@@ -1291,6 +1291,23 @@ iface_refresh_stats(struct iface *iface)
 #undef IFACE_STATS
 }
 
+static bool
+enable_system_stats(const struct ovsrec_open_vswitch *cfg)
+{
+    const char *enable;
+
+    /* Use other-config:enable-system-stats by preference. */
+    enable = get_ovsrec_key_value(&cfg->header_,
+                                  &ovsrec_open_vswitch_col_other_config,
+                                  "enable-statistics");
+    if (enable) {
+        return !strcmp(enable, "true");
+    }
+
+    /* Disable by default. */
+    return false;
+}
+
 static void
 refresh_system_stats(const struct ovsrec_open_vswitch *cfg)
 {
@@ -1298,7 +1315,9 @@ refresh_system_stats(const struct ovsrec_open_vswitch *cfg)
     struct shash stats;
 
     shash_init(&stats);
-    get_system_stats(&stats);
+    if (enable_system_stats(cfg)) {
+        get_system_stats(&stats);
+    }
 
     ovsdb_datum_from_shash(&datum, &stats);
     ovsdb_idl_txn_write(&cfg->header_, &ovsrec_open_vswitch_col_statistics,
diff --git a/vswitchd/vswitch.ovsschema b/vswitchd/vswitch.ovsschema
index be23c92..315affc 100644
--- a/vswitchd/vswitch.ovsschema
+++ b/vswitchd/vswitch.ovsschema
@@ -1,6 +1,6 @@
 {"name": "Open_vSwitch",
- "version": "5.0.0",
- "cksum": "456700307 14434",
+ "version": "5.1.0",
+ "cksum": "154459795 14545",
  "tables": {
    "Open_vSwitch": {
      "columns": {
@@ -16,6 +16,8 @@
          "type": {"key": {"type": "uuid",
                           "refTable": "SSL"},
                   "min": 0, "max": 1}},
+       "other_config": {
+         "type": {"key": "string", "value": "string", "min": 0, "max": "unlimited"}},
        "external_ids": {
          "type": {"key": "string", "value": "string",
                   "min": 0, "max": "unlimited"}},
diff --git a/vswitchd/vswitch.xml b/vswitchd/vswitch.xml
index 3be4ccb..e399eee 100644
--- a/vswitchd/vswitch.xml
+++ b/vswitchd/vswitch.xml
@@ -25,6 +25,19 @@
         SSL used globally by the daemon.
       </column>
 
+      <column name="other_config">
+        Key-value pairs for configuring rarely used Open vSwitch features.  The
+        currently defined key-value pairs are:
+        <dl>
+          <dt><code>enable-statistics</code></dt>
+          <dd>
+            Set to <code>true</code> to enable populating the <ref
+            column="statistics"/> column or <code>false</code> (the default)
+            disable populating it.
+          </dd>
+        </dl>
+      </column>
+
       <column name="external_ids">
         Key-value pairs for use by external frameworks that integrate
         with Open vSwitch, rather than by Open vSwitch itself.  System
@@ -75,6 +88,11 @@
           apply to a platform are omitted.
         </p>
 
+        <p>
+          Statistics are disabled unless <ref column="other-config"
+          key="enable-statistics"/> is set to <code>true</code>.
+        </p>
+
         <dl>
           <dt><code>cpu</code></dt>
           <dd>
-- 
1.7.4.4




More information about the dev mailing list