Joe, What was the reason to go from 64-bit hash to 128-bit hash?
Jarno > On Aug 20, 2014, at 10:41 PM, Joe Stringer <joestrin...@nicira.com> wrote: > > One of the current bottlenecks for revalidation performance is the cost of > assembling flow keys, masks and actions in the (linux) datapath. This series > seeks to reduce this cost by caching these elements in the udpif, and > modifying > the datapath to skip sending these. To distinguish flows in the datapath, a > 128-bit "unique flow identifier" will be used instead. > > For the linux datapath, a user feature flag OVS_DP_F_INDEX_BY_UID is sent to > tell the datapath to expect UID fields in OVS_FLOW_CMD_* requests, to index > based on the OVS_UID_ATTR_ID field for userspace flow access, and to reply > with > this field in the responses. Each request may include a set of flags specified > as a bitmask of OVS_UID_F_* which determine what is expected in the response. > For instance, OVS_UID_F_SKIP_KEY indicates that the key may be omitted from > the > response. If no flags are specified, then the key, mask and actions will be > included in the response. (In a more general sense, these flags are > modifications on the behaviour of OVS_FLOW_CMD_* requests, so if there are no > flags specified, then the behaviour should match the existing behaviour). > > By default, revalidators will tell the datapath to skip serializing the key, > mask, and actions fields in flow dumps to achieve improved flow dump > performance. Debug clients such as ovs-dpctl will continue to request all > details of a flow as they do currently. > > This series proposes most of the changes required, including an initial > implementation of the new interface for datapath flow commands. The linux > datapath implementation of these features is yet to come. Previous testing > with > a linux datapath implementation using a 64-bit identifier showed reasonable > performance improvements over master. I plan to rework that code and send it > for review next week. > > Joe Stringer (14): > tests: Fix race conditions. > dpif: Zero flow before dpif_flow_get(). > revalidator: Use 'cmap' for storing ukeys. > revalidator: Protect ukeys with a mutex. > udpif: Separate ukey 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. > upcall: Generate unique flow identifiers. > dpif-netdev: Support unique flow identifiers. > dpif-linux: Support unique flow identifiers. > revalidator: Reduce ukey contention. > > datapath/linux/compat/include/linux/openvswitch.h | 26 + > include/openvswitch/types.h | 5 + > lib/dpctl.c | 6 +- > lib/dpif-linux.c | 88 ++- > lib/dpif-netdev.c | 203 +++-- > lib/dpif-provider.h | 8 +- > lib/dpif.c | 37 +- > lib/dpif.h | 34 +- > lib/flow.h | 6 + > lib/hash.c | 194 ++++- > lib/hash.h | 4 +- > lib/odp-util.c | 51 ++ > lib/odp-util.h | 25 + > ofproto/ofproto-dpif-upcall.c | 826 ++++++++++++++------- > ofproto/ofproto-dpif-upcall.h | 3 + > ofproto/ofproto-dpif.c | 108 ++- > ofproto/ofproto-dpif.h | 2 + > tests/dpif-netdev.at | 3 + > tests/ofproto-dpif.at | 26 +- > tests/ofproto-macros.at | 1 + > 20 files changed, 1256 insertions(+), 400 deletions(-) > > -- > 1.7.10.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