Почему QEMU является настолько медленным даже с KVM

Я работал с QEMU в течение некоторого времени теперь, и на основе моего опыта я вижу, что он является очень медленным по сравнению с другими инструментами VM как VirtualBox или VMware.

Даже включение KVM не является большой частью преимущества для меня. Многие люди говорят, что у меня могла бы быть худшая аппаратная конфигурация, к которой я не соглашаюсь. VirtualBox и VMware работают вполне прилично на те же аппаратные средства. Также я не столкнулся с ним в единой системе. Я попробовал его на нескольких система.

Для высказывания моего еще более ясного мнения я создал ту же конфигурацию VM с той же суммой RAM и других вещей, идентичных насколько я мог. Тем не менее кажется, что QEMU является слишком медленным. Особенно, если я выполняю VM в режиме GUI. Например, если я запускаю Ubuntu в текстовом режиме, это очень быстро. Но когда я запускаю Ubuntu в режиме GUI, это слишком медленно. Какова причина QEMU, являющегося медленным? Как это отличается от VMware или VirtualBox?

Я запускаю использование QEMU:

qemu-system-i386 -enable-kvm -hda Ubuntu.img -monitor stdio

В мониторе, если я выполняю команду info kvm, это говорит, что kvm включен. Также я протестировал QEMU на Ubuntu 12.04, 13.10, и 14.04. Как гость я выполняю Windows XP и Ubuntu 12.04. Я протестировал и с 32-разрядными и с 64-разрядными хостами, но гость ОС был всегда 32-разрядным.

Также я действительно выполнял QEMU без другого существующего инструмента виртуализации в системе. Моя конфигурация системы достаточно хороша с 8 ГБ RAM и Intel Core i3 2100 ЦП 3.10 ГГц × 4.

3
задан 16 July 2016 в 02:50

4 ответа

Если это имеет значение, qemu работал очень медленно на моей установке Ubuntu 14.04. Я установил qemu-kvm после установки qemu и запустил программу со следующей командой:

kvm -cdrom xxxx.iso -m 700 -boot d

различие было удивительно, и работает очень быстро теперь.

1
ответ дан 1 December 2019 в 17:02

Необходимо ли использовать-hda или stdio IO вызов? Также обратите внимание, что необходимо будет добавить эти -enable-kvm флаг как минимум, но я поощрил бы Вас сначала пытаться установить virt-manager и/или использование libvirt, поскольку это полностью настроит qemu способом для поддержки хорошей производительности.

qemu всегда использует самую совместимую конфигурацию по умолчанию, но может легко добраться в нескольких процентных пунктах производительности без операционной системы, если настроено правильно.

Как пример на том, сколько опций может быть необходимо для оптимальной установки, вот, содержание/proc/$pid/cmdline от VM, который я просто вращал.

