Subject: Re: [PATCH 07/15] ehea: Allocate large enough skbs to avoid partial cacheline DMA writes

From: Ben Hutchings <[email-masked]>
Date: Thu, 12 May 2011 03:52:48 +0100

On Thu, 2011-05-12 at 10:52 +1000, Anton Blanchard wrote:
> plain text document attachment (ehea_8.patch)
> The ehea adapter has a mode where it will avoid partial cacheline DMA
> writes on receive by always padding packets to fall on a cacheline
> boundary.
> 
> Unfortunately we currently aren't allocating enough space for a full
> ethernet MTU packet to be rounded up, so this optimisation doesn't hit.
> 
> It's unfortunate that the next largest packet size exposed by the
> hypervisor interface is 2kB, meaning our skb allocation comes out of a
> 4kB SLAB. However the performance increase due to this optimisation is
> quite large and my TCP stream numbers increase from 900MB to 1000MB/sec.

You can allocate page buffers and then split them into exactly 2K
segments.  If you switch from inet_lro to GRO then GRO will handle the
eventual skb allocation for you (even for non-mergeable packets).

Ben.

-- 
Ben Hutchings, Senior Software Engineer, Solarflare
Not speaking for my employer; that's the marketing department's job.
They asked us to note that Solarflare product names are trademarked.