ovsdb: avoid unnecessary call to ovsdb_monitor_get_update()
authorAndy Zhou <azhou@ovn.org>
Mon, 22 Feb 2016 08:35:28 +0000 (00:35 -0800)
committerAndy Zhou <azhou@ovn.org>
Wed, 24 Feb 2016 23:55:27 +0000 (15:55 -0800)
Optimizing ovsdb_jsonrpc_mintor_flush_all() by avoiding calling
ovsdb_monitor_get_update() on monitors that do not have any
unflushed updates.  This change saves CPU cycles on ovsdb-server's
main loop, but should not introduce any client visible changes.

Reported-by: Liran Schour <lirans@il.ibm.com>
Signed-off-by: Andy Zhou <azhou@ovn.org>
Acked-by: Liran Schour <lirans@il.ibm.com>
Acked-by: Ben Pfaff <blp@ovn.org>
ovsdb/jsonrpc-server.c

index 0d23b77..6f46dbc 100644 (file)
@@ -1297,6 +1297,10 @@ static struct json *
 ovsdb_jsonrpc_monitor_compose_update(struct ovsdb_jsonrpc_monitor *m,
                                      bool initial)
 {
+    if (!ovsdb_monitor_needs_flush(m->dbmon, m->unflushed)) {
+        return NULL;
+    }
+
     return ovsdb_monitor_get_update(m->dbmon, initial, &m->unflushed,
                                     m->version);
 }