diff options
author | Andy Zhou <azhou@ovn.org> | 2016-02-03 20:57:32 -0800 |
---|---|---|
committer | Andy Zhou <azhou@ovn.org> | 2016-02-05 14:03:20 -0800 |
commit | e0c73ed1310554d9326adbc54e1dd279e1ae8c1f (patch) | |
tree | 98f8c556beb9b2df953d4e323331945122237f2e /ovsdb | |
parent | 9aad5a5a96bac423b05b5bb3afb7add2df44bba9 (diff) | |
download | openvswitch-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.c | 1 | ||||
-rw-r--r-- | ovsdb/monitor.c | 8 | ||||
-rw-r--r-- | ovsdb/monitor.h | 2 | ||||
-rw-r--r-- | ovsdb/ovsdb-server.c | 2 |
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); |