On 26/10/2015 17:31, Andrey Korolyov wrote: >> the virtio block device is always splitting a single read >> range request to 4k ones, bringing the overall performance of the >> sequential reads far below virtio-scsi. >> >> How does the blktrace look like in the guest? > > Yep, thanks for suggestion. It looks now like a pure driver issue: > > Reads Queued: 11008, 44032KiB Writes Queued: 0, > 0KiB > Read Dispatches: 11008, 44032KiB Write Dispatches: 0, > 0KiB > > vs > > Reads Queued: 185728, 742912KiB Writes Queued: 0, > 0KiB > Read Dispatches: 2902, 742912KiB Write Dispatches: 0, > 0KiB > > Because guest virtio-blk driver lacks *any* blk scheduler management, > this is kinda logical. Requests for scsi backend are dispatched in ^^^^^^^^^^
queued you mean? > single block-sized chunks as well, but they are mostly merged by a > scheduler before being passed to the device layer. Could be there any > improvements over the situation except writing an underlay b/w virtio > emulator backend and the real storage? This is probably the fall-out of converting the virtio-blk to use blk-mq, which was premature to say the least. Jeff Moyer was working on it, but I'm not sure if this has been merged. Andrey, what kernel are you using? Paolo