All of lore.kernel.org
 help / color / mirror / Atom feed
* [Qemu-devel] [PATCH RFC v2 0/3] Fix slow startup with many disks
@ 2015-06-10 11:38 Alexander Yarygin
  2015-06-10 11:38 ` [Qemu-devel] [PATCH 1/3] block-backend: Introduce blk_drain() Alexander Yarygin
                   ` (3 more replies)
  0 siblings, 4 replies; 13+ messages in thread
From: Alexander Yarygin @ 2015-06-10 11:38 UTC (permalink / raw)
  To: qemu-devel
  Cc: Kevin Wolf, qemu-block, Alexander Yarygin, Ekaterina Tumanova,
	Christian Borntraeger, Stefan Hajnoczi, Cornelia Huck,
	Paolo Bonzini

Changes in v2:
    - Patch "block-backend: Introduce blk_drain() and replace blk_drain_all()"
      splitted to two.
    - blk_drain() moved to above virtio_blk_data_plane_stop().

During reset the aio_poll() function is called at least amount_of_disks^2 times:

for_each disk
    virtio_blk_reset()
        bdrv_drain_all()
                for_each disk
                         aio_poll()

For example, startup with 1000 disks takes over 13 minutes.

Patches 1 and 2 removes inner loop by using bdrv_drain() instead
of bdrv_drain_all(). bdrv_drain() works on one disk at time.

Since bdrv_drain_all() is still called in other places, patch 3 optimizes
it for cases, where there are more disks than iothreads.

Thanks.

Alexander Yarygin (3):
  block-backend: Introduce blk_drain()
  virtio-blk: Use blk_drain() to drain IO requests
  block: Let bdrv_drain_all() to call aio_poll() for each AioContext

 block/block-backend.c          |  5 +++++
 block/io.c                     | 42 ++++++++++++++++++++++++++----------------
 hw/block/virtio-blk.c          | 11 ++++++-----
 include/sysemu/block-backend.h |  1 +
 4 files changed, 38 insertions(+), 21 deletions(-)

-- 
1.9.1

^ permalink raw reply	[flat|nested] 13+ messages in thread

end of thread, other threads:[~2015-06-16  9:09 UTC | newest]

Thread overview: 13+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2015-06-10 11:38 [Qemu-devel] [PATCH RFC v2 0/3] Fix slow startup with many disks Alexander Yarygin
2015-06-10 11:38 ` [Qemu-devel] [PATCH 1/3] block-backend: Introduce blk_drain() Alexander Yarygin
2015-06-10 11:38 ` [Qemu-devel] [PATCH 2/3] virtio-blk: Use blk_drain() to drain IO requests Alexander Yarygin
2015-06-11  2:51   ` Fam Zheng
2015-06-12 12:50     ` Christian Borntraeger
2015-06-12 14:17     ` [Qemu-devel] [Qemu-block] " Stefan Hajnoczi
2015-06-12 14:13   ` Stefan Hajnoczi
2015-06-10 11:38 ` [Qemu-devel] [PATCH 3/3] block: Let bdrv_drain_all() to call aio_poll() for each AioContext Alexander Yarygin
2015-06-12 14:17   ` [Qemu-devel] [Qemu-block] " Stefan Hajnoczi
2015-06-15 12:24   ` [Qemu-devel] " Christian Borntraeger
2015-06-16  8:39   ` Stefan Hajnoczi
2015-06-16  9:08     ` Alexander Yarygin
2015-06-10 18:40 ` [Qemu-devel] [PATCH RFC v2 0/3] Fix slow startup with many disks Christian Borntraeger

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.