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

  • Mandelbrot-Sets mittels Shadern berechnen

    17.05.2019

    Nachdem ich in den letzten verregneten Tagen auf Youtube in den Videos von Numberphile versunken bin, hat mich eines davon angestachelt, mich selbst mit dem Mandelbrotset zu beschäftigen. Als ich dann noch Code fand, der behauptete, das auf einer Graphikkarte mittels Shadern berechnen zu können, war es um mich geschehen...

    Weiterlesen...

Neueste Artikel

  • Erste Vor-Version eines Gis-Plugin für die sQLshell

    Wie bereits in einem früheren Artikel erwähnt plane ich, demnächst ein Plugin für die sQLshell anzubieten, das eine Visualisierung von Daten mit räumlichem Bezug im Stil eines Geoinformationssystems erlaubt.

    Weiterlesen...
  • bad-certificates Version 2.1.0

    Das bereits vorgestellte Projekt zur automatisierten Erzeugung von Zertifikaten mit allen möglichen Fehlern hat eine Erweiterung erfahren und verfügt über ein Partnerprojekt - beide sind nunmehr in der Version 2.1.0 freigegeben

    Weiterlesen...
  • SQLite als Geodatenbank

    Wie bereits in einem früheren Artikel beschrieben treibe ich derzeit Anstrengungen voran, die sQLshell attraktiver für Nutzer zu machen, die mit Geodatenbanken arbeiten.

    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.