datapath: Enable memory mapped Netlink i/o
authorThomas Graf <tgraf@suug.ch>
Wed, 4 Dec 2013 04:07:57 +0000 (20:07 -0800)
committerJesse Gross <jesse@nicira.com>
Wed, 4 Dec 2013 04:14:05 +0000 (20:14 -0800)
commit68eadcf05acd17097ba9161910a7265c5812cc89
tree15b6a72bc0c885d58c2959d3c401493ce4dcb77c
parent6c75562d49e87237cfaafc82d786c8c4f0823326
datapath: Enable memory mapped Netlink i/o

Use memory mapped Netlink i/o for all unicast openvswitch
communication if a ring has been set up.

Benchmark
  * pktgen -> ovs internal port
  * 5M pkts, 5M flows
  * 4 threads, 8 cores

Before:
Result: OK: 67418743(c67108212+d310530) usec, 5000000 (9000byte,0frags)
  74163pps 5339Mb/sec (5339736000bps) errors: 0
+   2.98%     ovs-vswitchd  [k] copy_user_generic_string
+   2.49%     ovs-vswitchd  [k] memcpy
+   1.84%       kpktgend_2  [k] memcpy
+   1.81%       kpktgend_1  [k] memcpy
+   1.81%       kpktgend_3  [k] memcpy
+   1.78%       kpktgend_0  [k] memcpy

After:
Result: OK: 24229690(c24127165+d102524) usec, 5000000 (9000byte,0frags)
  206358pps 14857Mb/sec (14857776000bps) errors: 0
+   2.80%     ovs-vswitchd  [k] memcpy
+   1.31%       kpktgend_2  [k] memcpy
+   1.23%       kpktgend_0  [k] memcpy
+   1.09%       kpktgend_1  [k] memcpy
+   1.04%       kpktgend_3  [k] memcpy
+   0.96%     ovs-vswitchd  [k] copy_user_generic_string

Signed-off-by: Thomas Graf <tgraf@suug.ch>
Reviewed-by: Daniel Borkmann <dborkman@redhat.com>
Signed-off-by: Jesse Gross <jesse@nicira.com>
datapath/datapath.c