The "piix3-usb-uhci" QEMU device emulates a USB1 controller. Not only does
USB1 feature amazingly low transfer speeds -- which QEMU appears to
emulate faithfully --, USB1 (and USB2 too) are distinctly
virtualization-unfriendly, as the emulated controllers require constant
polling.
This is visible in two symptoms: (a) the "run-virt-p2v-in-a-vm" and
"run-virt-p2v-in-an-nvme-vm" targets load data (such as the root
filesystem) from the "virt-p2v.img" file very slowly, while the host CPU
utilization of QEMU never exceeds ~30%, (b) once the virt-p2v application
launches in the guest, and the cursor is blinking in the "Conversion
server" text field, the host CPU utilization does not sink under ~12%
(while "top" in the guest XTerm reports 99+% idleness).
Fix this problem by using the qemu-xhci USB3 controller. USB3 both enables
much higher transfer speeds and is event-driven, requiring no polling.
Signed-off-by: Laszlo Ersek <lersek(a)redhat.com>
---
Makefile.am | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/Makefile.am b/Makefile.am
index f25de74b8690..f2fe0e3efc99 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -270,7 +270,7 @@ run-virt-p2v-in-a-vm: virt-p2v.img $(PHYSICAL_MACHINE)
-cpu host \
-m 2048 \
-drive id=hd0,file=$(PHYSICAL_MACHINE),format=raw,if=ide \
- -device piix3-usb-uhci \
+ -device qemu-xhci \
-drive id=usb0,file=$<,format=raw,snapshot=on,if=none \
-device usb-storage,bootindex=1,drive=usb0 \
-boot menu=on \
@@ -294,7 +294,7 @@ run-virt-p2v-in-an-nvme-vm: virt-p2v.img $(PHYSICAL_MACHINE)
$(BLANK_DISK)
-device nvme,drive=phys,serial=01234567 \
\
-drive id=usb0,if=none,format=raw,file=$<,snapshot=on \
- -device piix3-usb-uhci,id=usb-bus \
+ -device qemu-xhci,id=usb-bus \
-device usb-storage,drive=usb0,bootindex=1,bus=usb-bus.0 \
\
-drive id=blank1,if=none,format=raw,file=$(BLANK_DISK),snapshot=on \