bridge: Enable system stats only if turned on in the database.
authorBen Pfaff <blp@nicira.com>
Mon, 20 Jun 2011 21:21:06 +0000 (14:21 -0700)
committerBen Pfaff <blp@nicira.com>
Tue, 21 Jun 2011 20:02:28 +0000 (13:02 -0700)
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@nicira.com>
CC: David Tsai <dtsai@nicira.com>
Bug #5961.
NIC-397.

vswitchd/bridge.c
vswitchd/vswitch.ovsschema
vswitchd/vswitch.xml

index 3a9cfa9de8d08ada8a478265cc9c43f6e3c33340..d0a5764d37394b8ba69578d8c80365d3c5876980 100644 (file)
@@ -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,
index dee2a045d085c44aadf467b95da70664c04ae6d8..315affcb84837fa052d7565e5f77e0f4ab532c43 100644 (file)
@@ -1,6 +1,6 @@
 {"name": "Open_vSwitch",
- "version": "5.0.1",
- "cksum": "246745439 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"}},
index 3be4ccba4c3f8577ff280554f2cee79d6be5173d..e399eeea2f5babdac92d55ed6e730e8b38ffab2b 100644 (file)
         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
           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>