Por que o QEMU é tão lento até mesmo com o KVM?

0

Estou trabalhando com o QEMU há algum tempo e, pela minha experiência, vejo que ele é muito lento em comparação com outras ferramentas de VM, como o VirtualBox ou o VMware.

Até mesmo ativar o KVM não é muito benéfico para mim. Muitas pessoas dizem que eu posso ter a pior configuração de hardware com a qual eu discordo. O VirtualBox e o VMware funcionam muito bem para o mesmo hardware. Também não enfrentei em um único sistema. Eu tentei em vários sistemas.

Para deixar meu ponto ainda mais claro, criei a mesma configuração de VM com a mesma quantidade de RAM e outras coisas idênticas, tanto quanto eu poderia. Ainda parece que o QEMU é muito lento. Especialmente se eu executar a VM no modo GUI. Por exemplo, se eu rodar o Ubuntu em modo texto, é muito rápido. Mas quando eu executo o Ubuntu no modo GUI, é muito lento. Qual é a razão para o QEMU ser lento? Como isso é diferente do VMware ou do VirtualBox?

Eu inicio o QEMU usando:

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

No monitor, se eu executar o comando info kvm , ele diz que o kvm está ativado. Também testei o QEMU no Ubuntu 12.04, 13.10 e 14.04. Como convidado eu corro o Windows XP e o Ubuntu 12.04. Eu testei com os hosts de 32 bits e 64 bits, mas o sistema operacional convidado sempre foi de 32 bits.

Também executei o QEMU sem nenhuma outra ferramenta de virtualização existente no sistema. A configuração do meu sistema é boa o suficiente com 8GB de RAM e CPU Intel Core i3-2100 a 3.10GHz × 4.

    
por user1120675 30.04.2015 / 19:21

3 respostas

1

Por que vale a pena, qemu estava sendo executado muito lentamente na minha instalação do Ubuntu 14.04. Instalei qemu-kvm após instalar o qemu e iniciei o programa com o seguinte comando:

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

A diferença foi incrível e agora é muito rápida.

    
por B.R 07.06.2015 / 16:19
1

Você tem que usar -hda ou a chamada de IO stdio? Observe também que você precisará adicionar o -enable-kvm no mínimo, mas eu sugiro que você primeiro tente instalar virt-manager e / ou use libvirt , pois ele irá configurar o qemu de uma maneira que suporte o bom desempenho.

O qemu sempre usa a configuração mais compatível por padrão, mas pode facilmente chegar a alguns pontos percentuais do desempenho do bare metal se configurado corretamente.

Como exemplo de quantas opções podem ser necessárias para uma instalação ideal, aqui está o conteúdo do / proc / $ pid / cmdline de uma VM que acabei de rodar.

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

Usar qemu na linha de comando funcionará, mas não será de alto desempenho.

O comando libvirt virt-install irá ajudá-lo com isso a partir da linha de comando e o --os-variant flag cuidará da maioria das peculiaridades e otimizações para você.

    
por gdahlm 24.05.2017 / 02:02
-1

Se você está falando sobre o desempenho de gráficos 3D, é porque o qemu não possui um emulador de GPU acelerado por hardware.

    
por psusi 01.05.2015 / 01:11