On 8 September 2014 22:23, Joe Stringer <joestrin...@nicira.com> wrote:
> With v4 I've had a fairly good go at testing this series, for performance > comparison and also compatibility with mixed older/newer > datapath/userspace. > Master appears to be able to revalidate roughly 130-140K flows per second > with > a single revalidator and many handlers. This series pushes this number up > around 190-200K. > > I also looked a little into a 64-bit CityHash as an alternative to the > 128-bit > Murmurhash, based on the code available here: > https://code.google.com/p/cityhash/source/browse/trunk/src/city.cc > > I was unable to observe much performance difference between the hash > functions, > so I guess that we don't spend enough time hashing for them to have a major > impact on overall revalidation performance. There's probably more > accessible > optimizations to be made first. Given that the Murmurhash code has more > bits to > hash into and the implementation is simpler, I've stuck with this code for > the > moment. > > v4: > - Datapath memory leak fixes > - Enable UID-based terse dumping and deleting by default > - Shifted UID generation down to dpif > - Log flow UIDs in more places > - Various fixes > > RFCv3: > - Add datapath implementation > - Minor fixes > - Rebased > > RFCv2: > - Revised early patches from v1 feedback > - Add Acks from Ben > - Rebased > > RFCv1: > http://openvswitch.org/pipermail/dev/2014-August/044383.html > > Joe Stringer (12): > revalidator: Use 'cmap' for storing ukeys. > revalidator: Protect ukeys with a mutex. > udpif: Separate udpif_key maps from revalidators. > upcall: Rename dump_op -> ukey_op. > upcall: Create ukeys in handler threads. > upcall: Revalidate using cache of mask, actions. > hash: Add 128-bit murmurhash. > dpif: Add Unique flow identifiers. > datapath: Add support for OVS_FLOW_ATTR_UID. > revalidator: Reduce ukey contention. > revalidator: Distinguish new and duplicate flows. > upcall: Distinguish duplicate upcalls from conflicts. > > datapath/datapath.c | 215 ++++-- > datapath/flow.h | 12 +- > datapath/flow_netlink.c | 60 ++ > datapath/flow_netlink.h | 2 + > datapath/flow_table.c | 229 +++++- > datapath/flow_table.h | 5 +- > datapath/linux/compat/include/linux/openvswitch.h | 29 + > include/openvswitch/types.h | 5 + > lib/dpctl.c | 14 +- > lib/dpif-linux.c | 127 +-- > lib/dpif-netdev.c | 144 ++-- > lib/dpif-provider.h | 9 +- > lib/dpif.c | 47 +- > lib/dpif.h | 31 +- > lib/flow.h | 6 + > lib/hash.c | 194 ++++- > lib/hash.h | 4 +- > lib/odp-util.c | 55 ++ > lib/odp-util.h | 25 + > ofproto/ofproto-dpif-upcall.c | 852 > ++++++++++++++------- > ofproto/ofproto-dpif-upcall.h | 1 + > ofproto/ofproto-dpif.c | 96 ++- > ofproto/ofproto-dpif.h | 2 + > tests/dpif-netdev.at | 5 + > tests/ofproto-dpif.at | 28 +- > tests/ofproto-macros.at | 1 + > 26 files changed, 1656 insertions(+), 542 deletions(-) > > -- > 1.7.10.4 > > _______________________________________________ > dev mailing list > dev@openvswitch.org > http://openvswitch.org/mailman/listinfo/dev > To assist review, the branch is also available here: https://github.com/joestringer/openvswitch/tree/submit/ufid_v4 _______________________________________________ dev mailing list dev@openvswitch.org http://openvswitch.org/mailman/listinfo/dev