On 07/11/2016 11:57 PM, Fam Zheng wrote: > On Mon, 07/11 15:53, John Snow wrote: >> >> >> On 07/07/2016 05:35 AM, Denis V. Lunev wrote: >>> We should not take into account zero blocks for delay calculations. >>> They are not read and thus IO throttling is not required. In the >>> other case VM migration with 16 Tb QCOW2 disk with 4 Gb of data takes >>> days. >>
>> >> What I wonder is if we shouldn't be deterministically reading how much >> data we are actually shuffling over the pipe and using that for >> ratelimiting instead of in a higher abstraction layer "guessing" how >> much data we're going to be sending. > > It's a good question, I wonder if it is possible that block layer can even use > a fallback of write write_zeroes even write_zeroes_ok is true? Indeed, if you do an unaligned write, then write_zeroes will fall back to normal write for at least the head and tail, based on whether the driver returns -ENOTSUP. Right now, we are rather loose on what the block layer returns on successful writes - we guarantee that we don't do short writes (you either have everything written, or you get a negative result), but sometimes we return 0 and sometimes we return the length that was written. Maybe we could formalize it into the length of data sent over the wire (return 0 if it was optimized, non-zero if data was sent)? But that may require a rather large audit of code to implement. -- Eric Blake eblake redhat com +1-919-301-3266 Libvirt virtualization library http://libvirt.org
signature.asc
Description: OpenPGP digital signature
