qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] [PATCH v6 0/3] linux-aio: introduce submit I/O asa batc


From: Zhang Haoyu
Subject: Re: [Qemu-devel] [PATCH v6 0/3] linux-aio: introduce submit I/O asa batch
Date: Tue, 26 Aug 2014 15:31:19 +0800

>> Hi,
>> 
>> The commit 580b6b2aa2(dataplane: use the QEMU block layer for I/O)
>> introduces ~40% throughput regression on virtio-blk dataplane, and
>> one of causes is that submitting I/O as a batch is removed.
>> 
>> This patchset trys to introduce this mechanism on block, at least,
>> linux-aio can benefit from that.
>> 
>> With these patches, it is observed that thoughout on virtio-blk
>> dataplane can be improved a lot, see data in commit log of patch
>> 3/3.
>> 
>> It should be possible to apply the batch mechanism to other devices
>> (such as virtio-scsi) too.
>> 
>> TODO:
>>      - support queuing I/O to multi files for scsi devies, which
>>     need some changes to linux-aio
>> 
>> V6:
>>      - fix requests leak if part of them arn't submitted successfully,
>>      pointed by Stefan
>>      - linux-aio.c coding style fix
>> 
>> V5:
>>      - rebase on v2.1.0-rc0 of qemu.git/master
>>      - block/linux-aio.c code style fix
>>      - don't flush io queue before flush, pointed by Paolo
>> 
>> V4:
>>      - support other non-raw formats with under-optimized performance
>>      - use reference counter for plug & unplug
>>      - flush io queue before sending flush command
>> 
>> V3:
>>      - only support submitting I/O as a batch for raw format, pointed by
>>     Kevin
>> 
>> V2:
>>      - define return value of bdrv_io_unplug as void, suggested by Paolo
>>      - avoid busy-wait for handling io_submit
>> V1:
>>      - move queuing io stuff into linux-aio.c as suggested by Paolo
>
>Thanks, applied to my block tree:
>https://github.com/stefanha/qemu/commits/block
>
Can we use the queued io data as caches, 
io write will directly return and tell the guest the io is completed after the 
io is enqueued, 
better user experience for burst io,
and io-read will firstly search the io queue, if matched data found, directly 
get the data from the queue, 
if not, then read the data from the disk or host page cache.
Any ideas?

Thanks,
Zhang Haoyu

>In Patch 2 we should complete requests with -EIO if io_submit() returned
>0 <= ret < len.  I fixed this up when applying because the patch was
>completing with a bogus ret value.
>
>Stefan




reply via email to

[Prev in Thread] Current Thread [Next in Thread]