This patch set implements two ideas improve ovsdb connection scaling: * Allow multiple jsonrpc connection to share a single ovsdb monitor, thus maintaining a single set of changes. * With in the same monitor, cache the json object generated for an update. If the same update is requested by another jsonrpc connection, the cached json object can be used, avoid regenerating it from scratch.
--- I don't yet have any useful data on speed improvements from both changes. The plan is to to collect them and report back in the next few days. If we don't want to apply them without the performance data, then please consider this posting as RFC. Andy Zhou (18): ovsdb: refactoring jsonrpc-server.c ovsdb: make setting mt->select into its own functions ovsdb: refactor ovsdb_jsonrpc_parse_monitor_request ovsdb: refactor ovsdb_monitor_add_column() ovsdb: refactoring ovsdb_jsonrpc_monitor_compose_table_update() ovsdb: refactoring ovsdb_jsonrpc_monitor_needs_flush ovsdb: rename ovsdb_jsonrpc_monitor_get_initial() ovsdb: refactoring ovsdb_monitor_destroy() ovsdb: Split out monitor backend functions to ovsdb-monitor.c/h ovsdb: refactoring ovsdb_monitor_get_initial ovsdb: ovsdb-monitor stores jsonrpc-monitor in a linked-list ovsdb: add transaction ids ovsdb: rename jsonrpc_monitor_compose_table_update() ovsdb: add ovsdb_monitor_changes ovsdb: allow a list of 'ovsdb_monitor_changes' in each ovsdb monitor table ovsdb: refactor ovsdb_monitor_create() ovsdb: allow multiple jsonrpc monitors to share a single ovsdb monitor ovsdb: add json cache ovsdb/automake.mk | 2 + ovsdb/jsonrpc-server.c | 556 ++++---------------------- ovsdb/jsonrpc-server.h | 3 + ovsdb/ovsdb-monitor.c | 1024 ++++++++++++++++++++++++++++++++++++++++++++++++ ovsdb/ovsdb-monitor.h | 71 ++++ 5 files changed, 1167 insertions(+), 489 deletions(-) create mode 100644 ovsdb/ovsdb-monitor.c create mode 100644 ovsdb/ovsdb-monitor.h -- 1.9.1 _______________________________________________ dev mailing list dev@openvswitch.org http://openvswitch.org/mailman/listinfo/dev