Mehr Geschwindigkeit bei Windows 10 in libvirt/kvm

  • Falls auf dem Host BTRFS als Dateisystem verwendet wird, dann vor dem Erstellen des Festplatten-Images für die Windows 10-VM für das Verzeichnis “/var/lib/libvirt/images“ Copy-On-Write ausschalten:
    chattr +C /var/lib/libvirt/imagesCopy-On-Write ist allerdings dann nur für neu angelegte Dateien abgeschaltet. Wenn also in diesem Verzeichnis bereits Dateien liegen, dann gilt das für diese nicht. Lösung: Diese Dateien kopieren, und dann die Originaldateien wieder durch die Kopien ersetzen.
  • Videospeicher der virtuellen QXL-Grafikkarte von 16 MByte auf 64 MByte erhöhen:
    virsh edit <Name_der_Windows_10_Domain>, dann in der Sektion „video“ das Attribut „vgamem“ von „16384“ ändern zu „65536“.
    Also von

    <video>
      <model type='qxl' ram='65536' vram='65536' vgamem='16384' heads='1' primary='yes'/>

    ändern zu

    <video>
      <model type='qxl' ram='65536' vram='65536' vgamem='65536' heads='1' primary='yes'/>
  • HPET einschalten, das senkt die CPU-Belastung des Hosts deutlich. Dazu wieder virsh edit <Name_der_Windows_10_Domain>, dann die Sektion „clock“ wie folgt ändern
      <clock offset='localtime'>
        <timer name='rtc' tickpolicy='catchup'/>
        <timer name='pit' tickpolicy='delay'/>
        <timer name='hpet' present='no'/>
        <timer name='hypervclock' present='yes'/>
      </clock>
    

    ändern zu:

      <clock offset='localtime'>
        <timer name='hpet' present='yes'/>
        <timer name='hypervclock' present='yes'/>
      </clock>
  • Die Windows VirtIO-Treiber herunterladen und installieren.
    Installiert werden können:

    • Balloon (Speicherverwaltung)
    • NetKVM (Netzwerkkarte)
    • viorng (Zufallszahlengenerator)
    • vioscsi (Storage)
    • vioserial (Serieller Port)
    • qxldod (Grafikkarte)

    Anschließend Windows herunterfahren und für die VM die Netzwerkkarte auf „VirtIO “ einstellen.

    Die Umstellung der Datenträger von IDE bzw. SATA zu VirtIO ist etwas schwieriger, weil Windows nur dann den Treiber „vioscsi“ zum Start verwendet, wenn bereits beim Herunterfahren ein entsprechendes Gerät vorhanden war. Am Besten löst man dieses Problem so:

    1. Windows-VM herunterfahren
    2. Zur VM einen kleinen VirtIO-Datenträger hinzufügen
    3. Windows starten
    4. vioscsi-treiber in Windows installieren
    5. Windows herunterfahren
    6. Den kleinen VirtIO-Datenträger wieder von der VM entfernen
    7. Die virtuelle IDE/SATA-Festplatte auf der Windows installiert ist entfernen und das Festplattenimage wieder als VirtIO-Datenträger zur VM hinzufügen.
    8. Die Boot-Reihenfolge der VM prüfen und ggf. so ändern, dass die VM als erstes vom VirtIO-Datenträger gestartet wird.