This series improves ovs-vswitchd performance for short flows about 3X, from about 40,000 flows/s to about 120,000. Tomorrow I will post more detailed performance analysis.
Ben Pfaff (26): ofproto-dpif: Keep subfacet "used" times more up-to-date. ofproto-dpif: Drop unneeded _SAFE from iteration in handle_flow_miss(). ofproto-dpif: Batch flow uninstallations due to expiration. dpif: Include TCP flags in "ovs-dpctl dump-flows" output. netlink-socket: Avoid forcing a reply for final message in a transaction. ofproto-dpif: Don't do any accounting at all when removing facets. ofpbuf: New functions ofpbuf_use_stub() and ofpbuf_get_uninit_pointer(). ofproto-dpif: Avoid malloc() in common cases for xlate_actions(). dpif-linux: Avoid malloc() in dpif_linux_operate(). ofproto-dpif: Avoid computing flow hash multiple times. netlink: Postpone choosing sequence numbers until send time. netlink-socket: Remove unnecessary #include. netlink-socket: Make caller provide message receive buffers. ofproto-dpif: Move definition of "struct subfacet" earlier. ofproto-dpif: Avoid malloc() in common case for allocating subfacets. dpif: Make caller of dpif_recv() provide buffer space. ofproto-dpif: Avoid malloc() of "struct flow_miss". hash: Speed up hash_bytes(). mac-learning: Speed up mac_table_hash(). classifier: Optimize search of "catchall" table. ofproto-dpif: Make it easier to credit statistics for resubmits. ofproto-dpif: Avoid malloc() in common case for "execute" operations. ofproto-dpif: Implement "flow setup governor" to speed up many short flows. ofproto-dpif: Avoid calling get_ofp_port() twice in xlate_normal(). ofproto-dpif: Avoid extra flow copy in xlate_actions() if no mirrors. ofproto-dpif: Avoid extra flow copy in xlate_actions() for unneeded warnings. NEWS | 1 + lib/classifier.c | 21 +- lib/classifier.h | 7 +- lib/dpif-linux.c | 208 ++++++--- lib/dpif-netdev.c | 16 +- lib/dpif-provider.h | 39 +- lib/dpif.c | 76 ++- lib/dpif.h | 15 +- lib/hash.c | 17 +- lib/mac-learning.c | 5 +- lib/netlink-notifier.c | 10 +- lib/netlink-socket.c | 289 ++++++----- lib/netlink-socket.h | 21 +- lib/netlink.c | 29 +- lib/ofpbuf.c | 52 ++- lib/ofpbuf.h | 7 +- lib/packets.c | 37 ++ lib/packets.h | 1 + ofproto/automake.mk | 4 +- ofproto/ofproto-dpif-governor.c | 186 +++++++ ofproto/ofproto-dpif-governor.h | 53 ++ ofproto/ofproto-dpif.c | 1033 +++++++++++++++++++++++++-------------- tests/test-netflow.c | 30 +- utilities/nlmon.c | 14 +- vswitchd/ovs-brcompatd.c | 49 +- 25 files changed, 1475 insertions(+), 745 deletions(-) create mode 100644 ofproto/ofproto-dpif-governor.c create mode 100644 ofproto/ofproto-dpif-governor.h -- 1.7.9 _______________________________________________ dev mailing list dev@openvswitch.org http://openvswitch.org/mailman/listinfo/dev