From: Ben Pfaff Date: Tue, 21 Jun 2011 22:20:56 +0000 (-0700) Subject: bridge: Enable system stats only if turned on in the database. X-Git-Url: http://git.onelab.eu/?p=sliver-openvswitch.git;a=commitdiff_plain;h=baac62663e6f7990a9d60d95896287507b0eab36 bridge: Enable system stats only if turned on in the database. 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 CC: David Tsai Bug #5961. NIC-397. --- diff --git a/vswitchd/bridge.c b/vswitchd/bridge.c index 17c18daf8..d44f4803b 100644 --- a/vswitchd/bridge.c +++ b/vswitchd/bridge.c @@ -1343,6 +1343,23 @@ iface_refresh_stats(struct iface *iface) ovsrec_interface_set_statistics(iface->cfg, keys, values, n); } +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) { @@ -1350,7 +1367,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 e808aa3d9..1cec45ff6 100644 --- a/vswitchd/vswitch.ovsschema +++ b/vswitchd/vswitch.ovsschema @@ -1,6 +1,6 @@ {"name": "Open_vSwitch", - "version": "3.0.0", - "cksum": "705848946 15525", + "version": "3.1.0", + "cksum": "1438894691 15636", "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 2b12e299f..5c532e56f 100644 --- a/vswitchd/vswitch.xml +++ b/vswitchd/vswitch.xml @@ -25,6 +25,19 @@ SSL used globally by the daemon. + + Key-value pairs for configuring rarely used Open vSwitch features. The + currently defined key-value pairs are: +
+
enable-statistics
+
+ Set to true to enable populating the column or false (the default) + disable populating it. +
+
+
+ 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.

+

+ Statistics are disabled unless is set to true. +

+
cpu