This email continues my analysis of the performance of virt-v2v. The
first part is:
https://listman.redhat.com/archives/libguestfs/2022-January/msg00055.html
I used the standard guest (Fedora 35, 3G of additional random data) to
test virt-v2v versions 1.43.3-2.el9 through 1.45.96-1.el9. This range
covers (what we call) "old" virt-v2v (< 1.45.90), through new /
modular virt-v2v (>= 1.45.90). I also installed contemporary copies
of libnbd and nbdkit since virt-v2v and those other projects were
being simultaneously co-developed. But I was unable to use
contemporary qemu/libvirt/libguestfs so those versions are fixed at
the latest ones in RHEL 9.
I did local disk to local disk conversions of a raw and qcow2 format
standard guest. Disk to disk is not a very relevant test since
virt-v2v is almost never used by customers this way. In future
testing I will do more realistic tests involving VMware on the input
side. The commands used were:
$ virt-v2v -i disk fedora-35.img -o local -os /var/tmp/ ; time sync
$ virt-v2v -i disk fedora-35.qcow2 -o local -os /var/tmp/ ; time sync
I logged the test runs and manually added up the times for conversion,
map (fstrim), copying (including final sync), and total time. (Note
that total time isn't quite the same as conversion + map + copying
since there are some other smaller operations done by v2v.
I was able to test in total 8 different combinations of virt-v2v +
libnbd + nbdkit, with those having being built in the period
2021-02-27 through to a few days ago. (However I will only refer to
the version numbers, since the build dates are not relevant). I
repeated the first v2v test several times, and the times appeared to
be stable across runs to within a couple of seconds, therefore I
didn't repeat and average the times for other versions.
The test environment was an idle Intel NUC on RHEL 9/C9S. The tests
should be easily reproducible, albeit tedious to obtain and install
the builds.
Now refer to the attachment (LibreOffice Calc format).
Columns 1-4 represent old virt-v2v versions 1.43.3-2 through 1.45.3-3;
and cols 5-8 are for modular virt-v2v versions 1.45.94 through 1.45.96.
Qcow2 is broadly fine - modular virt-v2v is a little bit faster for
conversion, and copying is marginally less efficient (expected because
we are now copying between discrete qemu-nbd servers, instead of
having qemu-img convert read and write the qcow2 files directly), but
the total time does not change.
For raw format there is a problem, with modular virt-v2v being much
slower. This is likely to be some interaction with nbdkit, the cow
filter and block sizes which needs investigation.
As noted above, local disk to local disk is unrepresentative of real
customer conversions. Next week I will look at conversions from
VMware over VDDK.
Rich.
--
Richard Jones, Virtualization Group, Red Hat
http://people.redhat.com/~rjones
Read my programming and virtualization blog:
http://rwmj.wordpress.com
libguestfs lets you edit virtual machines. Supports shell scripting,
bindings from many languages.
http://libguestfs.org