From: Zoltan Kiss <zoltan.kiss@citrix.com>
To: David Miller <davem@davemloft.net>
Cc: <ian.campbell@citrix.com>, <wei.liu2@citrix.com>,
<xen-devel@lists.xenproject.org>, <netdev@vger.kernel.org>,
<linux-kernel@vger.kernel.org>, <jonathan.davies@citrix.com>,
<andrew.bennieston@citrix.com>
Subject: Re: [PATCH net-next v7 0/9] xen-netback: TX grant mapping with SKBTX_DEV_ZEROCOPY instead of copy
Date: Sat, 8 Mar 2014 14:37:50 +0000 [thread overview]
Message-ID: <531B2B3E.5050800@citrix.com> (raw)
In-Reply-To: <20140307.160552.282750558679341658.davem@davemloft.net>
On 07/03/14 21:05, David Miller wrote:
> From: Zoltan Kiss <zoltan.kiss@citrix.com>
> Date: Thu, 6 Mar 2014 21:48:22 +0000
>
>> A long known problem of the upstream netback implementation that on the TX
>> path (from guest to Dom0) it copies the whole packet from guest memory into
>> Dom0. That simply became a bottleneck with 10Gb NICs, and generally it's a
>> huge perfomance penalty. The classic kernel version of netback used grant
>> mapping, and to get notified when the page can be unmapped, it used page
>> destructors. Unfortunately that destructor is not an upstreamable solution.
>> Ian Campbell's skb fragment destructor patch series [1] tried to solve this
>> problem, however it seems to be very invasive on the network stack's code,
>> and therefore haven't progressed very well.
>> This patch series use SKBTX_DEV_ZEROCOPY flags to tell the stack it needs to
>> know when the skb is freed up. That is the way KVM solved the same problem,
>> and based on my initial tests it can do the same for us. Avoiding the extra
>> copy boosted up TX throughput from 6.8 Gbps to 7.9 (I used a slower AMD
>> Interlagos box, both Dom0 and guest on upstream kernel, on the same NUMA node,
>> running iperf 2.0.5, and the remote end was a bare metal box on the same 10Gb
>> switch)
>> Based on my investigations the packet get only copied if it is delivered to
>> Dom0 IP stack through deliver_skb, which is due to this [2] patch. This affects
>> DomU->Dom0 IP traffic and when Dom0 does routing/NAT for the guest. That's a bit
>> unfortunate, but luckily it doesn't cause a major regression for this usecase.
>> In the future we should try to eliminate that copy somehow.
>> There are a few spinoff tasks which will be addressed in separate patches:
>> - grant copy the header directly instead of map and memcpy. This should help
>> us avoiding TLB flushing
>> - use something else than ballooned pages
>> - fix grant map to use page->index properly
>> I've tried to broke it down to smaller patches, with mixed results, so I
>> welcome suggestions on that part as well:
>> 1: Use skb->cb to store pending_idx
>> 2: Some refactoring
>> 3: Change RX path for mapped SKB fragments (moved here to keep bisectability,
>> review it after #4)
>> 4: Introduce TX grant mapping
>> 5: Remove old TX grant copy definitons and fix indentations
>> 6: Add stat counters for zerocopy
>> 7: Handle guests with too many frags
>> 8: Timeout packets in RX path
>> 9: Aggregate TX unmap operations
> Series applied, thanks.
Well, thanks, I'm happy that things moving fast :), but I'm not sure
it's good to apply a series before the maintainers ack it. As far as
I've seen neither Wei nor Ian said the final word, and I guess Ian
didn't had time to finish his review yet. There is an another series
from Andrew Bennieston which was half-acked by Wei:
"This series looks good enough for me. IIRC Ian said it's still in his
queue so I will wait for his final review."
Maybe you mixed up mine with that? But that's also not eligible to be
applied yet.
Zoli
next prev parent reply other threads:[~2014-03-08 14:37 UTC|newest]
Thread overview: 77+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-03-06 21:48 [PATCH net-next v7 0/9] xen-netback: TX grant mapping with SKBTX_DEV_ZEROCOPY instead of copy Zoltan Kiss
2014-03-06 21:48 ` [PATCH net-next v7 1/9] xen-netback: Use skb->cb for pending_idx Zoltan Kiss
2014-03-06 21:48 ` Zoltan Kiss
2014-03-06 21:48 ` Zoltan Kiss
2014-03-06 21:48 ` [PATCH net-next v7 2/9] xen-netback: Minor refactoring of netback code Zoltan Kiss
2014-03-06 21:48 ` Zoltan Kiss
2014-03-06 21:48 ` [PATCH net-next v7 3/9] xen-netback: Handle foreign mapped pages on the guest RX path Zoltan Kiss
2014-03-06 21:48 ` Zoltan Kiss
2014-03-06 21:48 ` Zoltan Kiss
2014-03-06 21:48 ` [PATCH net-next v7 4/9] xen-netback: Introduce TX grant mapping Zoltan Kiss
2014-03-06 21:48 ` Zoltan Kiss
2014-03-13 10:17 ` Ian Campbell
2014-03-13 10:17 ` Ian Campbell
2014-03-13 12:34 ` Zoltan Kiss
2014-03-13 12:34 ` Zoltan Kiss
2014-03-13 10:33 ` Ian Campbell
2014-03-13 10:33 ` Ian Campbell
2014-03-13 10:56 ` [Xen-devel] " David Vrabel
2014-03-13 11:02 ` Ian Campbell
2014-03-13 11:02 ` [Xen-devel] " Ian Campbell
2014-03-13 11:09 ` David Vrabel
2014-03-13 11:09 ` David Vrabel
2014-03-13 11:13 ` [Xen-devel] " Wei Liu
2014-03-13 11:13 ` Wei Liu
2014-03-13 10:56 ` David Vrabel
2014-03-13 13:17 ` Zoltan Kiss
2014-03-13 13:17 ` Zoltan Kiss
2014-03-13 13:56 ` Ian Campbell
2014-03-13 17:43 ` Zoltan Kiss
2014-03-13 17:43 ` Zoltan Kiss
2014-03-13 13:56 ` Ian Campbell
2014-03-06 21:48 ` [PATCH net-next v7 5/9] xen-netback: Remove old TX grant copy definitons and fix indentations Zoltan Kiss
2014-03-06 21:48 ` Zoltan Kiss
2014-03-06 21:48 ` Zoltan Kiss
2014-03-06 21:48 ` [PATCH net-next v7 6/9] xen-netback: Add stat counters for zerocopy Zoltan Kiss
2014-03-06 21:48 ` Zoltan Kiss
2014-03-06 21:48 ` Zoltan Kiss
2014-03-06 21:48 ` [PATCH net-next v7 7/9] xen-netback: Handle guests with too many frags Zoltan Kiss
2014-03-06 21:48 ` Zoltan Kiss
2014-03-06 21:48 ` [PATCH net-next v7 8/9] xen-netback: Timeout packets in RX path Zoltan Kiss
2014-03-06 21:48 ` Zoltan Kiss
2014-03-06 21:48 ` Zoltan Kiss
2014-03-13 10:39 ` Ian Campbell
2014-03-13 10:39 ` Ian Campbell
2014-03-06 21:48 ` [PATCH net-next v7 9/9] xen-netback: Aggregate TX unmap operations Zoltan Kiss
2014-03-19 21:16 ` Zoltan Kiss
2014-03-20 9:53 ` Paul Durrant
2014-03-20 9:53 ` Paul Durrant
2014-03-20 10:48 ` Wei Liu
2014-03-20 10:48 ` Wei Liu
2014-03-20 11:14 ` Paul Durrant
2014-03-20 11:14 ` Paul Durrant
2014-03-20 12:38 ` Wei Liu
2014-03-20 12:38 ` Wei Liu
2014-03-20 16:11 ` Zoltan Kiss
2014-03-20 16:11 ` Zoltan Kiss
2014-03-19 21:16 ` Zoltan Kiss
2014-03-06 21:48 ` Zoltan Kiss
2014-03-07 21:05 ` [PATCH net-next v7 0/9] xen-netback: TX grant mapping with SKBTX_DEV_ZEROCOPY instead of copy David Miller
2014-03-08 14:37 ` Zoltan Kiss [this message]
2014-03-08 23:57 ` David Miller
2014-03-10 10:15 ` Wei Liu
2014-03-10 10:15 ` Wei Liu
2014-03-12 15:40 ` Ian Campbell
2014-03-12 18:49 ` Zoltan Kiss
2014-03-12 18:49 ` Zoltan Kiss
2014-03-13 10:43 ` Ian Campbell
2014-03-13 10:43 ` Ian Campbell
2014-03-12 15:40 ` Ian Campbell
2014-03-08 23:57 ` David Miller
2014-03-08 14:37 ` Zoltan Kiss
2014-03-07 21:05 ` David Miller
2014-03-13 10:08 ` Ian Campbell
2014-03-13 18:23 ` Zoltan Kiss
2014-03-13 18:23 ` Zoltan Kiss
2014-03-13 10:08 ` Ian Campbell
-- strict thread matches above, loose matches on Subject: below --
2014-03-06 21:48 Zoltan Kiss
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=531B2B3E.5050800@citrix.com \
--to=zoltan.kiss@citrix.com \
--cc=andrew.bennieston@citrix.com \
--cc=davem@davemloft.net \
--cc=ian.campbell@citrix.com \
--cc=jonathan.davies@citrix.com \
--cc=linux-kernel@vger.kernel.org \
--cc=netdev@vger.kernel.org \
--cc=wei.liu2@citrix.com \
--cc=xen-devel@lists.xenproject.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.