summaryrefslogtreecommitdiff
path: root/ovsdb
diff options
context:
space:
mode:
authorAndy Zhou <azhou@ovn.org>2016-02-03 20:57:32 -0800
committerAndy Zhou <azhou@ovn.org>2016-02-05 14:03:20 -0800
commite0c73ed1310554d9326adbc54e1dd279e1ae8c1f (patch)
tree98f8c556beb9b2df953d4e323331945122237f2e /ovsdb
parent9aad5a5a96bac423b05b5bb3afb7add2df44bba9 (diff)
downloadopenvswitch-e0c73ed1310554d9326adbc54e1dd279e1ae8c1f.tar.gz
ovsdb-server: fix monitor counters reported by memory/show
Commit 4c2809787cdbc774 (ovsdb-monitor: add json cache) introduced an optimization that allows jsonrpc session to share monitors. However, the memory/show implementation was not updated to match the implementation; it still assumes that each jsonrpc session uses its own monitor, thus are likely to over reporting the number. This patch fix the bug and reports the actual number of monitor used by the ovsdb-server. Signed-off-by: Andy Zhou <azhou@ovn.org> Acked-by: Ben Pfaff <blp@ovn.org>
Diffstat (limited to 'ovsdb')
-rw-r--r--ovsdb/jsonrpc-server.c1
-rw-r--r--ovsdb/monitor.c8
-rw-r--r--ovsdb/monitor.h2
-rw-r--r--ovsdb/ovsdb-server.c2
4 files changed, 12 insertions, 1 deletions
diff --git a/ovsdb/jsonrpc-server.c b/ovsdb/jsonrpc-server.c
index 206570251..ee2026eb7 100644
--- a/ovsdb/jsonrpc-server.c
+++ b/ovsdb/jsonrpc-server.c
@@ -533,7 +533,6 @@ ovsdb_jsonrpc_session_get_memory_usage(const struct ovsdb_jsonrpc_session *s,
struct simap *usage)
{
simap_increase(usage, "triggers", hmap_count(&s->triggers));
- simap_increase(usage, "monitors", hmap_count(&s->monitors));
simap_increase(usage, "backlog", jsonrpc_session_get_backlog(s->js));
}
diff --git a/ovsdb/monitor.c b/ovsdb/monitor.c
index 0dde54e2a..5ae9cdbda 100644
--- a/ovsdb/monitor.c
+++ b/ovsdb/monitor.c
@@ -1145,6 +1145,14 @@ ovsdb_monitor_destroy_callback(struct ovsdb_replica *replica)
}
}
+/* Add some memory usage statics for monitors into 'usage', for use with
+ * memory_report(). */
+void
+ovsdb_monitor_get_memory_usage(struct simap *usage)
+{
+ simap_put(usage, "monitors", hmap_count(&ovsdb_monitors));
+}
+
static const struct ovsdb_replica_class ovsdb_jsonrpc_replica_class = {
ovsdb_monitor_commit,
ovsdb_monitor_destroy_callback,
diff --git a/ovsdb/monitor.h b/ovsdb/monitor.h
index d6e9635e6..fb1043541 100644
--- a/ovsdb/monitor.h
+++ b/ovsdb/monitor.h
@@ -77,4 +77,6 @@ bool ovsdb_monitor_needs_flush(struct ovsdb_monitor *dbmon,
uint64_t next_transaction);
void ovsdb_monitor_get_initial(const struct ovsdb_monitor *dbmon);
+
+void ovsdb_monitor_get_memory_usage(struct simap *usage);
#endif
diff --git a/ovsdb/ovsdb-server.c b/ovsdb/ovsdb-server.c
index 231ba2fb7..fa662b19a 100644
--- a/ovsdb/ovsdb-server.c
+++ b/ovsdb/ovsdb-server.c
@@ -35,6 +35,7 @@
#include "jsonrpc-server.h"
#include "list.h"
#include "memory.h"
+#include "monitor.h"
#include "ovsdb.h"
#include "ovsdb-data.h"
#include "ovsdb-types.h"
@@ -138,6 +139,7 @@ main_loop(struct ovsdb_jsonrpc_server *jsonrpc, struct shash *all_dbs,
simap_init(&usage);
ovsdb_jsonrpc_server_get_memory_usage(jsonrpc, &usage);
+ ovsdb_monitor_get_memory_usage(&usage);
SHASH_FOR_EACH(node, all_dbs) {
struct db *db = node->data;
ovsdb_get_memory_usage(db->db, &usage);