From: Andreas Gruenbacher <agruen@linbit.com>
To: Eric Dumazet <eric.dumazet@gmail.com>
Cc: netdev@vger.kernel.org, linux-kernel@vger.kernel.org,
Herbert Xu <herbert@gondor.apana.org.au>,
"David S. Miller" <davem@davemloft.net>
Subject: Re: [RFC] [TCP 0/3] Receive from socket into bio without copying
Date: Mon, 02 Jul 2012 15:02:57 +0200 [thread overview]
Message-ID: <1341234177.29646.69.camel@gurkel.linbit> (raw)
In-Reply-To: <1341232568.22621.8.camel@edumazet-glaptop>
On Mon, 2012-07-02 at 14:36 +0200, Eric Dumazet wrote:
> No files or page cache are needed for splice() usage, for example from
> socket to another socket.
>
> It just works (check haproxy for an example), with 10Gb performance out
> of the box.
bio_vec's have some alignment requirements that must be met, and
anything that doesn't meet those requirements can't be passed to the
block layer (without copying it first). Additional layers between the
network and block layers, like a pipe, won't make that problem go away.
> The pipe is only a container for buffers, in case the data fetched from
> producer cannot be fully sent to consumer. You don't want to lose this
> data.
Stuff that isn't pulled out of a socket receive buffer will stay there,
it won't magically be lost.
> > We want to go directly to the block layer instead. This requires that
> > the network hardware receives the data into sector aligned buffers.
> > Hence the proposed MSG_NEW_PACKET flag.
>
> This only is a hint something is wrong with the approach.
It just means that I'm trying to do something that isn't currently
supported.
> You only need proper splice() support (from pipe to bio), if not already
> there.
It's not already there, it requires the alignment issue to be addresses
first.
Andreas
next prev parent reply other threads:[~2012-07-02 13:02 UTC|newest]
Thread overview: 11+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-06-29 14:53 [RFC] [TCP 0/3] Receive from socket into bio without copying Andreas Gruenbacher
2012-06-29 15:08 ` Eric Dumazet
2012-07-02 11:45 ` Andreas Gruenbacher
2012-07-02 12:36 ` Eric Dumazet
2012-07-02 13:02 ` Andreas Gruenbacher [this message]
2012-07-02 13:54 ` Eric Dumazet
2012-07-02 16:06 ` Andreas Gruenbacher
2012-07-02 19:41 ` chetan loke
2012-07-02 21:37 ` Eric Dumazet
2012-07-03 0:02 ` Willy Tarreau
2012-07-02 13:39 ` saeed bishara
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=1341234177.29646.69.camel@gurkel.linbit \
--to=agruen@linbit.com \
--cc=davem@davemloft.net \
--cc=eric.dumazet@gmail.com \
--cc=herbert@gondor.apana.org.au \
--cc=linux-kernel@vger.kernel.org \
--cc=netdev@vger.kernel.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).