This is the new 'poll group' feature I have been working on improve the efficiency in dealing with large number of connections, and its first application to improve ovsdb-sever.
There is a known limitation: The probing feature does not work properly. Poll group avoids waking up a connection if there is no active I/O going on. An inactive session won't send out probes. Timed wake up currently bypass those connections per design. I can think of a few options to improve / restore this feature if necessary. In the mean time, the TCP keep alive option, suggested on OVN IRC channel also looks attractive. Subject: [poll group RFC 0/6] *** SUBJECT HERE *** Andy Zhou (6): ovsdb-server: add --disable-epoll command line option 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. ovsdb: Change jsonrpc server to make use of poll group lib/automake.mk | 4 + lib/jsonrpc.c | 74 ++++++++++- lib/jsonrpc.h | 7 + lib/poll-group-epoll.c | 321 ++++++++++++++++++++++++++++++++++++++++++++++ lib/poll-group-provider.h | 157 +++++++++++++++++++++++ lib/poll-group.c | 224 ++++++++++++++++++++++++++++++++ lib/poll-group.h | 51 ++++++++ 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 | 74 ++++++++++- ovsdb/jsonrpc-server.h | 2 +- ovsdb/ovsdb-server.c | 43 +++++-- 17 files changed, 1116 insertions(+), 24 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