Como melhorar a performance do Windows quando rodando dentro do KVM

10

Eu uso o Ubuntu 12.04 64-bit e o KVM, meu CPU é Core i5 3.3 GHz e tenho 8 GB de RAM DDR3. Eu corro o Windows 7 no KVM e é extremamente lento. Meu colega de trabalho usa o Debian na mesma configuração do PC e pode rodar o Windows 7 extremamente rápido! Onde pode estar meu problema?

[guyfawkes@guyfawkes-pc ~/work]$ sudo cat /etc/libvirt/qemu/windows.xml
<!--
WARNING: THIS IS AN AUTO-GENERATED FILE. CHANGES TO IT ARE LIKELY TO BE 
OVERWRITTEN AND LOST. Changes to this xml configuration should be made using:
  virsh edit windows
or other application using the libvirt API.
-->

<domain type='kvm'>
  <name>windows</name>
  <uuid>5c685175-baea-0ca6-591f-8269d923ffb8</uuid>
  <memory>2097152</memory>
  <currentMemory>2097152</currentMemory>
  <vcpu>1</vcpu>
  <os>
    <type arch='x86_64' machine='pc-1.0'>hvm</type>
    <boot dev='hd'/>
  </os>
  <features>
    <acpi/>
    <apic/>
    <pae/>
  </features>
  <clock offset='localtime'/>
  <on_poweroff>destroy</on_poweroff>
  <on_reboot>restart</on_reboot>
  <on_crash>restart</on_crash>
  <devices>
    <emulator>/usr/bin/kvm</emulator>
    <disk type='file' device='disk'>
      <driver name='qemu' type='raw'/>
      <source file='/var/lib/libvirt/images/windows.img'/>
      <target dev='hda' bus='ide'/>
      <address type='drive' controller='0' bus='0' unit='0'/>
    </disk>
    <controller type='ide' index='0'>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x1'/>
    </controller>
    <interface type='network'>
      <mac address='52:54:00:94:63:91'/>
      <source network='default'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/>
    </interface>
    <serial type='pty'>
      <target port='0'/>
    </serial>
    <console type='pty'>
      <target type='serial' port='0'/>
    </console>
    <input type='tablet' bus='usb'/>
    <input type='mouse' bus='ps2'/>
    <graphics type='vnc' port='-1' autoport='yes'/>
    <sound model='ich6'>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x04' function='0x0'/>
    </sound>
    <video>
      <model type='vga' vram='262144' heads='1'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x02' function='0x0'/>
    </video>
    <memballoon model='virtio'>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x05' function='0x0'/>
    </memballoon>
  </devices>
</domain>

UPD : Eu habilitei o Intel-VT antes de instalar o KVM. Instalei com sucesso os drivers do VirtIO, e ele me deu um pouco de desempenho, mas, por exemplo, quando abro o Firefox no Windows, até o mouse se move muito lentamente, e a GUI é muito lenta também.

    
por Guy Fawkes 04.09.2012 / 09:40

5 respostas

10

Para começar, você tem a VM configurada para emular um barramento IDE, o que é muito lento. Tente alterá-lo para um barramento SATA.

Melhor ainda, instale os drivers de virtio no Windows 7 e altere-o para um barramento de virtio.

NOTA: O Windows pode reclamar sobre o hardware que está sendo alterado abaixo dele e pode ter dificuldade em encontrar o disco de inicialização após ter mudado de IDE para SATA ou Virtio.

Da mesma forma, você obterá um desempenho de rede aprimorado se alterar o tipo de NIC para virtio.

Qual versão do KVM e do kernel você está executando no Ubuntu? E qual versão do mesmo no debian?

Outra coisa que vale a pena verificar é: o seu colega de trabalho está usando uma imagem de disco para a VM, ou você está usando uma partição de disco bruta ou um volume LVM ou similar? As imagens de disco são muito lentas em comparação com partições ou LVM.

    
por 04.09.2012 / 09:53
11

Eu também tive um desempenho incrivelmente lento com meu disco rígido virtual.
A seguinte configuração no novo HDD corrigiu tudo:

  • Formato de armazenamento: raw
  • Modo de cache: nenhum (não padrão!)
  • Modo de E / S: nativo
por 19.09.2012 / 10:51
9

Para qualquer um que instalado no IDE e agora deseja mudar para virtio: Uma maneira conveniente de fazer isso é criar um secundário (não-boot) disco virtio, inicie o VM - altura em que o Windows irá pedir a virtio drivers, que de alguma forma se recusa a instalar outra forma - e, posteriormente, mudar a partição de boot para virtio

.     
por 19.08.2014 / 23:16
2

Usando todas as suas respostas, encontrei meu caminho nesta ordem:

Instalação:

Configuração do HDD, como disse Sergey. Ao criar a VM com virt-manager, não crie o disco imediatamente (desmarque "habilitar armazenamento ..."), clique em "personalizar a configuração antes da instalação" na próxima tela e crie o HDD manualmente logo após, com essas opções :

- Storage format: raw
- Cache mode: none (not default!)
- I/O mode: native
- + Disk bus : SATA

Para mim, a instalação é feita em menos de 15min (em vez de 27% de progressão após mais de 2H com parâmetros padrão)

Primeira reinicialização:

- Disk bus : IDE (or windows will not boot)
- Installation of the [latest drivers][1] 
  (For that, devices management/install old components/type: storage)

Pare o sistema, volte a trocar o barramento de disco para o virtio, reinicie, é isso!

'alegria!

    
por 04.04.2014 / 14:02
1

Você deve instalar os drivers do VirtIO no Windows. Você pode baixar os drivers criados pelo Fedora ou construir seus próprios a partir da fonte, veja a documentação do KVM para obter informações.

    
por 04.09.2012 / 09:58