Cómo mejorar el rendimiento de Windows cuando se ejecuta dentro de KVM

14

Uso Ubuntu 12.04 de 64 bits y KVM, mi CPU es Core i5 3.3 GHz y tengo 8 GB de RAM DDR3. Ejecuto Windows 7 en KVM y es extremadamente lento. ¡Mi compañero de trabajo usa Debian en la misma configuración de PC y puede ejecutar Windows 7 extremadamente rápido! ¿Dónde puede estar mi 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 : He habilitado Intel-VT antes de instalar KVM. He instalado con éxito los controladores VirtIO, y me dio un poco de rendimiento, pero, por ejemplo, cuando abro Firefox en Windows, incluso el mouse se mueve muy lentamente, y la GUI también es muy lenta.

Gerente de máquinas virtuales KVM

Guy Fawkes
fuente
¿Su CPU admite la tecnología VT?
margarita
sí, lo hace :)
Guy Fawkes
1
Thx - the - Formato de almacenamiento: sin procesar - Modo de caché: ninguno (¡no predeterminado!) - Modo de E / S: nativo - + Bus de disco: SATA lo hizo. La "expansión de los archivos de Windows" durante la instalación de Win7 comenzó a contar inmediatamente después del cambio en lugar de quedarse a 0% durante horas. Me pregunto por qué deshabilitar el almacenamiento en caché funciona, ya que intenté el primer intento con SATA NATIVE y Caching (Writeback), que apestaba por completo, y SATA NATIVE con el almacenamiento en caché establecido en NONE lo resolvió obviamente ... Normalmente esperaría una ganancia de rendimiento de caché de reescritura?
¿Cuál es el nombre de esta aplicación?
thiagowfx
@ThiagoPerrotta Eso es virt-manager (Virtual Machine Manager)
doug65536

Respuestas:

11

Para empezar, tienes la VM configurada para emular un bus IDE, que es bastante lento. Intente cambiarlo a un bus SATA.

Mejor aún, instale los controladores virtio en Windows 7 y cámbielo a un bus virtio.

NOTA: Windows puede quejarse de que el hardware se haya cambiado debajo y puede tener dificultades para encontrar el disco de arranque después de que haya cambiado de IDE a SATA o Virtio.

Del mismo modo, obtendrá un rendimiento de red mejorado si cambia el tipo de NIC a virtio.

¿Qué versión de KVM y kernel está ejecutando en ubuntu? ¿Y qué versión de la misma en Debian?

Otra cosa que vale la pena verificar es: ¿está usando su compañero de trabajo una imagen de disco para la máquina virtual, igual que usted, o está utilizando una partición de disco sin formato o un volumen LVM o similar? las imágenes de disco son muy lentas en comparación con las particiones o LVM.

cas
fuente
¿Puedes describir cómo instalar los controladores VirtIO?
Guy Fawkes
en realidad no, son controladores de Windows. No es mi área de especialización. Supongo que los instala de la forma habitual en que se instalan los controladores de Windows. Los instalé algunas veces en algunas máquinas virtuales de Windows hace un año o dos. IIRC fue algo torpe como montar la imagen del CD y buscar el programa instalador en uno de los subdirectorios y hacer clic en él.
cas
Nunca pude agregar controladores VirtIO en una imagen de Windows existente migrada. La redefinición del bus de disco a VirtIO y Windows no se iniciaría; e intente instalar los controladores VirtIO sin el Diskbus correcto que me hubiera gustado.
Todd Partridge 'Gen2ly'
En realidad, puedes hacerlo serverfault.com/questions/452854/…
Darokthar
1
sí, en resumen, debe agregar un segundo disco a la VM e instalar los controladores virtio para eso. luego puede cambiar el disco original para usar virtio, y opcionalmente desconectar / eliminar el segundo disco.
cas
13

También tuve un rendimiento increíblemente lento con mi HDD virtual.
La siguiente configuración en el nuevo HDD corrigió todo:

  • Formato de almacenamiento: crudo
  • Modo de caché: ninguno (¡no predeterminado!)
  • Modo de E / S: nativo
Sergey
fuente
Excelente punto sobre el formato de almacenamiento. Usar una partición sin formato en lugar de un contenedor de archivos también puede mejorar un poco más.
0xC0000022L
1
Esta debería ser la respuesta aceptada. Sin embargo, qcow2 funciona bien como formato, pero sin caché y nativo definitivamente conducen a un gran impulso.
John
9

Para cualquiera que haya instalado en IDE y ahora desee cambiar a virtIO: Una forma conveniente de hacerlo es crear un disco virtIO secundario (que no sea de arranque), inicie la VM, momento en el que Windows solicitará los controladores virtIO, que de alguna manera se niega a instalarlo, y luego cambia la partición de arranque a virtIO.

hardyharzen
fuente
3

Usando todas sus respuestas, encontré mi camino en este orden:

Instalación:

Configuración de disco duro como Sergey dijo. Al crear la máquina virtual con virt-manager, no cree el disco inmediatamente (haga clic en "habilitar almacenamiento ..."), haga clic en "personalizar configuración antes de instalar" en la siguiente pantalla y cree el HDD manualmente justo después, con estas opciones :

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

Para mí, la instalación se realiza en menos de 15 minutos (en lugar del 27% de progresión después de más de 2 horas con los parámetros predeterminados)

Primer reinicio:

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

Detenga el sistema, cambie el bus de disco a virtio, reinicie, ¡listo!

'alegría !

tisc0
fuente
1

Debe instalar los controladores VirtIO en Windows. Puede descargar los controladores creados por Fedora o crear los suyos desde la fuente; consulte la documentación de KVM para obtener información.

Shugendo
fuente
2
No publique solo un enlace, resuma los puntos principales directamente en su respuesta y proporcione el enlace como referencia adicional. Vea mi edición para el tipo de mínimo que esperamos en una respuesta. O vea la respuesta de Craig que proporciona una explicación a este enlace y mucho más. Lea cómo responder para obtener más información.
Gilles 'SO- deja de ser malvado'