On Mon, Apr 16, 2012 at 05:18:40PM -0700, Ben Pfaff wrote: > 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.
As promised, here's commit-by-commit performance numbers for the command ovs-benchmark -T600 rate -r 192.168.0.2:32768-50000 -l :32768-50000 -s 300 run between a couple of desktop boxes. 44f3c11 ofproto-dpif: Keep subfacet "used" times more up-to-date. 600.939 s elapsed, 0 OK, 11494154 failed, avg 19127.0/s 5824975 ofproto-dpif: Drop unneeded _SAFE from iteration in handle_flow_miss(). 600.940 s elapsed, 0 OK, 11437802 failed, avg 19033.2/s 09b207e ofproto-dpif: Batch flow uninstallations due to expiration. 600.434 s elapsed, 0 OK, 13029774 failed, avg 21700.6/s dbc879d dpif: Include TCP flags in "ovs-dpctl dump-flows" output. 600.636 s elapsed, 0 OK, 12978329 failed, avg 21607.6/s ba09f94 netlink-socket: Avoid forcing a reply for final message in a transaction. 600.440 s elapsed, 0 OK, 13201988 failed, avg 21987.2/s f132213 ofproto-dpif: Don't do any accounting at all when removing facets. 600.340 s elapsed, 0 OK, 13208514 failed, avg 22001.7/s 40c2d35 ofpbuf: New functions ofpbuf_use_stub() and ofpbuf_get_uninit_pointer(). 600.738 s elapsed, 0 OK, 13209177 failed, avg 21988.2/s ce84d92 ofproto-dpif: Avoid malloc() in common cases for xlate_actions(). 600.383 s elapsed, 0 OK, 13712843 failed, avg 22840.2/s e45c5f2 dpif-linux: Avoid malloc() in dpif_linux_operate(). 600.249 s elapsed, 0 OK, 14220239 failed, avg 23690.6/s df4dd45 ofproto-dpif: Avoid computing flow hash multiple times. 600.744 s elapsed, 0 OK, 14264351 failed, avg 23744.5/s 617edf7 netlink: Postpone choosing sequence numbers until send time. 600.409 s elapsed, 0 OK, 14329672 failed, avg 23866.5/s 2a91fe3 netlink-socket: Remove unnecessary #include. 600.383 s elapsed, 0 OK, 14363645 failed, avg 23924.1/s 6acc560 netlink-socket: Make caller provide message receive buffers. 600.643 s elapsed, 0 OK, 14666202 failed, avg 24417.5/s 0d61fe5 ofproto-dpif: Move definition of "struct subfacet" earlier. 600.737 s elapsed, 0 OK, 14663645 failed, avg 24409.4/s cac4d87 ofproto-dpif: Avoid malloc() in common case for allocating subfacets. 600.583 s elapsed, 0 OK, 14587688 failed, avg 24289.2/s de12216 dpif: Make caller of dpif_recv() provide buffer space. 600.044 s elapsed, 0 OK, 14723652 failed, avg 24537.6/s 92c8c32 ofproto-dpif: Avoid malloc() of "struct flow_miss". 600.342 s elapsed, 0 OK, 14871023 failed, avg 24770.9/s 9491812 hash: Speed up hash_bytes(). 600.349 s elapsed, 0 OK, 14897118 failed, avg 24814.1/s 6517526 mac-learning: Speed up mac_table_hash(). 600.283 s elapsed, 0 OK, 14981418 failed, avg 24957.3/s 721cf8c classifier: Optimize search of "catchall" table. 600.792 s elapsed, 0 OK, 15231515 failed, avg 25352.4/s 65b4bc4 ofproto-dpif: Make it easier to credit statistics for resubmits. 600.785 s elapsed, 0 OK, 15260282 failed, avg 25400.6/s 0154ed2 ofproto-dpif: Avoid malloc() in common case for "execute" operations. 600.135 s elapsed, 0 OK, 15241167 failed, avg 25396.2/s 6da047a ofproto-dpif: Implement "flow setup governor" to speed up many short flows. 600.628 s elapsed, 0 OK, 35791891 failed, avg 59590.8/s 00235a1 ofproto-dpif: Avoid calling get_ofp_port() twice in xlate_normal(). 600.493 s elapsed, 0 OK, 35928661 failed, avg 59831.9/s f2b518c ofproto-dpif: Avoid extra flow copy in xlate_actions() if no mirrors. 600.658 s elapsed, 0 OK, 36191789 failed, avg 60253.6/s 7a00728 ofproto-dpif: Avoid extra flow copy in xlate_actions() for unneeded warnings. 600.531 s elapsed, 0 OK, 36070596 failed, avg 60064.5/s _______________________________________________ dev mailing list dev@openvswitch.org http://openvswitch.org/mailman/listinfo/dev