public inbox for kvm@vger.kernel.org
 help / color / mirror / Atom feed
From: "Michael S. Tsirkin" <mst@redhat.com>
To: Jason Wang <jasowang@redhat.com>
Cc: netdev@vger.kernel.org, linux-kernel@vger.kernel.org,
	kvm@vger.kernel.org, virtualization@lists.linux-foundation.org
Subject: Re: [PATCH net-next RFC 0/5] batched tx processing in vhost_net
Date: Thu, 28 Sep 2017 01:28:54 +0300	[thread overview]
Message-ID: <20170928012009-mutt-send-email-mst@kernel.org> (raw)
In-Reply-To: <afb7cad9-d760-b4d7-ecc5-518442e061b1@redhat.com>

On Wed, Sep 27, 2017 at 08:27:37AM +0800, Jason Wang wrote:
> 
> 
> On 2017年09月26日 21:45, Michael S. Tsirkin wrote:
> > On Fri, Sep 22, 2017 at 04:02:30PM +0800, Jason Wang wrote:
> > > Hi:
> > > 
> > > This series tries to implement basic tx batched processing. This is
> > > done by prefetching descriptor indices and update used ring in a
> > > batch. This intends to speed up used ring updating and improve the
> > > cache utilization.
> > Interesting, thanks for the patches. So IIUC most of the gain is really
> > overcoming some of the shortcomings of virtio 1.0 wrt cache utilization?
> 
> Yes.
> 
> Actually, looks like batching in 1.1 is not as easy as in 1.0.
> 
> In 1.0, we could do something like:
> 
> batch update used ring by user copy_to_user()
> smp_wmb()
> update used_idx
> In 1.1, we need more memory barriers, can't benefit from fast copy helpers?
> 
> for () {
>     update desc.addr
>     smp_wmb()
>     update desc.flag
> }

Yes but smp_wmb is a NOP on e.g. x86. We can switch to other types of
barriers as well.  We do need to do the updates in order, so we might
need new APIs for that to avoid re-doing the translation all the time.

In 1.0 the last update is a cache miss always. You need batching to get
less misses. In 1.1 you don't have it so fundamentally there is less
need for batching. But batching does not always work.  DPDK guys (which
batch things aggressively) already tried 1.1 and saw performance gains
so we do not need to argue theoretically.



> > 
> > Which is fair enough (1.0 is already deployed) but I would like to avoid
> > making 1.1 support harder, and this patchset does this unfortunately,
> 
> I think the new APIs do not expose more internal data structure of virtio
> than before? (vq->heads has already been used by vhost_net for years).

For sure we might need to change vring_used_elem.

> Consider the layout is re-designed completely, I don't see an easy method to
> reuse current 1.0 API for 1.1.

Current API just says you get buffers then you use them. It is not tied
to actual separate used ring.


> > see comments on individual patches. I'm sure it can be addressed though.
> > 
> > > Test shows about ~22% improvement in tx pss.
> > Is this with or without tx napi in guest?
> 
> MoonGen is used in guest for better numbers.
> 
> Thanks

Not sure I understand. Did you set napi_tx to true or false?

> > 
> > > Please review.
> > > 
> > > Jason Wang (5):
> > >    vhost: split out ring head fetching logic
> > >    vhost: introduce helper to prefetch desc index
> > >    vhost: introduce vhost_add_used_idx()
> > >    vhost_net: rename VHOST_RX_BATCH to VHOST_NET_BATCH
> > >    vhost_net: basic tx virtqueue batched processing
> > > 
> > >   drivers/vhost/net.c   | 221 ++++++++++++++++++++++++++++----------------------
> > >   drivers/vhost/vhost.c | 165 +++++++++++++++++++++++++++++++------
> > >   drivers/vhost/vhost.h |   9 ++
> > >   3 files changed, 270 insertions(+), 125 deletions(-)
> > > 
> > > -- 
> > > 2.7.4
_______________________________________________
Virtualization mailing list
Virtualization@lists.linux-foundation.org
https://lists.linuxfoundation.org/mailman/listinfo/virtualization

  reply	other threads:[~2017-09-27 22:28 UTC|newest]

Thread overview: 35+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-09-22  8:02 [PATCH net-next RFC 0/5] batched tx processing in vhost_net Jason Wang
2017-09-22  8:02 ` [PATCH net-next RFC 1/5] vhost: split out ring head fetching logic Jason Wang
2017-09-22  8:31   ` Stefan Hajnoczi
2017-09-25  2:03     ` Jason Wang
2017-09-22  8:02 ` [PATCH net-next RFC 2/5] vhost: introduce helper to prefetch desc index Jason Wang
2017-09-22  9:02   ` Stefan Hajnoczi
2017-09-25  2:04     ` Jason Wang
2017-09-26 19:19   ` Michael S. Tsirkin
2017-09-27  0:35     ` Jason Wang
2017-09-27 22:57       ` Michael S. Tsirkin
2017-09-28  7:18         ` Jason Wang
2017-09-28  0:47   ` Willem de Bruijn
2017-09-28  7:44     ` Jason Wang
2017-09-22  8:02 ` [PATCH net-next RFC 3/5] vhost: introduce vhost_add_used_idx() Jason Wang
2017-09-22  9:07   ` Stefan Hajnoczi
2017-09-26 19:13   ` Michael S. Tsirkin
2017-09-27  0:38     ` Jason Wang
2017-09-27 22:58       ` Michael S. Tsirkin
2017-09-28  0:59         ` Willem de Bruijn
2017-09-28  7:19         ` Jason Wang
2017-09-22  8:02 ` [PATCH net-next RFC 4/5] vhost_net: rename VHOST_RX_BATCH to VHOST_NET_BATCH Jason Wang
2017-09-22  8:02 ` [PATCH net-next RFC 5/5] vhost_net: basic tx virtqueue batched processing Jason Wang
2017-09-26 19:25   ` Michael S. Tsirkin
2017-09-27  2:04     ` Jason Wang
2017-09-27 22:19       ` Michael S. Tsirkin
2017-09-28  7:02         ` Jason Wang
2017-09-28  7:52         ` Jason Wang
2017-09-28  0:55   ` Willem de Bruijn
2017-09-28  7:50     ` Jason Wang
2017-09-26 13:45 ` [PATCH net-next RFC 0/5] batched tx processing in vhost_net Michael S. Tsirkin
2017-09-27  0:27   ` Jason Wang
2017-09-27 22:28     ` Michael S. Tsirkin [this message]
2017-09-28  7:16       ` Jason Wang
2017-09-26 19:26 ` Michael S. Tsirkin
2017-09-27  2:06   ` Jason Wang

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=20170928012009-mutt-send-email-mst@kernel.org \
    --to=mst@redhat.com \
    --cc=jasowang@redhat.com \
    --cc=kvm@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=netdev@vger.kernel.org \
    --cc=virtualization@lists.linux-foundation.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