Comment améliorer les performances de Windows lors de l'exécution dans KVM

14

J'utilise Ubuntu 12.04 64 bits et KVM, mon processeur est Core i5 3,3 GHz et j'ai 8 Go de RAM DDR3. J'exécute Windows 7 dans KVM et c'est extrêmement lent. Mon collègue utilise Debian sur la même configuration PC et peut exécuter Windows 7 extrêmement rapidement! Où peut être mon problème?

[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 : J'ai activé Intel-VT avant d'installer KVM. J'ai installé avec succès les pilotes VirtIO, et cela m'a donné quelques performances, mais, par exemple, lorsque j'ouvre Firefox dans Windows, même la souris se déplace très lentement et l'interface graphique est également très lente.

Gestionnaire de machines virtuelles KVM

Guy Fawkes
la source
Votre CPU prend-il en charge la technologie VT?
marguerite
oui, c'est le cas :)
Guy Fawkes
1
Thx - le - Format de stockage: brut - Mode cache: aucun (pas par défaut!) - Mode E / S: natif - + Bus de disque: SATA l'a fait. "Expansion des fichiers Windows" pendant l'installation de Win7 a commencé à compter immédiatement après le changement au lieu de traîner @ 0% pendant des heures. Je me demande pourquoi la désactivation de la mise en cache fait l'affaire, car j'ai essayé la première tentative avec SATA NATIVE et Caching (Writeback), qui était complètement nul, et SATA NATIVE avec une mise en cache définie sur NONE l'a résolu de toute évidence ... Normalement, je m'attendrais à un gain de performances de mise en cache de réécriture?
Quel est le nom de cette application?
thiagowfx
@ThiagoPerrotta C'est virt-manager (Virtual Machine Manager)
doug65536

Réponses:

11

Pour commencer, vous avez configuré la machine virtuelle pour émuler un bus IDE, ce qui est assez lent. Essayez de le changer en bus SATA.

Mieux encore, installez les pilotes virtio dans Windows 7 et changez-les en bus virtio.

REMARQUE: Windows peut se plaindre que le matériel est modifié en dessous et peut avoir des difficultés à trouver le disque de démarrage après qu'il soit passé d'IDE à SATA ou Virtio.

De même, vous obtiendrez de meilleures performances réseau si vous changez le type de carte réseau en virtio.

Quelle version de KVM et de noyau utilisez-vous sur Ubuntu? Et quelle version de même sur Debian?

Une autre chose à vérifier est la suivante: votre collègue utilise-t-il une image disque pour la machine virtuelle, comme vous, ou utilise-t-il une partition de disque brute ou un volume LVM ou similaire? les images disque sont très lentes par rapport aux partitions ou LVM.

cas
la source
Pouvez-vous décrire comment installer les pilotes VirtIO?
Guy Fawkes
pas vraiment, ce sont des pilotes Windows. pas mon domaine d'expertise. Je suppose que vous les installez de la manière habituelle d'installation des pilotes Windows. je les ai installés plusieurs fois sur certaines machines virtuelles Windows il y a un an ou deux. IIRC c'était quelque chose de maladroit comme monter l'image du CD et rechercher le programme d'installation dans l'un des sous-répertoires et cliquer dessus.
cas
Je n'ai jamais pu ajouter de pilotes VirtIO sur une image Windows existante migrée. La redéfinition du bus de disque vers VirtIO et Windows ne démarrerait pas; et essayez d'installer les pilotes VirtIO sans le bon Diskbus que j'aurais aimé avoir.
Todd Partridge 'Gen2ly'
En fait, vous pouvez le faire serverfault.com/questions/452854/…
Darokthar
1
oui, en bref, vous devez ajouter un deuxième disque à la machine virtuelle et installer les pilotes virtio pour cela. par la suite, vous pouvez changer le disque d'origine pour utiliser virtio et éventuellement détacher / supprimer le deuxième disque.
cas
13

J'ai également eu des performances incroyablement lentes avec mon disque dur virtuel.
Le paramètre suivant sur le nouveau disque dur a tout corrigé:

  • Format de stockage: brut
  • Mode cache: aucun (pas par défaut!)
  • Mode E / S: natif
Sergey
la source
Excellent point sur le format de stockage. L'utilisation d'une partition brute au lieu d'un conteneur de fichiers peut également s'améliorer un peu plus.
0xC0000022L
1
ce devrait être la réponse acceptée. qcow2 fonctionne bien comme format, mais aucun cache et natif ne conduisent définitivement à un énorme coup de pouce.
John
9

Pour tous ceux qui ont installé sur IDE et souhaitent maintenant passer à virtIO: Un moyen pratique de le faire consiste à créer un disque virtIO secondaire (non amorçable), démarrez la machine virtuelle - auquel cas Windows demandera les pilotes virtIO, qui il refuse en quelque sorte d'installer autrement - et par la suite de basculer la partition de démarrage vers virtIO.

hardyharzen
la source
3

En utilisant toutes vos réponses, j'ai trouvé mon chemin dans cet ordre:

Installation:

Configuration du disque dur comme l'a dit Sergey. Lors de la création de la machine virtuelle avec virt-manager, ne créez pas le disque immédiatement (décochez "activer le stockage ..."), cliquez sur "personnaliser la configuration avant l'installation" sur l'écran suivant, et créez le disque dur manuellement juste après, avec ces options :

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

Pour moi, l'installation se fait en moins de 15min (au lieu de 27% de progression après plus de 2H avec des paramètres par défaut)

Premier redémarrage:

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

Arrêtez le système, remplacez le bus de disque par virtio, redémarrez, c'est tout!

'joie !

tisc0
la source
1

Vous devez installer les pilotes VirtIO sous Windows. Vous pouvez télécharger des pilotes créés par Fedora ou créer les vôtres à partir des sources, consultez la documentation KVM pour plus d'informations.

Shugendo
la source
2
Veuillez ne pas simplement publier un lien, résumer les principaux points directement dans votre réponse et fournir le lien pour référence ultérieure. Voir mon montage pour le genre de minimum que nous attendons dans une réponse. Ou voir la réponse de Craig qui fournit ce lien avec une explication et bien plus encore. Lisez comment répondre pour plus d'informations.
Gilles 'SO- arrête d'être méchant'