All of lore.kernel.org
 help / color / mirror / Atom feed
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

  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 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.