[ovs-dev] [PATCH 2/3] ofproto-dpif: Check frags only once.

Jarno Rajahalme jrajahalme at nicira.com
Tue Oct 7 22:42:32 UTC 2014


On Oct 6, 2014, at 3:17 PM, Ben Pfaff <blp at nicira.com> wrote:

> On Thu, Oct 02, 2014 at 09:20:32AM -0700, Jarno Rajahalme wrote:
>> 
>> On Sep 26, 2014, at 11:33 AM, Ben Pfaff <blp at nicira.com> wrote:
>> 
>>> On Wed, Sep 24, 2014 at 11:24:01AM -0700, Jarno Rajahalme wrote:
>>>> Earlier I have seen the frags checking suspiciously high in perf
>>>> reports, but did not understand why.  Maybe this explains it:
>>>> 
>>>> Previously we checked frags handling before each flow table lookup.
>>>> As the nw_frags field is not writeable, it suffices to check them
>>>> once, before the first table lookup.  Also, ofproto-dpif-xlate already
>>>> has code for this, but it was run after the first table lookup.  This
>>>> check is now done only once, before the first table lookup.
>>>> 
>>>> Signed-off-by: Jarno Rajahalme <jrajahalme at nicira.com>
>>> 
>>> By "frags checking suspiciously high in perf reports", do you mean
>>> these deleted lines of code in rule_dpif_lookup_in_table() were
>>> showing up high in perf reports?
>>> 
>>> -    if (ofproto->up.frag_handling != OFPC_FRAG_NX_MATCH) {
>>> -        /* We always unwildcard dl_type and nw_frag (for IP), so they
>>> -         * need not be unwildcarded here. */
>>> -
>>> -        if (flow->nw_frag & FLOW_NW_FRAG_ANY) {
>>> 
>> 
>> Yes they did. I could make it a bit better just by changing the
>> order of the checks, checking flow->nw_frag first, and
>> ofproto->ip.frag_handling later, so it must have been a cache miss
>> on ofproto->up.frag_handling.
>> This was already some months ago, and I have not repeated the tests recently.
>> 
>>> I'm really surprised to hear that.
>>> 
>> 
>> To be clear, it was in the range of < 1%, so it was not that high,
>> but I was surprised to see it there at all. Maybe I should just
>> remove the word ?high? from the commit message?
> 
> That would help.
> 
> Was the improvement about 1% also?
> 
> The new code is at least a little harder to understand.  I am trying
> to figure out whether the performance improvement outweighs that cost.
> What is your opinion?

I have not checked to see how much performance is improved.

Regardless, I’ll try to make this easier to understand. Conceptually it should simple enough, that we check the frags configuration at most once per packet, before issuing any flow table lookups.

  Jarno




More information about the dev mailing list