From: Stefan Hajnoczi <stefanha@redhat.com>
To: Ming Lei <ming.lei@canonical.com>
Cc: Kevin Wolf <kwolf@redhat.com>,
Paolo Bonzini <pbonzini@redhat.com>, Fam Zheng <famz@redhat.com>,
qemu-devel <qemu-devel@nongnu.org>
Subject: Re: [Qemu-devel] [PATCH v1 00/17] dataplane: optimization and multi virtqueue support
Date: Thu, 14 Aug 2014 10:39:21 +0100 [thread overview]
Message-ID: <20140814093921.GD9874@stefanha-thinkpad.redhat.com> (raw)
In-Reply-To: <CACVXFVOY9dKKaKnUm1dt3BoWQuAfxkNC8-rim5T8crqxcf8WLQ@mail.gmail.com>
[-- Attachment #1: Type: text/plain, Size: 2204 bytes --]
On Wed, Aug 13, 2014 at 09:49:23PM +0800, Ming Lei wrote:
> On Wed, Aug 13, 2014 at 9:16 PM, Paolo Bonzini <pbonzini@redhat.com> wrote:
> > Il 13/08/2014 11:54, Kevin Wolf ha scritto:
> >> Am 12.08.2014 um 21:08 hat Paolo Bonzini geschrieben:
> >>> Il 12/08/2014 10:12, Ming Lei ha scritto:
> >>>>>> The below patch is basically the minimal change to bypass coroutines. Of course
> >>>>>> the block.c part is not acceptable as is (the change to refresh_total_sectors
> >>>>>> is broken, the others are just ugly), but it is a start. Please run it with
> >>>>>> your fio workloads, or write an aio-based version of a qemu-img/qemu-io *I/O*
> >>>>>> benchmark.
> >>>> Could you explain why the new change is introduced?
> >>>
> >>> It provides a fast path for bdrv_aio_readv/writev whenever there is
> >>> nothing to do after the driver routine returns. In this case there is
> >>> no need to wrap the AIOCB returned by the driver routine.
> >>>
> >>> It doesn't go all the way, and in particular it doesn't reverse
> >>> completely the roles of bdrv_co_readv/writev vs. bdrv_aio_readv/writev.
> >>
> >> That's actually why I think it's an option. Remember that, like you say
> >> below, we're optimising for an extreme case here, and I certainly don't
> >> want to hurt the common case for it. I can't imagine a way of reversing
> >> the roles without multiplying the cost for the coroutine path.
> >
> > I'm not that worried about it. Perhaps it's enough to add an
> > !qemu_in_coroutine() to the AIO fast path, and let the driver provide
> > optimized coroutine paths like in your patches that allocate AIOCBs on
> > the stack.
>
> IMO, it will not be a extreme case as SSD or high performance storage
> becomes more popular, coroutine starts to affect performance if IOPS
> is more than 100K, as previous computation.
The case you seem to care about is raw images on high IOPS devices. You
mentioned 1M IOPS devices in another email.
You don't seem to want QEMU's block layer features, that is why you are
trying to bypass them instead of optimizing the block layer.
That begs the question whether you should look at PCI passthrough
instead?
Stefan
[-- Attachment #2: Type: application/pgp-signature, Size: 473 bytes --]
next prev parent reply other threads:[~2014-08-14 9:39 UTC|newest]
Thread overview: 81+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-08-05 3:33 [Qemu-devel] [PATCH v1 00/17] dataplane: optimization and multi virtqueue support Ming Lei
2014-08-05 3:33 ` [Qemu-devel] [PATCH v1 01/17] qemu/obj_pool.h: introduce object allocation pool Ming Lei
2014-08-05 11:55 ` Eric Blake
2014-08-05 12:05 ` Michael S. Tsirkin
2014-08-05 12:21 ` Eric Blake
2014-08-05 12:51 ` Michael S. Tsirkin
2014-08-06 2:35 ` Ming Lei
2014-08-05 3:33 ` [Qemu-devel] [PATCH v1 02/17] dataplane: use object pool to speed up allocation for virtio blk request Ming Lei
2014-08-05 12:30 ` Eric Blake
2014-08-06 2:45 ` Ming Lei
2014-08-05 3:33 ` [Qemu-devel] [PATCH v1 03/17] qemu coroutine: support bypass mode Ming Lei
2014-08-05 3:33 ` [Qemu-devel] [PATCH v1 04/17] block: prepare for supporting selective bypass coroutine Ming Lei
2014-08-05 3:33 ` [Qemu-devel] [PATCH v1 05/17] garbage collector: introduced for support of " Ming Lei
2014-08-05 12:43 ` Eric Blake
2014-08-05 3:33 ` [Qemu-devel] [PATCH v1 06/17] block: introduce bdrv_co_can_bypass_co Ming Lei
2014-08-05 3:33 ` [Qemu-devel] [PATCH v1 07/17] block: support to bypass qemu coroutinue Ming Lei
2014-08-05 3:33 ` [Qemu-devel] [PATCH v1 08/17] Revert "raw-posix: drop raw_get_aio_fd() since it is no longer used" Ming Lei
2014-08-05 3:33 ` [Qemu-devel] [PATCH v1 09/17] dataplane: enable selective bypassing coroutine Ming Lei
2014-08-05 3:33 ` [Qemu-devel] [PATCH v1 10/17] linux-aio: fix submit aio as a batch Ming Lei
2014-08-05 3:33 ` [Qemu-devel] [PATCH v1 11/17] linux-aio: handling -EAGAIN for !s->io_q.plugged case Ming Lei
2014-08-05 3:33 ` [Qemu-devel] [PATCH v1 12/17] linux-aio: increase max event to 256 Ming Lei
2014-08-05 3:33 ` [Qemu-devel] [PATCH v1 13/17] linux-aio: remove 'node' from 'struct qemu_laiocb' Ming Lei
2014-08-05 3:33 ` [Qemu-devel] [PATCH v1 14/17] hw/virtio/virtio-blk.h: introduce VIRTIO_BLK_F_MQ Ming Lei
2014-08-05 3:33 ` [Qemu-devel] [PATCH v1 15/17] virtio-blk: support multi queue for non-dataplane Ming Lei
2014-08-05 3:33 ` [Qemu-devel] [PATCH v1 16/17] virtio-blk: dataplane: support multi virtqueue Ming Lei
2014-08-05 3:33 ` [Qemu-devel] [PATCH v1 17/17] hw/virtio-pci: introduce num_queues property Ming Lei
2014-08-05 9:38 ` [Qemu-devel] [PATCH v1 00/17] dataplane: optimization and multi virtqueue support Stefan Hajnoczi
2014-08-05 9:50 ` Ming Lei
2014-08-05 9:56 ` Kevin Wolf
2014-08-05 10:50 ` Ming Lei
2014-08-05 13:59 ` Stefan Hajnoczi
2014-08-05 9:48 ` Kevin Wolf
2014-08-05 10:00 ` Ming Lei
2014-08-05 11:44 ` Paolo Bonzini
2014-08-05 13:48 ` Stefan Hajnoczi
2014-08-05 14:47 ` Kevin Wolf
2014-08-06 5:33 ` Ming Lei
2014-08-06 7:45 ` Paolo Bonzini
2014-08-06 8:38 ` Ming Lei
2014-08-06 8:50 ` Paolo Bonzini
2014-08-06 13:53 ` Ming Lei
2014-08-06 8:48 ` Kevin Wolf
2014-08-06 9:37 ` Ming Lei
2014-08-06 10:09 ` Kevin Wolf
2014-08-06 11:28 ` Ming Lei
2014-08-06 11:44 ` Ming Lei
2014-08-06 15:40 ` Kevin Wolf
2014-08-07 10:27 ` Ming Lei
2014-08-07 10:52 ` Ming Lei
2014-08-07 11:06 ` Kevin Wolf
2014-08-07 13:03 ` Ming Lei
2014-08-07 13:51 ` Kevin Wolf
2014-08-08 10:32 ` Ming Lei
2014-08-08 11:26 ` Ming Lei
2014-08-10 3:46 ` Ming Lei
2014-08-11 14:03 ` Kevin Wolf
2014-08-12 7:53 ` Ming Lei
2014-08-12 11:40 ` Kevin Wolf
2014-08-12 12:14 ` Ming Lei
2014-08-11 19:37 ` Paolo Bonzini
2014-08-12 8:12 ` Ming Lei
2014-08-12 19:08 ` Paolo Bonzini
2014-08-13 9:54 ` Kevin Wolf
2014-08-13 13:16 ` Paolo Bonzini
2014-08-13 13:49 ` Ming Lei
2014-08-14 9:39 ` Stefan Hajnoczi [this message]
2014-08-14 10:12 ` Ming Lei
2014-08-15 20:16 ` Paolo Bonzini
2014-08-13 10:19 ` Ming Lei
2014-08-13 12:35 ` Paolo Bonzini
2014-08-13 8:55 ` Stefan Hajnoczi
2014-08-13 11:43 ` Ming Lei
2014-08-13 12:35 ` Paolo Bonzini
2014-08-13 13:07 ` Ming Lei
2014-08-14 10:46 ` Kevin Wolf
2014-08-15 10:39 ` Ming Lei
2014-08-15 20:15 ` Paolo Bonzini
2014-08-16 8:20 ` Ming Lei
2014-08-17 5:29 ` Paolo Bonzini
2014-08-18 8:58 ` Kevin Wolf
2014-08-06 9:37 ` 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=20140814093921.GD9874@stefanha-thinkpad.redhat.com \
--to=stefanha@redhat.com \
--cc=famz@redhat.com \
--cc=kwolf@redhat.com \
--cc=ming.lei@canonical.com \
--cc=pbonzini@redhat.com \
--cc=qemu-devel@nongnu.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).