On Wed, Jan 12, 2022 at 1:12 PM Laszlo Ersek
<lersek(a)redhat.com> wrote:
>
> On 01/11/22 11:56, Richard W.M. Jones wrote:
>> On Tue, Jan 11, 2022 at 08:07:39AM +0100, Laszlo Ersek wrote:
>>> hmmmm, not necessarily; according to the manual, "qemu-img convert"
uses
>>> (by default) 8 co-routines. There's also the -W flag ("out of order
>>> writes"), which I don't know if the original virt-v2v used.
>>
>> I'm never sure how qemu coroutines map to threads. I assume it's not
>> 1-1, and it's somehow connected to the iothread setting?
>
> (I don't know the answer, but) this difference should not matter here I
> believe; the QEMU co-routines submit async IO one way or another (IIRC),
> so once those are in the kernel's hands, it shouldn't matter (from an IO
> performance perspective) whether the userspace process waits on their
> completions with heavy-weight threads, or co-routines or whatever. What
> matters is that the kernel has multiple IO reqs in flight at the same time.
In practice this matters a lot. Using -W can be 6x times faster with qemu-img
convert.
See how I tested this here:
https://bugzilla.redhat.com/1511891#c57
Sorry, I didn't mean the difference between "-W" and "no -W". I
meant
the difference between "NPTL threads submitting async IO requests" and
"coroutines submitting async IO requests".
Thanks
Laszlo