From: Jesper Dangaard Brouer <brouer@redhat.com>
To: "Michael S. Tsirkin" <mst@redhat.com>
Cc: Jason Wang <jasowang@redhat.com>,
davem@davemloft.net, netdev@vger.kernel.org,
linux-kernel@vger.kernel.org, brouer@redhat.com
Subject: Re: [PATCH net-next] tuntap: introduce tx skb ring
Date: Wed, 18 May 2016 11:21:29 +0200 [thread overview]
Message-ID: <20160518112129.0472b5dc@redhat.com> (raw)
In-Reply-To: <20160518112045-mutt-send-email-mst@redhat.com>
On Wed, 18 May 2016 11:21:59 +0300
"Michael S. Tsirkin" <mst@redhat.com> wrote:
> On Wed, May 18, 2016 at 10:16:31AM +0200, Jesper Dangaard Brouer wrote:
> >
> > On Tue, 17 May 2016 09:38:37 +0800 Jason Wang <jasowang@redhat.com> wrote:
> >
> > > >> And if tx_queue_length is not power of 2,
> > > >> we probably need modulus to calculate the capacity.
> > > > Is that really that important for speed?
> > >
> > > Not sure, I can test.
> >
> > In my experience, yes, adding a modulus does affect performance.
>
> How about simple
> if (unlikely(++idx > size))
> idx = 0;
So, you are exchanging an AND-operation with a mask, for a
branch-operation. If the branch predictor is good enough in the CPU
and code-"size" use-case, then I could be just as fast.
I've actually played with a lot of different approaches:
https://github.com/netoptimizer/prototype-kernel/blob/master/kernel/include/linux/alf_queue_helpers.h
I cannot remember the exact results. I do remember micro benchmarking
showed good results with the advanced "unroll" approach, but IPv4
forwarding, where I know I-cache is getting evicted, showed best
results with the more simpler implementations.
> > >
> > > Right, this sounds a good solution.
> >
> > Good idea.
>
> I'm not that sure - it's clearly wasting memory.
Rounding up to power of two. In this case I don't think the memory
wast is too high. As we are talking about max 16 bytes elements.
I am concerned about memory in another way. We need to keep these
arrays/rings small, due to data cache usage. A 4096 ring queue is bad
because e.g. 16*4096=65536 bytes, and typical L1 cache is 32K-64K. As
this is a circular buffer, we walk over this memory all the time, thus
evicting the L1 cache.
--
Best regards,
Jesper Dangaard Brouer
MSc.CS, Principal Kernel Engineer at Red Hat
Author of http://www.iptv-analyzer.org
LinkedIn: http://www.linkedin.com/in/brouer
next prev parent reply other threads:[~2016-05-18 9:21 UTC|newest]
Thread overview: 21+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-05-16 1:17 [PATCH net-next] tuntap: introduce tx skb ring Jason Wang
2016-05-16 3:56 ` Eric Dumazet
2016-05-16 7:51 ` Jason Wang
2016-05-18 8:13 ` Jesper Dangaard Brouer
2016-05-18 8:23 ` Michael S. Tsirkin
2016-05-18 10:23 ` Jason Wang
2016-05-18 11:52 ` Steven Rostedt
2016-05-18 16:26 ` Michael S. Tsirkin
2016-05-18 16:41 ` Eric Dumazet
2016-05-18 16:46 ` Michael S. Tsirkin
2016-05-19 11:59 ` Jesper Dangaard Brouer
2016-05-16 4:23 ` Michael S. Tsirkin
2016-05-16 7:52 ` Jason Wang
2016-05-16 8:08 ` Michael S. Tsirkin
2016-05-17 1:38 ` Jason Wang
2016-05-18 8:16 ` Jesper Dangaard Brouer
2016-05-18 8:21 ` Michael S. Tsirkin
2016-05-18 9:21 ` Jesper Dangaard Brouer [this message]
2016-05-18 9:55 ` Michael S. Tsirkin
2016-05-18 10:42 ` Jason Wang
2016-05-18 10:58 ` Michael S. Tsirkin
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=20160518112129.0472b5dc@redhat.com \
--to=brouer@redhat.com \
--cc=davem@davemloft.net \
--cc=jasowang@redhat.com \
--cc=linux-kernel@vger.kernel.org \
--cc=mst@redhat.com \
--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 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.