qemu-system-x86_64
-enable-kvm
-name guest=ubuntu16.04_32_bit_test,debug-threads=on
-S
-object secret,id=masterKey0,format=raw,file=/var/lib/libvirt/qemu/domain-1-ubuntu16.04_32_bit_t/master-key.aes
-machine pc-i440fx-zesty,accel=kvm,usb=off,dump-guest-core=off
-cpu Skylake-Client
-m 1024
-realtime mlock=off
-smp 1,sockets=1,cores=1,threads=1
-uuid 4aaf9c8f-f8b5-477b-ac18-d273318dfe90
-no-user-config
-nodefaults
-chardev socket,id=charmonitor,path=/var/lib/libvirt/qemu/domain-1-ubuntu16.04_32_bit_t/monitor.sock,server,nowait
-mon chardev=charmonitor,id=monitor,mode=control
-rtc base=utc,driftfix=slew
-global kvm-pit.lost_tick_policy=discard
-no-hpet
-no-reboot
-global PIIX4_PM.disable_s3=1
-global PIIX4_PM.disable_s4=1
-boot strict=on
-device ich9-usb-ehci1,id=usb,bus=pci.0,addr=0x5.0x7
-device ich9-usb-uhci1,masterbus=usb.0,firstport=0,bus=pci.0,multifunction=on,addr=0x5
-device ich9-usb-uhci2,masterbus=usb.0,firstport=2,bus=pci.0,addr=0x5.0x1
-device ich9-usb-uhci3,masterbus=usb.0,firstport=4,bus=pci.0,addr=0x5.0x2
-device virtio-serial-pci,id=virtio-serial0,bus=pci.0,addr=0x6
-drive file=/var/lib/libvirt/images/ubuntu16.04_32_bit_test.qcow2,format=qcow2,if=none,id=drive-virtio-disk0
-device virtio-blk-pci,scsi=off,bus=pci.0,addr=0x7,drive=drive-virtio-disk0,id=virtio-disk0,bootindex=2
-drive file=/home/gdahlman/Downloads/ubuntu-16.04.2-server-i386.iso,format=raw,if=none,id=drive-ide0-0-0,readonly=on
-device ide-cd,bus=ide.0,unit=0,drive=drive-ide0-0-0,id=ide0-0-0,bootindex=1
-netdev tap,fd=26,id=hostnet0,vhost=on,vhostfd=28
-device virtio-net-pci,netdev=hostnet0,id=net0,mac=52:54:00:22:78:27,bus=pci.0,addr=0x3
-chardev pty,id=charserial0-deviceisa-serial,chardev=charserial0,id=serial0
-chardev spicevmc,id=charchannel0,name=vdagent
-device virtserialport,bus=virtio-serial0.0,nr=1,chardev=charchannel0,id=channel0,name=com.redhat.spice.0
-device usb-tablet,id=input0,bus=usb.0,port=1
-spice port=5900,addr=127.0.0.1,disable-ticketing,image-compression=off,seamless-migration=on
-device qxl-vga,id=video0,ram_size=67108864,vram_size=67108864,vram64_size_mb=0,vgamem_mb=16,max_outputs=1,bus=pci.0,addr=0x2
-device intel-hda,id=sound0,bus=pci.0,addr=0x4
-device hda-duplex,id=sound0-codec0,bus=sound0.0,cad=0
-chardev spicevmc,id=charredir0,name=usbredir
-device usb-redir,chardev=charredir0,id=redir0,bus=usb.0,port=2
-chardev spicevmc,id=charredir1,name=usbredir
-device usb-redir,chardev=charredir1,id=redir1,bus=usb.0,port=3
-device virtio-balloon-pci,id=balloon0,bus=pci.0,addr=0x8
-msg timestamp=on
root@rodin

Используя qemu из командной строки будет работать, но это не будет высокая производительность.

команда libvirt virt-install поможет Вам с этим из командной строки, и это --os-variant, флаг будет заботиться о большинстве причуд и оптимизации для Вас.

1
ответ дан 1 December 2019 в 17:02

Если Вы говорите о 3-й производительности при обработке графики, это - потому что qemu не имеет аппаратно ускоренного gpu эмулятора.

0
ответ дан 1 December 2019 в 17:02

У меня была та же проблема (хост и гость Ubuntu 20.04). Я перестроил машину и забыл включить виртуализацию ядра в BIOS. qemu/kvm был очень медленным; исправление состояло в том, чтобы как включить KVM, так и перестроить виртуальные машины, которые у меня были до этого.

Сначала проверьте, что KVM действительно используется - если используется virt-manager, проверьте Обзордля виртуальной машины (он не обязательно должен быть запущен; откройте виртуальную машину и в строке меню выберите Вид / Подробности, затем выберите Обзорв левом столбце). В области справа должно быть написано Основные сведениявверху, затем Сведения о гипервизорениже. В Сведения о гипервизоредолжен отображаться Гипервизор: KVM. (В моем случае, даже после включения KVM, все виртуальные машины по-прежнему говорили, что гипервизор был Qemu, поэтому не использовали KVM, даже если он был доступен.)

Если вы не используете virt-manager, проверьте XML-схему; он должен начинаться с .

Решение этой проблемы вернуло спектакль к тому, к чему я привык. Простое включение KVM без повторного создания виртуальных машин не сработало.

0
ответ дан 15 December 2021 в 03:17

Другие вопросы по тегам:

Похожие вопросы: