qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: Stefan Hajnoczi <stefanha@linux.vnet.ibm.com>
To: qemu-devel@nongnu.org
Cc: Steve Dobbelstein <steved@us.ibm.com>,
	Anthony Liguori <aliguori@us.ibm.com>,
	kvm@vger.kernel.org, "Michael S. Tsirkin" <mst@redhat.com>,
	Khoa Huynh <khoa@us.ibm.com>, Sridhar Samudrala <sri@us.ibm.com>
Subject: [Qemu-devel] Re: [PATCH] virtio: Use ioeventfd for virtqueue notify
Date: Tue, 19 Oct 2010 14:07:11 +0100	[thread overview]
Message-ID: <20101019130710.GA3906@stefan-thinkpad.transitives.com> (raw)
In-Reply-To: <1285855312-11739-1-git-send-email-stefanha@linux.vnet.ibm.com>

On Thu, Sep 30, 2010 at 03:01:52PM +0100, Stefan Hajnoczi wrote:
> Virtqueue notify is currently handled synchronously in userspace virtio.
> This prevents the vcpu from executing guest code while hardware
> emulation code handles the notify.
> 
> On systems that support KVM, the ioeventfd mechanism can be used to make
> virtqueue notify a lightweight exit by deferring hardware emulation to
> the iothread and allowing the VM to continue execution.  This model is
> similar to how vhost receives virtqueue notifies.
> 
> The result of this change is improved performance for userspace virtio
> devices.  Virtio-blk throughput increases especially for multithreaded
> scenarios and virtio-net transmit throughput increases substantially.
> Full numbers are below.
> 
> This patch employs ioeventfd virtqueue notify for all virtio devices.
> Linux kernels pre-2.6.34 only allow for 6 ioeventfds per VM and care
> must be taken so that vhost-net, the other ioeventfd user in QEMU, is
> able to function.  On such kernels ioeventfd virtqueue notify will not
> be used.
> 
> Khoa Huynh <khoa@us.ibm.com> collected the following data for
> virtio-blk with cache=none,aio=native:
> 
> FFSB Test          Threads  Unmodified  Patched
>                             (MB/s)      (MB/s)
> Large file create  1        21.7        21.8
>                    8        101.0       118.0
>                    16       119.0       157.0
> 
> Sequential reads   1        21.9        23.2
>                    8        114.0       139.0
>                    16       143.0       178.0
> 
> Random reads       1        3.3         3.6
>                    8        23.0        25.4
>                    16       43.3        47.8
> 
> Random writes      1        22.2        23.0
>                    8        93.1        111.6
>                    16       110.5       132.0
> 
> Sridhar Samudrala <sri@us.ibm.com> collected the following data for
> virtio-net with 2.6.36-rc1 on the host and 2.6.34 on the guest.
> 
> Guest to Host TCP_STREAM throughput(Mb/sec)
> -------------------------------------------
> Msg Size  vhost-net  virtio-net  virtio-net/ioeventfd
> 65536         12755        6430                  7590
> 16384          8499        3084                  5764
>  4096          4723        1578                  3659
>  1024          1827         981                  2060
> 
> Host to Guest TCP_STREAM throughput(Mb/sec)
> -------------------------------------------
> Msg Size  vhost-net  virtio-net  virtio-net/ioeventfd
> 65536         11156        5790                  5853
> 16384         10787        5575                  5691
>  4096         10452        5556                  4277
>  1024          4437        3671                  5277
> 
> Guest to Host TCP_RR latency(transactions/sec)
> ----------------------------------------------
> 
> Msg Size  vhost-net  virtio-net  virtio-net/ioeventfd
>     1          9903        3459                  3425
>  4096          7185        1931                  1899
> 16384          6108        2102                  1923
> 65536          3161        1610                  1744
> 
> Signed-off-by: Stefan Hajnoczi <stefanha@linux.vnet.ibm.com>
> ---
> Small changes are required for qemu-kvm.git.  I will send them once qemu.git
> has virtio-ioeventfd support.
> 
>  hw/vhost.c  |    6 ++--
>  hw/virtio.c |  106 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
>  hw/virtio.h |    9 +----
>  kvm-all.c   |   39 +++++++++++++++++++++
>  kvm-stub.c  |    5 +++
>  kvm.h       |    1 +
>  6 files changed, 156 insertions(+), 10 deletions(-)

Is there anything stopping this patch from being merged?

Thanks,
Stefan

  parent reply	other threads:[~2010-10-19 13:24 UTC|newest]

Thread overview: 23+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2010-09-30 14:01 [Qemu-devel] [PATCH] virtio: Use ioeventfd for virtqueue notify Stefan Hajnoczi
2010-10-03 11:01 ` [Qemu-devel] " Avi Kivity
2010-10-03 13:51   ` Michael S. Tsirkin
2010-10-03 14:21     ` Avi Kivity
2010-10-03 14:28       ` Michael S. Tsirkin
2010-10-04  1:18         ` Anthony Liguori
2010-10-04  8:04           ` Avi Kivity
2010-10-04 14:01             ` Anthony Liguori
2010-10-04 16:12               ` Michael S. Tsirkin
2010-10-04 16:20                 ` Anthony Liguori
2010-10-04 16:25                   ` Michael S. Tsirkin
2010-10-04 14:30   ` Stefan Hajnoczi
2010-10-05 11:00   ` rukhsana ansari
2010-10-05 11:58     ` Avi Kivity
2010-10-19 13:07 ` Stefan Hajnoczi [this message]
2010-10-19 13:12   ` Anthony Liguori
2010-10-19 13:35     ` Michael S. Tsirkin
2010-10-19 13:44       ` Stefan Hajnoczi
2010-10-19 13:43         ` Michael S. Tsirkin
2010-11-10 14:52           ` Stefan Hajnoczi
2010-10-19 13:33 ` Michael S. Tsirkin
2010-10-25 13:25   ` Stefan Hajnoczi
2010-10-25 15:01   ` Stefan Hajnoczi

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=20101019130710.GA3906@stefan-thinkpad.transitives.com \
    --to=stefanha@linux.vnet.ibm.com \
    --cc=aliguori@us.ibm.com \
    --cc=khoa@us.ibm.com \
    --cc=kvm@vger.kernel.org \
    --cc=mst@redhat.com \
    --cc=qemu-devel@nongnu.org \
    --cc=sri@us.ibm.com \
    --cc=steved@us.ibm.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 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).