Hi Daniele, below are - Regression Tests results - ALWAYS_INLINE check
Regression Tests on Performance =============================== I did some regression tests on performance, it looks like there's no performance drop. I've sent mono-directional data with 64-Byte packets at line rate on one ixia port (Tx) and read the receiving rate on the other ixia port (Rx), regardless of packet loss. Below the 2 tests I did and then a table with performance figures. I’ve used OVS master @ Commit ID: d87091c2a1f9d3db1a2352eba1b609405122d15a and compared results with and without the ConnTracker v2 patches. Test #1: 'Phy-to-Phy' --------------------- +-----+ -->[ Port 1 (dpdk) ]---| | | OVS | <--[ Port 2 (dpdk) ]---| | +-----+ ovs-ofctl add-flow br0 in_port=1,action=output:2 Test #2: Phy-VM-Phy with vHost-User ----------------------------------- +-----+ +--------------+ -->[ Port 1 (dpdk) ]---| |---[ Port 4 (dpdkvhostuser) ]---| | | OVS | | testpmd @ VM | <--[ Port 3 (dpdk) ]---| |---[ Port 2 (dpdkvhostuser) ]---| | +-----+ +--------------+ ovs-ofctl add-flow br0 idle_timeout=0,in_port=1,action=output:4 ovs-ofctl add-flow br0 idle_timeout=0,in_port=2,action=output:3 Performance figures ------------------- +----------------+-------------------+ | OVS master | OVS master 2.5 + | | | C.T. Patches v2 | +------------------+----------------+-------------------+ | Phy-to-Phy | 13.49 Mpps | 13.46 Mpps | +------------------+----------------+-------------------+ | PVP (vHost-User) | 5.6 Mpps | 5.6 Mpps | +------------------+----------------+-------------------+ ALWAYS_INLINE ============= I've also checked what we already discussed with the patch set v1. I applied patches one by one and measured the performance, it seems that ALWAYS_INLINE in parse_vlan() and parse_ethertype() has fixed the performance regression issue. Antonio > -----Original Message----- > From: dev [mailto:dev-boun...@openvswitch.org] On Behalf Of Daniele Di > Proietto > Sent: Saturday, April 16, 2016 1:03 AM > To: dev@openvswitch.org > Subject: [ovs-dev] [PATCH v2 00/15] Userspace (DPDK) connection tracker > > This series aims to implement the ct() action for the dpif-netdev datapath. > The bulk of the code is in the new conntrack module: it contains some packet > parsing code, some lookup tables and the logic to implements all the ct bits. > > The conntrack module is helped by conntrack-tcp, for TCP window and flags > tracking: the bulk of the code of this submodule is from the FreeBSD's pf > subsystem, therefore is BSD licensed. > > The rest of the series integrates the connection tracker with the rest of > OVS: the ct() action is implemented in dpif-netdev, and the debugging > interfaces required by dpctl/{dump,flush}-conntrack are implemented. > > Besides adding some unit tests, this series ports the existing conntrack > system test to the userspace datapath. Some small modifications are > required to pass the testsuite, and some tests still have to be skipped. > > On newer kernels the userspace testsuite has some problems with offloads, > so a workaround is included. > > This can also be downloaded at: > > https://github.com/ddiproietto/ovs/tree/userconntrack_20160415 > > Any feedback is appreciated, thanks. > > v1 -> v2: > * Fixed bug in tcp_get_wscale(), related to TCP options parsing. > * Changed names of ICMP constants: now they're different from Linux and > FreeBSD. > * Fixed bug in parse_ipv6_ext_hdrs(). > * Used ALWAYS_INLINE in parse_vlan and parse_ethertype, to avoid a > performance regression in miniflow_extract(). > * Updated copyright info in COPYING and debian/copyright.in. > * Rebased. > * Changed batching strategy in conntrack_execute() to allow a newly > created connection to be picked up by packets in the same batch. > * Added an ovs-test module to throw pcap files at the connection tracker. > * Added a workaround for the userspace testsuite on new kernels and a tcp > non-conntrack test. > > Daniele Di Proietto (15): > packets: Define ICMP types. > flow: Export parse_ipv6_ext_hdrs(). > flow: Introduce parse_dl_type(). > conntrack: New userspace connection tracker. > tests: Add very simple conntrack benchmark. > tests: Add test-conntrack pcap test. > conntrack: Implement flush function. > conntrack: Implement dumping to ct_entry. > dpif-netdev: Execute conntrack action. > dpif-netdev: Implement conntrack dump functions. > dpif-netdev: Implement conntrack flush interface. > tests: Add conntrack ofproto-dpif tests. > system-tests: Disable offloads in userspace tests. > system-tests: Add tcp simple test. > system-tests: Run conntrack tests with userspace > > COPYING | 1 + > debian/copyright.in | 4 + > lib/automake.mk | 5 + > lib/conntrack-other.c | 91 ++++ > lib/conntrack-private.h | 80 ++++ > lib/conntrack-tcp.c | 510 ++++++++++++++++++++ > lib/conntrack.c | 997 > +++++++++++++++++++++++++++++++++++++++ > lib/conntrack.h | 162 +++++++ > lib/dpif-netdev.c | 138 +++++- > lib/flow.c | 154 +++--- > lib/flow.h | 4 + > lib/packets.h | 14 +- > tests/automake.mk | 1 + > tests/dpif-netdev.at | 14 +- > tests/ofproto-dpif.at | 698 ++++++++++++++++++++++++++- > tests/system-common-macros.at | 1 + > tests/system-kmod-macros.at | 35 ++ > tests/system-traffic.at | 69 ++- > tests/system-userspace-macros.at | 63 ++- > tests/test-conntrack.c | 232 +++++++++ > 20 files changed, 3164 insertions(+), 109 deletions(-) > create mode 100644 lib/conntrack-other.c > create mode 100644 lib/conntrack-private.h > create mode 100644 lib/conntrack-tcp.c > create mode 100644 lib/conntrack.c > create mode 100644 lib/conntrack.h > create mode 100644 tests/test-conntrack.c > > -- > 2.1.4 > > _______________________________________________ > dev mailing list > dev@openvswitch.org > http://openvswitch.org/mailman/listinfo/dev _______________________________________________ dev mailing list dev@openvswitch.org http://openvswitch.org/mailman/listinfo/dev