[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PULL 2/5] virtio-blk: use blk_io_plug/unplug for Linux AIO
From: |
Stefan Hajnoczi |
Subject: |
[Qemu-devel] [PULL 2/5] virtio-blk: use blk_io_plug/unplug for Linux AIO batching |
Date: |
Fri, 9 Oct 2015 10:13:24 +0100 |
The raw-posix block driver implements Linux AIO batching so multiple
requests can be submitted with a single io_submit(2) system call.
Batching is currently only used by virtio-scsi and
virtio-blk-data-plane.
Enable batching for regular virtio-blk so the number of io_submit(2)
system calls is reduced for workloads with queue depth > 1.
In 4KB random read performance tests with queue depth 32, the CPU
utilization on the host is reduced by 9.4%. The fio job is as follows:
[global]
bs=4k
ioengine=libaio
iodepth=32
direct=1
sync=0
time_based=1
runtime=30
clocksource=gettimeofday
ramp_time=5
[job1]
rw=randread
filename=/dev/vdb
size=4096M
write_bw_log=fio
write_iops_log=fio
write_lat_log=fio
log_avg_msec=1000
This benchmark was run on an raw image on LVM. The disk was an SSD
drive and -drive cache=none,aio=native was used.
Tested-by: Pradeep Surisetty <address@hidden>
Signed-off-by: Stefan Hajnoczi <address@hidden>
Reviewed-by: Fam Zheng <address@hidden>
---
hw/block/virtio-blk.c | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/hw/block/virtio-blk.c b/hw/block/virtio-blk.c
index f9301ae..76d27f9 100644
--- a/hw/block/virtio-blk.c
+++ b/hw/block/virtio-blk.c
@@ -600,6 +600,8 @@ static void virtio_blk_handle_output(VirtIODevice *vdev,
VirtQueue *vq)
return;
}
+ blk_io_plug(s->blk);
+
while ((req = virtio_blk_get_request(s))) {
virtio_blk_handle_request(req, &mrb);
}
@@ -607,6 +609,8 @@ static void virtio_blk_handle_output(VirtIODevice *vdev,
VirtQueue *vq)
if (mrb.num_reqs) {
virtio_blk_submit_multireq(s->blk, &mrb);
}
+
+ blk_io_unplug(s->blk);
}
static void virtio_blk_dma_restart_bh(void *opaque)
--
2.4.3
- [Qemu-devel] [PULL 0/5] Block patches, Stefan Hajnoczi, 2015/10/09
- [Qemu-devel] [PULL 1/5] sdhci: Pass drive parameter to sdhci-pci via qdev property, Stefan Hajnoczi, 2015/10/09
- [Qemu-devel] [PULL 4/5] block: switch from g_slice allocator to malloc, Stefan Hajnoczi, 2015/10/09
- [Qemu-devel] [PULL 5/5] sdhci.c: Limit the maximum block size, Stefan Hajnoczi, 2015/10/09
- [Qemu-devel] [PULL 2/5] virtio-blk: use blk_io_plug/unplug for Linux AIO batching,
Stefan Hajnoczi <=
- [Qemu-devel] [PULL 3/5] virtio dataplane: adapt dataplane for virtio Version 1, Stefan Hajnoczi, 2015/10/10
- Re: [Qemu-devel] [PULL 0/5] Block patches, Peter Maydell, 2015/10/10