Como melhorar o desempenho do Windows ao executar dentro do KVM

14

Eu uso o Ubuntu 12.04 de 64 bits e KVM, minha 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 de PC e pode executar 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 : Ativei o Intel-VT antes de instalar o KVM. Instalei com sucesso os drivers VirtIO e isso 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 também é muito lenta.

Gerenciador de máquinas virtuais KVM

Guy Fawkes
fonte
Sua CPU suporta a tecnologia VT?
Daisy #
sim, ele faz :)
Guy Fawkes
1
Formato Thx - the - Storage: bruto - Modo de cache: nenhum (não padrão!) - Modo de E / S: nativo - + Barramento de disco: a SATA fez isso. "Expandir arquivos do Windows" durante a instalação do Win7 começou a contar imediatamente após a alteração, em vez de ficar a 0% por horas. Gostaria de saber por que a desativação do cache faz o truque, pois tentei a primeira tentativa com o SATA NATIVE e o Caching (Writeback), que foram totalmente ruins, e o SATA NATIVE com o cache definido como NONE resolveu isso obviamente ... Normalmente, eu esperaria um ganho de desempenho de cache de write-back?
Qual é o nome deste aplicativo?
precisa saber é o seguinte
@ThiagoPerrotta Isso é virt-manager (Virtual Machine Manager)
doug65536 25/19

Respostas:

11

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

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

NOTA: O Windows pode reclamar sobre a alteração do hardware abaixo dele e pode ter dificuldade em encontrar o disco de inicialização após a mudança do IDE para SATA ou Virtio.

Da mesma forma, você obterá melhor desempenho da rede 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 é: seu colega de trabalho está usando uma imagem de disco para a VM, da mesma forma que você, ou está usando uma partição de disco bruto ou um volume LVM ou similar? imagens de disco são muito lentas em comparação com partições ou LVM.

cas
fonte
Você pode descrever como instalar os drivers do VirtIO?
Guy Fawkes
Na verdade, não são drivers do Windows. não é minha área de especialização. Eu acho que você instalá-los da maneira usual que os drivers do Windows estão instalados. Eu os instalei algumas vezes em algumas VMs do Windows há um ou dois anos. No IIRC, era algo desajeitado como montar a imagem do CD e procurar o programa instalador em um dos subdiretórios e clicar nele.
cas
Nunca consegui adicionar drivers VirtIO em uma imagem do Windows migrada existente. Redefinir o barramento de disco para o VirtIO e o Windows não seria iniciado; e tente instalar os drivers do VirtIO sem o Diskbus correto que eu gostaria de ter permitido.
Todd Partridge 'Gen2ly'
Na verdade, você pode fazê-lo serverfault.com/questions/452854/…
Darokthar
1
Sim, em resumo, você deve adicionar um segundo disco à VM e instalar os drivers virtio para isso. depois, você pode alternar o disco original para usar o virtio e, opcionalmente, desconectar / excluir o segundo disco.
cas
13

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

  • Formato de armazenamento: bruto
  • Modo de cache: nenhum (não padrão!)
  • Modo de E / S: nativo
Sergey
fonte
Excelente ponto sobre o formato de armazenamento. Usar uma partição bruta em vez de um contêiner de arquivos também pode melhorar um pouco mais.
0xC0000022L
1
essa deve ser a resposta aceita. O qcow2 funciona bem como um formato, mas nenhum cache e nativo definitivamente levam a um grande impulso.
John John
9

Para quem instalou no IDE e agora deseja mudar para o virtIO: Uma maneira conveniente de fazer isso é criar um disco virtIO secundário (não inicializado), inicialize a VM - nesse ponto, o Windows solicitará os drivers do virtIO, que de alguma forma, ele se recusa a instalar o contrário - e subsequentemente alterna a partição de inicialização para o virtIO.

hardyharzen
fonte
3

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

Instalação:

Configuração do disco rígido, como Sergey disse. Ao criar a VM com o virt-manager, não crie o disco imediatamente (clique em "ativar armazenamento ..."), clique em "personalizar configuração antes da instalação" na próxima tela e crie o disco rígido manualmente logo após, com estas 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% da 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, troque o barramento de disco para virtio, reinicie, é isso!

'alegria!

tisc0
fonte
1

Você deve instalar os drivers VirtIO no Windows. Você pode fazer o download de drivers criados pelo Fedora ou criar seu próprio código-fonte; consulte a documentação do KVM para obter informações.

Shugendo
fonte
2
Não basta postar um link, resumir os pontos principais diretamente na sua resposta e fornecer o link para mais referências. Veja minha edição para o tipo de mínimo que esperamos em uma resposta. Ou veja a resposta de Craig, que fornece esse link com uma explicação e muito mais. Leia como responder para obter mais informações.
Gilles 'SO- stop be evil'