Performanceprobleme mit KVM und Windows

vorhergehende Artikel in: Docker Linux Virtualisierung
28.09.2019

Ich strebe wieder einmal nach mehr Wissen und versuche mich daher momentan im Bereich Virtualisierung weiterzubilden. Durch einen Kollegen angeregt nahm ich mir diesmal KVM vor...

Ich bin ja schon lange überzeugt von LXC und habe inzwischen auch Docker einiges abgewinnen können.

Nun wollte ich praktische Erfahrungen mit QEMU und KVM sammeln. Ich strebte dazu an, meine letzte noch existierende VirtualBox-VM nach QEMU zu migrieren. Es handelt sich dabei um ein 32-Bit Windows 10, auf der eine gekaufte Software installiert ist.

Nach meinen ersten Versuchen, dem Internet zu folgen stellte ich fest, dass nichts funktionierte - ich konnte die virtuelle Maschine nicht einmal booten: Ich hatte das virtuelle Festplattenimage in das Format qcow2 konvertiert und mittels virt-manager eine neue Virtuelle Maschine erstellt, mittels derer ich versuchte, dieses Image zu booten. Mein Kollege brachte mich dann darauf, dass dieses Image vielleicht per UEFI gebootet werden möchte - dazu musste ich noch einige Installationsaufwand an meinem KVM-Host betreiben, aber damit bootete die Maschine.

Allerdings wurde ich was die Alltagstauglichkeit anging enttäuscht - hatte Windows laut Taskmanager nichts zu tun, betrug die Auslastung des Docker-Host dennoch über 60%! Das wäre für mich ein Grund gewesen, die Maschine als VirtualBox weiter zu betreiben und zunächst Abstand von QEMU/KVM zu nehmen.

Aber ich hatte bei meinem Kollegen gesehen, dass es auch anders geht. Daher recherchierte ich ein wenig im Internet und fand auch recht rasch die Ansage, dass Windows 10 in der Version 1803 an den internen Timern Änderungen vorgenommen hat, die dafür sorgen, dass unter KVM Windows nicht mehr rund 140 Interrupts abarbeiten muss, sondern in derselben Zeit 2000! Das erklärt zunächst die hohe Last auf dem Hostsystem.

Ich fand auch diverse Ideen, wie man dieses Problem lösen könnte - eins gleich vornweg: Ich verschwendete einen halben Tag meiner Lebenszeit damit, die falschen Dateien zu editieren: Ich fand Beschreibungen meiner Windows VM in meinem Homeverzeichnis wie auch unter /etc/ - keine dieser Dateien ist diejenige welche. Daher dachte ich auch, das all die vielen Tips im Internet zu diesem Thema keine Lösung enthielten. Als ich dann realisierte, dass diese Dateien vom System nicht genutzt werden und die einzige zuverlässige Methode zum Anpassen der Konfiguration das Kommando

virsh -c qemu:///system edit mywin

ist, habe ich auch die für mich funktionierende Konfiguration gefunden: Dieses Problem betreffend musste ich die Abschnitte features und clock in der Konfiguration wie folgt abändern:

  <features>
    <acpi/>
    <apic/>
    <hyperv>
      <relaxed state='on'/>
      <vapic state='on'/>
      <spinlocks state='on' retries='8191'/>
    </hyperv>
    <vmport state='off'/>
  </features>
  <clock offset='localtime'>
    <timer name='hpet' present='yes'/>
    <timer name='hypervclock' present='yes'/>
  </clock>

Artikel, die hierher verlinken

Multi-User-WebDAV, Docker, GitHub

17.11.2019

Nachdem ich mich in letzter Zeit verstärkt mit Docker und dem zugehörigen Ökosystem beschäftige, habe ich begonnen, verschiedenste Dienste in Containern zu testen um zu sehen, ob in manchen Fällen LXC oder KVM nicht doch die bessere Wahl wäre...

Alle Artikel rss Wochenübersicht Monatsübersicht Github Repositories Gitlab Repositories Mastodon Über mich home xmpp


Vor 5 Jahren hier im Blog

  • CI/CD mit shellcheck

    13.10.2019

    Ich habe mich entschlossen, in meinen diversen Shell-Projekten shellcheck als Mittel zur Qualitätssicherung einzusetzen.

    Weiterlesen...

Neueste Artikel

  • Linux-System SBOM visualisiert als Graph

    In meinem $dayjob kam neulich die Frage auf, ob es möglich wäre, die aktuelle Softwareinstallation eines Linux-Systems als Software Bill of Materials (SBOM) zu exportieren.

    Weiterlesen...
  • Visualisierung von Datenmodellen als gerichtete Graphen

    Ich habe - motiviert durch meine Experimente zur Visualisierung von Paketabhängigkeiten in Linux-Installationen als interaktive Graphen - versucht, relationale Datenmodelle in ähnlicher Form zu visualisieren und dazu zwei Plugins für die sQLshell geschrieben.

    Weiterlesen...
  • Carl Sagan - Christmas Lectures at the Royal Institution

    Die Royal Institution hat in ihren Schätzen gegraben und die Christmas Lectures von Carl Sagan auf Youtube nochmals veröffentlicht. Meiner Ansicht nach unbedingt lohnenswert für alle, die Englisch verstehen!

    Weiterlesen...

Manche nennen es Blog, manche Web-Seite - ich schreibe hier hin und wieder über meine Erlebnisse, Rückschläge und Erleuchtungen bei meinen Hobbies.

Wer daran teilhaben und eventuell sogar davon profitieren möchte, muß damit leben, daß ich hin und wieder kleine Ausflüge in Bereiche mache, die nichts mit IT, Administration oder Softwareentwicklung zu tun haben.

Ich wünsche allen Lesern viel Spaß und hin und wieder einen kleinen AHA!-Effekt...

PS: Meine öffentlichen GitHub-Repositories findet man hier - meine öffentlichen GitLab-Repositories finden sich dagegen hier.