All of lore.kernel.org
 help / color / mirror / Atom feed
From: Jonathan Lemon <jonathan.lemon@gmail.com>
To: Willem de Bruijn <willemdebruijn.kernel@gmail.com>
Cc: Network Development <netdev@vger.kernel.org>,
	Eric Dumazet <edumazet@google.com>,
	Kernel Team <kernel-team@fb.com>
Subject: Re: [PATCH 0/9 v1 RFC] Generic zcopy_* functions
Date: Mon, 21 Dec 2020 16:07:38 -0800	[thread overview]
Message-ID: <20201222000738.taiw4jq6kmyuwt65@bsd-mbp.dhcp.thefacebook.com> (raw)
In-Reply-To: <CAF=yD-+bVFBHPfFB+E1s4Qae5PZGQJaiarAN9hwpP2aTs1f_jg@mail.gmail.com>

On Mon, Dec 21, 2020 at 05:52:08PM -0500, Willem de Bruijn wrote:
> > > >   - marking the skb data as inaccessible so skb_condense()
> > > >     and skb_zeroocopy_clone() leave it alone.
> > >
> > > Yep. Skipping content access on the Rx path will be interesting. I
> > > wonder if that should be a separate opaque skb feature, independent
> > > from whether the data is owned by userspace, peripheral memory, the
> > > page cache or anything else.
> >
> > Would that be indicated by a bit on the skb (like pfmemalloc), or
> > a bit in the skb_shared structure, as I'm leaning towards doing here?
> 
> I would guide it in part by avoiding cold cacheline accesses. That
> might be hard if using skb_shinfo. OTOH, you don't have to worry about
> copying the bit during clone operations.
> 
> > > > > If anything, eating up the last 8 bits in skb_shared_info should be last resort.
> > > >
> > > > I would like to add 2 more bits in the future, which is why I
> > > > moved them.  Is there a compelling reason to leave the bits alone?
> > >
> > > Opportunity cost.
> > >
> > > We cannot grow skb_shared_info due to colocation with MTU sized linear
> > > skbuff's in half a page.
> > >
> > > It took me quite some effort to free up a few bytes in commit
> > > 4d276eb6a478 ("net: remove deprecated syststamp timestamp").
> > >
> > > If we are very frugal, we could shadow some bits to have different
> > > meaning in different paths. SKBTX_IN_PROGRESS is transmit only, I
> > > think. But otherwise we'll have to just dedicate the byte to more
> > > flags. Yours are likely not to be the last anyway.
> >
> > The zerocopy/enable flags could be encoded in one of the lower 3 bits
> > in the destructor_arg, (similar to nouarg) but that seems messy.
> 
> Agreed :)
> 
> Let's just expand the flags for now. It may be better to have one
> general purpose 16 bit flags bitmap, rather than reserving 8 bits
> specifically to zerocopy features.

I was considering doing that also, but that would need to rearrange
the flags in skb_shared_info.  Then I realized that there are currently
only TX flags and ZC flags, so went with that.  I have no objections
to doing it either way.

My motivation here is when MSG_ZCTAP is added to tcp_sendmsg_locked(),
it the returned uarg is self-contained for the rest of the function.
-- 
Jonathan

      reply	other threads:[~2020-12-22  0:08 UTC|newest]

Thread overview: 19+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-12-18 20:16 [PATCH 0/9 v1 RFC] Generic zcopy_* functions Jonathan Lemon
2020-12-18 20:16 ` [PATCH 1/9 v1 RFC] net: group skb_shinfo zerocopy related bits together Jonathan Lemon
2020-12-18 20:16 ` [PATCH 2/9 v1 RFC] skbuff: remove unused skb_zcopy_abort function Jonathan Lemon
2020-12-18 20:16 ` [PATCH 3/9 v1 RFC] skbuff: replace sock_zerocopy_put() with skb_zcopy_put() Jonathan Lemon
2020-12-19 18:46   ` Willem de Bruijn
2020-12-21 19:18     ` Jonathan Lemon
2020-12-21 22:49       ` Willem de Bruijn
2020-12-18 20:16 ` [PATCH 4/9 v1 RFC] skbuff: replace sock_zerocopy_get with skb_zcopy_get Jonathan Lemon
2020-12-18 20:16 ` [PATCH 5/9 v1 RFC] skbuff: Add skb parameter to the ubuf zerocopy callback Jonathan Lemon
2020-12-18 20:16 ` [PATCH 6/9 v1 RFC] skbuff: Call sock_zerocopy_put_abort from skb_zcopy_put_abort Jonathan Lemon
2020-12-18 20:16 ` [PATCH 7/9 v1 RFC] skbuff: add zc_flags to ubuf_info for ubuf setup Jonathan Lemon
2020-12-18 20:16 ` [PATCH 8/9 v1 RFC] tap/tun: use skb_zcopy_set() instead of open coded assignment Jonathan Lemon
2020-12-18 20:16 ` [PATCH 9/9 v1 RFC] skbuff: Call skb_zcopy_clear() before unref'ing fragments Jonathan Lemon
2020-12-18 20:49 ` [PATCH 0/9 v1 RFC] Generic zcopy_* functions Willem de Bruijn
2020-12-18 21:16   ` Jonathan Lemon
2020-12-19 19:00     ` Willem de Bruijn
2020-12-21 19:50       ` Jonathan Lemon
2020-12-21 22:52         ` Willem de Bruijn
2020-12-22  0:07           ` Jonathan Lemon [this message]

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=20201222000738.taiw4jq6kmyuwt65@bsd-mbp.dhcp.thefacebook.com \
    --to=jonathan.lemon@gmail.com \
    --cc=edumazet@google.com \
    --cc=kernel-team@fb.com \
    --cc=netdev@vger.kernel.org \
    --cc=willemdebruijn.kernel@gmail.com \
    /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.