On Feb 16, 2013, at 1:19 , ext Jesse Gross wrote:

> On Mon, Feb 11, 2013 at 6:46 AM, Jarno Rajahalme
> <jarno.rajaha...@nsn.com> wrote:
>> Store key_len and hash fields at the end of struct sw_flow_key, past the
>> area being hashed.
>> Rename functions operating on keys from "_flow_" to "_flow_key_".
>> Shift the responsibility for key hashing from lookup and insert to key
>> construction side, which helps avaiding unnecessary hash computations.
>> 
>> Signed-off-by: Jarno Rajahalme <jarno.rajaha...@nsn.com>
> 
> This seems like three independent changes, so it really should be
> broken up into different commits.  However, that being said, it also
> needs more justification since I don't really see the benefit at the
> moment.  In particular, how does moving the location of hash
> computation reduce unnecessary work?


I'd be happy to break it apart.

In datapath.c ovs_flow_cmd_build_info(), there is first a call to 
ovs_flow_tbl_lookup(), which currently computes the hash. In the case of a new 
flow this is followed by ovs_flow_tbl_insert(), which currently recomputes the 
same hash. This can be avoided if hash is made a part of the key itself.

In a later patch (which may be more controversial), I have proposed to expose 
the kernel computed key hash to the userspace (think "cookie"), which is given 
back to the kernel only when the key is passed back as-is. In this case 
additional key hash computations can be avoided in kernel flow set-up.

  Jarno
_______________________________________________
dev mailing list
dev@openvswitch.org
http://openvswitch.org/mailman/listinfo/dev

Reply via email to