From: Christian Borntraeger <borntraeger@de.ibm.com>
To: Ming Lei <ming.lei@canonical.com>,
qemu-devel@nongnu.org, Peter Maydell <peter.maydell@linaro.org>,
Paolo Bonzini <pbonzini@redhat.com>,
Stefan Hajnoczi <stefanha@redhat.com>
Cc: Kevin Wolf <kwolf@redhat.com>,
Christian Ehrhardt <ehrhardt@linux.vnet.ibm.com>,
Fam Zheng <famz@redhat.com>,
"Michael S. Tsirkin" <mst@redhat.com>
Subject: Re: [Qemu-devel] [PATCH 00/14] dataplane: optimization and multi virtqueue support
Date: Wed, 30 Jul 2014 14:42:10 +0200 [thread overview]
Message-ID: <53D8E822.7050007@de.ibm.com> (raw)
In-Reply-To: <1406720388-18671-1-git-send-email-ming.lei@canonical.com>
On 30/07/14 13:39, Ming Lei wrote:
> These patches bring up below 4 changes:
>
> - introduce selective coroutine bypass mechanism
> for improving performance of virtio-blk dataplane with
> raw format image
>
> - introduce object allocation pool and apply it to
> virtio-blk dataplane for improving its performance
>
> - linux-aio changes: fixing for cases of -EAGAIN and partial
> completion, increase max events to 256, and remove one unuseful
> fields in 'struct qemu_laiocb'
>
> - support multi virtqueue for virtio-blk dataplane
>
> The virtio-blk multi virtqueue feature will be added to virtio spec 1.1[1],
> and the 3.17 linux kernel[2] will support the feature in virtio-blk driver.
> For those who wants to play the stuff, the kernel side patche can be found
> in either Jens's block tree[3] or linux-next[4].
>
> Below fio script running from VM is used for test improvement of these patches:
>
> [global]
> direct=1
> size=128G
> bsrange=4k-4k
> timeout=120
> numjobs=${JOBS}
> ioengine=libaio
> iodepth=64
> filename=/dev/vdc
> group_reporting=1
>
> [f]
> rw=randread
>
> One quadcore VM(8G RAM) is created in below host to run above fio test:
>
> - server(16cores: 8 physical cores, 2 threads per physical core)
>
> Follows the test result on throughput improvement(IOPS) with
> this patchset(4 virtqueues per virito-blk device) against QEMU
> 2.1.0-rc5: 30% throughput improvement can be observed, and
> scalability for parallel I/Os is improved more(80% throughput
> improvement is observed in case of 4 JOBS).
>
> From above result, we can see both scalability and performance
> get improved a lot.
>
> After commit 580b6b2aa2(dataplane: use the QEMU block
> layer for I/O), average time for submiting one single
> request has been increased a lot, as my trace, the average
> time taken for submiting one request has been doubled even
> though block plug&unplug mechanism is introduced to
> ease its effect. That is why this patchset introduces
> selective coroutine bypass mechanism and object allocation
> pool for saving the time first. Based on QEMU 2.0, only
> single virtio-blk dataplane multi virtqueue patch can get
> better improvement than current result[5].
>
> TODO:
> - optimize block layer for linux aio, so that
> more time can be saved for submitting request
> - support more than one aio-context for improving
> virtio-blk performance
[...]
>
> [1], http://marc.info/?l=linux-api&m=140486843317107&w=2
> [2], http://marc.info/?l=linux-api&m=140418368421229&w=2
> [3], http://git.kernel.org/cgit/linux/kernel/git/axboe/linux-block.git/ #for-3.17/drivers
> [4], https://git.kernel.org/cgit/linux/kernel/git/next/linux-next.git/
> [5], http://marc.info/?l=linux-api&m=140377573830230&w=2
FYI, I just tested with one virtqueue on s390 (3.15 as guest). It was just a quick sniff, but we are getting closer to the fio results that we had before commit 580b6b2aa2(dataplane: use the QEMU block
layer for I/O). I cant give proper numbers right now, as I am on a shared storage subsystem but this looks like we are on the right track. I have not looked at the code, though.
Christian
next prev parent reply other threads:[~2014-07-30 12:42 UTC|newest]
Thread overview: 71+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-07-30 11:39 [Qemu-devel] [PATCH 00/14] dataplane: optimization and multi virtqueue support Ming Lei
2014-07-30 11:39 ` [Qemu-devel] [PATCH 01/15] qemu coroutine: support bypass mode Ming Lei
2014-07-30 13:45 ` Paolo Bonzini
2014-07-30 17:15 ` Ming Lei
2014-07-30 23:37 ` Paolo Bonzini
2014-07-31 3:55 ` Ming Lei
2014-07-31 7:37 ` Benoît Canet
2014-07-31 9:47 ` Ming Lei
2014-07-31 10:45 ` Paolo Bonzini
2014-08-01 13:38 ` Ming Lei
2014-07-31 8:59 ` Ming Lei
2014-07-31 9:15 ` Paolo Bonzini
2014-07-31 10:06 ` Ming Lei
2014-07-31 16:13 ` Ming Lei
2014-07-31 16:30 ` Paolo Bonzini
2014-08-01 2:54 ` Ming Lei
2014-08-01 13:13 ` Stefan Hajnoczi
2014-08-01 13:48 ` Ming Lei
2014-08-01 14:17 ` Paolo Bonzini
2014-08-01 15:21 ` Ming Lei
2014-08-01 14:52 ` Ming Lei
2014-08-01 16:03 ` Stefan Hajnoczi
2014-08-02 2:42 ` Ming Lei
2014-07-30 11:39 ` [Qemu-devel] [PATCH 02/15] qemu aio: prepare for supporting selective bypass coroutine Ming Lei
2014-07-30 11:39 ` [Qemu-devel] [PATCH 03/15] block: support to bypass qemu coroutinue Ming Lei
2014-07-30 11:39 ` [Qemu-devel] [PATCH 04/15] Revert "raw-posix: drop raw_get_aio_fd() since it is no longer used" Ming Lei
2014-07-30 11:39 ` [Qemu-devel] [PATCH 05/15] dataplane: enable selective bypassing coroutine Ming Lei
2014-07-30 11:39 ` [Qemu-devel] [PATCH 06/15] qemu/obj_pool.h: introduce object allocation pool Ming Lei
2014-07-30 11:39 ` [Qemu-devel] [PATCH 07/15] dataplane: use object pool to speed up allocation for virtio blk request Ming Lei
2014-07-30 14:14 ` Paolo Bonzini
2014-07-30 15:09 ` Michael S. Tsirkin
2014-07-31 3:22 ` Ming Lei
2014-07-31 9:18 ` Paolo Bonzini
2014-08-01 7:42 ` Ming Lei
2014-08-04 10:21 ` Stefan Hajnoczi
2014-08-04 11:42 ` Ming Lei
2014-07-30 11:39 ` [Qemu-devel] [PATCH 08/15] virtio: decrease size of VirtQueueElement Ming Lei
2014-07-30 13:51 ` Paolo Bonzini
2014-07-30 14:40 ` Michael S. Tsirkin
2014-07-30 14:50 ` Paolo Bonzini
2014-07-31 2:11 ` Ming Lei
2014-07-31 2:07 ` Ming Lei
2014-07-31 9:38 ` Paolo Bonzini
2014-08-01 3:34 ` Ming Lei
2014-07-30 11:39 ` [Qemu-devel] [PATCH 09/15] linux-aio: fix submit aio as a batch Ming Lei
2014-07-30 13:59 ` Paolo Bonzini
2014-07-30 17:32 ` Ming Lei
2014-07-30 23:41 ` Paolo Bonzini
2014-07-30 11:39 ` [Qemu-devel] [PATCH 10/15] linux-aio: increase max event to 256 Ming Lei
2014-07-30 12:15 ` Eric Blake
2014-07-30 14:00 ` Paolo Bonzini
2014-07-30 17:20 ` Ming Lei
2014-08-04 10:26 ` Stefan Hajnoczi
2014-07-30 11:39 ` [Qemu-devel] [PATCH 11/15] linux-aio: remove 'node' from 'struct qemu_laiocb' Ming Lei
2014-07-30 11:39 ` [Qemu-devel] [PATCH 12/15] hw/virtio-pci: introduce num_queues property Ming Lei
2014-07-30 11:39 ` [Qemu-devel] [PATCH 13/15] hw/virtio/virtio-blk.h: introduce VIRTIO_BLK_F_MQ Ming Lei
2014-07-30 11:39 ` [Qemu-devel] [PATCH 14/15] hw/block/virtio-blk: create num_queues vqs if dataplane is enabled Ming Lei
2014-07-30 14:01 ` Paolo Bonzini
2014-07-30 15:12 ` Michael S. Tsirkin
2014-07-30 15:25 ` Paolo Bonzini
2014-07-31 3:47 ` Ming Lei
2014-07-31 8:52 ` Paolo Bonzini
2014-08-01 3:09 ` Ming Lei
2014-08-01 3:24 ` Ming Lei
2014-08-01 6:10 ` Paolo Bonzini
2014-08-01 7:35 ` Ming Lei
2014-08-01 7:46 ` Paolo Bonzini
2014-07-30 11:39 ` [Qemu-devel] [PATCH 15/15] dataplane: virtio-blk: support mutlti virtqueue Ming Lei
2014-07-30 12:42 ` Christian Borntraeger [this message]
2014-08-04 10:16 ` [Qemu-devel] [PATCH 00/14] dataplane: optimization and multi virtqueue support Stefan Hajnoczi
2014-08-04 10:45 ` Ming Lei
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=53D8E822.7050007@de.ibm.com \
--to=borntraeger@de.ibm.com \
--cc=ehrhardt@linux.vnet.ibm.com \
--cc=famz@redhat.com \
--cc=kwolf@redhat.com \
--cc=ming.lei@canonical.com \
--cc=mst@redhat.com \
--cc=pbonzini@redhat.com \
--cc=peter.maydell@linaro.org \
--cc=qemu-devel@nongnu.org \
--cc=stefanha@redhat.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).