dpif-linux: Use poll() internally in dpif_linux_recv().
authorBen Pfaff <blp@nicira.com>
Mon, 28 Nov 2011 17:29:18 +0000 (09:29 -0800)
committerBen Pfaff <blp@nicira.com>
Tue, 29 Nov 2011 00:54:48 +0000 (16:54 -0800)
commit2a75b1753eabb1b4e123f0b5f1c0dbaba5d0eaba
tree1b3cbc0d7fb9d924680d79e82288c43234eab907
parentb6ab780d4f97ba797c5be644adc983208f322eac
dpif-linux: Use poll() internally in dpif_linux_recv().

Using poll() internally in dpif_linux_recv(), instead of relying
on the results of the main loop poll() call, brings netperf CRR
performance back within 1% of par versus the code base before the
poll_fd_woke() optimizations were introduced.  It also increases
the ovs-benchmark results by about 5% versus that baseline, too.

My theory is that this is because the main loop takes long enough
that a significant number of packets can arrive during the main
loop itself, so this reduces the time before OVS gets to those
packets.
lib/dpif-linux.c
lib/netlink-socket.c
lib/netlink-socket.h