summaryrefslogtreecommitdiff
path: root/vswitchd
diff options
context:
space:
mode:
authorAlex Wang <alexw@nicira.com>2014-09-30 13:46:22 -0700
committerAlex Wang <alexw@nicira.com>2014-09-30 17:34:04 -0700
commit6bef3c7ca859f208239ca61ec3b25c09a3571553 (patch)
treef69d6e98c99d1cfa249022ba9343ed36457eb7f9 /vswitchd
parentd7fdacb78804599141d56c98a303e2ba6c12fd9b (diff)
downloadopenvswitch-6bef3c7ca859f208239ca61ec3b25c09a3571553.tar.gz
bridge: Fix high cpu utilization.
When there are more than one ovs-vswitchd processes started, only one process is enabled. The disabled processes should just sleep. However, a bug in ovs makes the disabled processes keep waking up on global connectivity sequence number which is never sync'ed. Consequently, those processes use 100% cpu. This commit fixes the bug by always sync up the connectivity sequence number for disabled processes. Reported-by: Ben Pfaff <blp@nicira.com> Signed-off-by: Alex Wang <alexw@nicira.com> Acked-by: Joe Stringer <joestringer@nicira.com>
Diffstat (limited to 'vswitchd')
-rw-r--r--vswitchd/bridge.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/vswitchd/bridge.c b/vswitchd/bridge.c
index 99dd21f9a..c5c6096b0 100644
--- a/vswitchd/bridge.c
+++ b/vswitchd/bridge.c
@@ -2772,6 +2772,9 @@ bridge_run(void)
* with the current situation of multiple ovs-vswitchd daemons,
* disable system stats collection. */
system_stats_enable(false);
+ /* This prevents the process from constantly waking up on
+ * connectivity seq. */
+ connectivity_seqno = seq_read(connectivity_seq_get());
return;
} else if (!ovsdb_idl_has_lock(idl)) {
return;