Introduce a new 'poll group' feature to improve the efficiency of poll loop in dealing with large number of connections, and its first application to improve ovsdb-server to scale up connections.
Patch 6/6 commit log as some performance numbers. They are copied here for reference. For ovsdb-server to maintain 1000 idle connections over TCP with the default 5s probe interval, the CPU load droped from 48% to 14%. Andy Zhou (6): lib: Introduce poll group provider class lib: Add epoll poll group implementation for the Linux platform lib: Update stream class to support poll group. lib: Add poll group support in jsonrpc library. lib: add poll_block_waken_by_timer ovsdb: Change jsonrpc server to make use of poll group NEWS | 5 +- lib/automake.mk | 4 + lib/jsonrpc.c | 74 ++++++++++- lib/jsonrpc.h | 7 + lib/poll-group-epoll.c | 321 ++++++++++++++++++++++++++++++++++++++++++++++ lib/poll-group-provider.h | 156 ++++++++++++++++++++++ lib/poll-group.c | 224 ++++++++++++++++++++++++++++++++ lib/poll-group.h | 51 ++++++++ lib/poll-loop.c | 11 ++ lib/poll-loop.h | 3 + lib/stream-fd.c | 32 +++++ lib/stream-provider.h | 17 +++ lib/stream-ssl.c | 40 +++++- lib/stream-tcp.c | 3 + lib/stream-unix.c | 3 + lib/stream.c | 83 +++++++++++- lib/stream.h | 5 + ovsdb/jsonrpc-server.c | 75 ++++++++++- ovsdb/jsonrpc-server.h | 2 +- ovsdb/ovsdb-server.c | 43 +++++-- tests/ovsdb-server.at | 11 ++ 21 files changed, 1145 insertions(+), 25 deletions(-) create mode 100644 lib/poll-group-epoll.c create mode 100644 lib/poll-group-provider.h create mode 100644 lib/poll-group.c create mode 100644 lib/poll-group.h -- 1.9.1 _______________________________________________ dev mailing list dev@openvswitch.org http://openvswitch.org/mailman/listinfo/dev