[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