Marcelo Tosatti wrote: > Use asynchronous IO in the virtio block QEMU driver. > > virtio_blk_handle_output should not block for long periods, since it > holds the mutex lock prohibiting other vcpu's from doing IO to QEMU > devices. Without AIO write intensive benchmarks make guests hang for > several seconds. Write performance also increases significantly. > > Also report errors properly. > > To take full advantage of parallel IO we need to allow for more than AIO > thread per-fd, or use direct IO (-nocache) which uses kernel AIO. > > Separate patch allows virtio-block guest driver to queue more than one > element in the virtio ring. > > Anthony, this patch abuses the virtqueue_push() interface by passing a > VirtQueueElement with only "index" member valid, since we know this is > all it uses. Doing so avoids allocation, zeroing and copy of an entire > VirtQueueElement structure. What do you say? >
So I'd like to do this a little differently. In a few minutes, I'll be sending a virtio patch series to QEMU. In it, I introduce a standard way to deal with scatter/gather lists. Assuming that goes well, I think we should add a proper bdrv_aio_readv/writev interface that takes an IOVector. That simplifies the virtio-blk support quite a bit. We also need to implement a reset handler when we introduce aio support that cancels and pending aio requests. Regards, Anthony Liguori ------------------------------------------------------------------------- Check out the new SourceForge.net Marketplace. It's the best place to buy or sell services for just about anything Open Source. http://ad.doubleclick.net/clk;164216239;13503038;w?http://sf.net/marketplace _______________________________________________ kvm-devel mailing list kvm-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/kvm-devel