Shutterfly
Software-Overclocker(in)
[Benchmarks] Gaming in einer Windows-VM unter Linux? Geht das überhaupt performant?
Moin moin,
aufgrund immer besserer Hardware- und Software-Unterstützung erfreut sich das Thema "Gaming in einer Windows-VM unter Linux" in den letzten Jahren immer größerer Beliebtheit. Oft stellt man sich als Interessierter jedoch die Frage: "Gaming in einer VM? Kann das überhaupt klappen? Ist der performant genug?".
[size=+2]Einleitung[/size]
Diese Frage habe ich mir vor einiger Zeit auch gestellt und durch eine schnelle Youtube-Recherche mit einem lapidarem "Ja" abgetan. Genug Beispiele haben mir gezeigt, dass Spiele flüssig funktionieren und ich war mit der Antwort zufrieden. Ich habe mir jedoch nie im Detail angesehen wie performant Gaming in einer VM wirklich ist. Vor einigen Wochen habe ich mir neue Hardware zugelegt und in diesem Zuge für mich die Frage nach der Performance im Detail geklärt. Diese Ergebnisse möchte ich mit euch nun teilen, um vielleicht auch andere Interessierte mit diesen Fakten zu erfreuen.
Doch vorab: Was wird es hier nicht zu sehen geben? Ich werde hier keinen Guide schreiben, wie man eine saubere Gaming-VM einrichtet oder gar ein Linux installiert. Hier hilft Google mehr als ausreichend und jeder Interessierte sollte, mit etwas Eigeninitiative und Zeit, in der Lage sein die unzähligen (englischen) Artikel im Internet zu lesen.
[size=+1]Aufbau des Beitrag[/size]
Ich möchte anfangs kurz meine verwendete Hardware und Software darlegen. Danach werden die angesprochenen Test-Ergebnisse vorgestellt. Ich beginne hier mit Tests für einzelne Komponenten, z.B. RAM oder CPU. Danach folgen synthetische Benchmarks wie RealBench oder 3DMark. Jeder Test wird mit einem kurzen Zwischenfazit abgeschlossen. Letztendlich folgt mein persönliches Fazit.
Aufgrund von Zeit und Reproduzierbarkeit greife ich auf keine Benchmarks innerhalb von Spielen zurück.
[size=+2]Hardware und Software[/size]
Beginnen wir mit der verwendeten Hardware. Die komplette Hardware läuft stock, so wie vom Hersteller vorgesehen. Es findet keine manuelle Übertaktung statt.
In allen Fällen kommt ein durchgepatches Windows 10 samt aktueller nividia-Treiber zum Einsatz.
Sobald Windows in einer VM betrieben wird, wird ein Arch Linux Host verwendet. Als Virtualisierungslösung wird QEMU mit KVM über libvirt verwendet:
Wichtiger Hinweis: Es muss unbedingt berücksichtigt werden, dass der Linux-Host über eine verschlüsselte Festplatte verfügt. Dies bedeutet, dass alle geschriebenen Daten zuerst verschlüsselt und alle gelesenen Daten zuerst entschlüsselt werden müssen. Dies belastet zum einen die CPU, zum anderen beeinflusst dies möglicherweise die Performance innerhalb der VM.
[size=+1]Die VM[/size]
Für die VM wird ein 256GB großes Festplatten-Image vorgesehen, welches im RAW-Format verwendet wird. Grund hierfür ist, dass im Netz bereits ausreichend belegt nachzulesen ist, dass dies zu den performantesten Möglichkeiten für Festplatten gehört. Zusätzlich werden der VM 12GB RAM sowie sechs CPU Kerne zugesprochen.
Ich weise der VM mit Absicht nicht die komplette CPU zu. Dies ist möglich und wird von mir auch im Test zur Messen der CPU-Performance kurzfristig getan, jedoch entscheide ich mich aus persönlichen Gründen gegen eine solche permanente Konfiguration. Ich möchte dem Host nicht sämtliche CPU-Kapazitäten entziehen. Dies kann jedoch jeder so handhaben wie er möchte.
Wichtiger Hinweis: Wenn nicht anders ausgewiesen, werden der VM immer nur sechs der acht verfügbaren (virtuellen) Kerne zugewiesen.
[size=+2]Tests[/size]
Wie bereits angekündigt werden zuerst die einzelnen Komponenten getrennt getestet. Anschließend werden kombinierte Tests durchgeführt.
Der Test-Parkour besteht hierbei aus folgender Software:
Ich werde die Test-Ergebnisse immer anhand einer Grafik darstellen und einige Worte darüber verlieren. Jeder Test wird zwischen Bare-Metal und VM unterschieden. Es wurde jeder Test mehrfach durchlaufen und das für das System beste Ergebnis ausgewählt. Dabei wurde zwischen Bare-Metal und VM immer die identische Anzahl von Tests durchlaufen, wobei es immer mindestens zwei Durchläufe waren.
Doch nun zu den wirklich interessanten Fakten.
[size=+1]AIDA64[/size]
Das Ergebnis hat mich doch etwas schockiert. Und so richtig glaube ich ihm auch nicht. Der Unterschied ist für mich zu gravierend, als das er wahr sein kann. In ersten Recherchen habe ich gelesen, dass die Verwendung von "memory ballooning" negative Auswirkungen haben soll, wobei es Windows 10 nicht einmal unterstützt. Eine Deaktivierung brachte jedoch noch schlechtere Ergebnisse zu Tage, so dass ich es wieder aktiviert habe. Hier werde ich mir beizeiten hugepages ansehen müssen, da angeblich die Performance viel besser sein soll.
Zwischenfazit: Ich vermute hier Probleme beim Test bzw. der Auswertung. Die Ergebnisse sind zu unterschiedlich als das ich diese glaube. Würde man dies tun, wäre das Ergebnis katastrophal.
[size=+1]CrystalDiskMark[/size]
Die Performance auf Bare-Metal ist dank neustem Protokoll exzellent. Die Lesegeschwindigkeit unter Linux empfinde ich noch als gut, die Schreibgeschwindigkeit bricht jedoch schon stark ein. Mir reicht es jedoch dicke, da wir hier von über 1GB/s reden und dies nur eine Gaming-VM ist, wo praktisch ausschließlich gelesen wird. Ich muss zugeben, dass ich mit dieser guten Performance innerhalb einer VM nicht gerechnet habe und wirklich positiv überrascht bin.
Schlimm sehen jedoch die 4K Abfragen aus. Hier vermute ich das Problem bei der von mir eingesetzten Festplattenverschlüsslung des Linux-Hosts. Diese beeinflusst die Performance grundsätzlich negativ. Zusätzlich multipliziert sich dies nun noch eh schlechten 4K Performance von Festplatten, da diese Tests wirklich extrem sind.
Zwischenfazit: Extrem hohe Lesegeschwindigkeit. Für mich ausreichend hohe Schreibgeschwindigkeit - wenn auch ein Verlust von 35%. Für das Gaming in meinen Augen vollkommen ausreichend.
[size=+1]CINEBENCH R15[/size]
Bei der CPU-Leistung sieht es endlich erfreulicher aus. Bei reiner Singlethread-Performance macht es keinen nennenswerten Unterschied ob Bare-Metal oder VM.
An dieser Stelle wurde die VM nun einmalig mit allen Kernen versorgt und in einer 8 Cores/8 Threads Konfiguration in den Ring geschickt. Das Ergebnis überzeugt: Ein Leistungsverlust von weniger als 2%. An dieser Stelle bin ich vom Hypervisor und Linux-Kernel stark beeindruckt. Der Overhead durch eine Virtualisierung ist überaus minimal.
Da ein 8C/8T Betrieb jedoch nicht meine favorisierte Konfiguration ist, wurde die VM zurück auf 6C/6T gestellt. Ich habe somit 25% theoretische Leistung entzogen, effektiv habe ich jedoch nur ca. 14% Leistung eingebüst. Im ersten Moment nicht verständlich.
Ein Blick auf die CPU Auslastung des Hosts während des Benchmarks macht jedoch schlauer: Während innerhalb der Windows VM 6 Kerne bei 100% Last stehen, werden auf dem Host alle 8 Kerne mit durchschnittlich 70-80% Last belegt. Der Hypervisor legt somit die Last der VM sauber und gleichmäßig auf alle Kerne der CPU um. Dadurch profitiert die VM indirekt von alle Kernen und erreicht effektiv höhere Werte als theoretisch möglich wäre.
An dieser Stelle habe ich einen kurzen Exkurz gewagt und die CPU Kerne zwischen VM und Host gepinnt. Kurz erklärt: Ich habe jedem CPU Kern in der VM einen echten CPU-Kern zugewiesen. Das Ergebnis war wie anfangs eigentlich erwartet: Ich hatte einen Leistungsverlust von über 25%, vermutlich durch den Overhead des Hypervisors.
An dieser Stelle sei auch erwähnt, dass es keinen Unterschied machte, ob ich die VM mit 6C/6T oder 3C/6T (bzw. 8C/8T vs 4C/8T) betrieben habe.
Zwischenfazit: Durch eine Virtualisierung gehen bei der CPU kaum Ressourcen verloren. Das oft empfohlene CPU Pinning ist eher schädlich als hilfreich.
[size=+1]RealBench[/size]
Behält man die bisherigen Ergebnisse im Hinterkopf, dann überraschen die RealBench-Ergebnisse wenig. Vergleicht man den System Score dann hat man gegenüber Bare-Metal ein Verschlechterung von ca. 18%.
Diese wird hauptsächlich durch die fehlende CPU-Leistung zu begründen sein.
Zwischenfazit: Dieser Benchmark stellt keine große Überraschung dar.
[size=+1]Heaven Benchmark[/size]
Wichtigstes Element eines Gaming-PCs ist und bleibt die GPU. Diese wird bei diesem Setup 1:1 an den Guest durchgereicht und steht somit mit voller Leistung zur Verfügung. Daher schwanken die Werte auch nur minimal. Dies ist vermutlich auf noch immer vorhandenen Overhead des Hypervisors zurückzuführen. Eher amüsant war, dass der erste Testdurchlauf auf der VM bessere FPS-Werte als auf dem Bare-Metal erzeugte.
Zwischenfazit: Bei der GPU-Performance sind keine Abstriche zu erwarten.
[size=+1]3DMark Fire Strike[/size]
Auch hier überrascht der Ergebnis nicht mehr. Grafik-Performance ist fast identisch. Einzig der CPU abhängige Physics score schwächelt mit einem Defizit von ca. 19%. Dennoch liegt das Gesamtergebnis nur 3% auseinander. Offenbar hat der Physics score nur geringen Einfluss auf die Gesamtwertung.
Zwischenfazit: Inzwischen waren die Ergebnisse zu erwarten und stimmen mich positiv, da die GPU Performance auch hier stabil bleibt.
[size=+2]Zusammenfassung[/size]
Ist eine VM grundsätzlich genau so performant wie ein System auf Bare-Metal? Nein, offenbar nicht. Bei RAM und Festplatte sind teilweise hohe Verluste zu erwarten, wobei mich das RAM-Ergebnis nicht zufrieden stellt. Hier wird weitere Recherce notwendig sein.
Die Leistung der CPU hängt von der jeweiligen Konfiguration ab. Der Overhead des Hypervisors und Kernels sind jedoch so gering, dass ein Verlust hier unter 5% erwartet werden kann und fällt somit einzig bei CPU-limitierenden Spielen ins Gewicht. CPU Pinning kann mehr Schaden anrichten als nutzen, weswegen man die Verwendung genau prüfen sollte.
Die jedoch derzeit wohl immer noch wichtigste Leistung der GPU geht (fast) ungehindert in die VM über und ermöglicht somit ein ungestörten Spielgenuss.
[size=+1]Persönliches Fazit[/size]
Überraschen mich diese Werte? Ja, in vielerlei Hinsicht. Vom RAM bin ich natürlich negativ überrascht, fast schockiert.
Die Leistung des Hypervisors finde ich jedoch beeindruckend. Ein so geringer Verlust auf CPU-Seite hätte ich nicht erwartet. Richtig überrascht hat mich der positive Verzicht auf CPU Pinning. Im Netz liest an so ziemlich jeder Ecke: "CPU Pinning ist Pflicht", "CPU Pinning bringt Performance" etc.
Ich sage dazu: Bullshit. Meine Erkenntnis: Man sollte den Kernel selbst seine Arbeit machen lassen und ihm nicht Dinge vorschreiben, welche man nicht versteht. Der Kernel macht einen guten Job und zaubert damit bessere Ergebnisse auf den Monitor als eigentlich gedacht. Das zum Beispiel die 100% Last in der VM gleichmäßig über alle Kernel im Host verteilt wird, hätte ich nicht gedacht. Und hätte ich stumpf CPU Pinning verwendet, hätte ich viel Performance unbewusst verschenkt. Wenn man CPU Pinning nutzen möchte, dann soll man doch bitte selbst nachmessen, ob dies auch wirklich das Ergebnis bringt.
Damit will ich nicht sagen, dass CPU Pinning sinnlos ist. Es gibt sicherlich Anwendungsfälle, wo man dafür sorgen muss, dass Ressourcen auf dem Host defintiv verfügbar bleiben. Auch könnte man durch CPU Pinning sicherstellen, dass bei einem AMD Ryzen kein Wechsel zwischen den CCX zu Problemen führt. Man sollte nur Wissen was man da tut und nicht alles blind glauben was im Netz steht. Wobei das ja für eigentlich alles gilt
Die GPU-Performance ist wie erwartet perfekt und somit komme ich für mich zu dem Schluss: Ja! Eine Gaming-VM lohnt sich definitiv, wenn man Linux nicht missen möchte und keine Lust auf einen Dual-Boot hat.
Die Einarbeitung in dieses Thema kostet zwar Zeit und die notwendige Hardware muss vorhanden sein, jedoch bekommt man dafür auch Gaming fast gänzlich ohne Abstriche.
Möchte man also Linux nutzen und nicht auf Spiele verzichten, welche nur für Windows exisiteren, dann sollte man sich mit dem Thema PCIe Passthrough definitiv im Detail beschäftigen.
Mir hat es vor einiger Zeit geholfen einen guten Schritt von Windows weg zu gehen und ich bin froh mit der Entscheidung. Ich fühle mich gut. Und nun habe ich Schwarz auf Weiß, dass Gaming für mich dennoch möglich ist. Fast ohne Nebenwirkungen
[size=+1]Wichtige Anmerkung[/size]
Abschließend möchte ich noch folgenden Punkt anmerken und somit explizit herausarbeiten: Dieser Test fand auf einem Arch Linux statt. Diese Linux Distrubition verwendet immer stets die neuste Software. Sei es nun der Linux Kernel selbst, QEMU etc.
Dies hat einen entscheidenen Vorteil: Performance. Es ist in der Regel so (nicht immer), dass neue Software-Versionen, gerade beim Linux Kernel, wichtige Features enthalten, welche massiven Einfluss auf die Performance haben können.
Verwendet man nun eine andere Distribution, z.B. Ubuntu, dann hat man einen weitaus älteren Kernel bzw. allgemein ältere Software. Dies ist grundsätzlich nichts schlechtes, da brandheiße Software gerne so heiß sein kann, dass man sich daran verbrennt (Bugs, Inkompatibilitäten etc.), jedoch ist mir, gerade für das Gaming, die Performance wichtig. Arch Linux gehört in die Kategorie "Bleeding edge" (https://en.wikipedia.org/wiki/Bleeding_edge_technology). Ubuntu erkauft sich mit älterer Software hingegen Stabilität. Neue, ggf. performance relevante Anpassungen, kommen dafür dann später.
Als Beispiel: Getestet wurde von mir mit dem Kernel 4.10, erschienen: 19 Februar 2017. Das aktuelle Ubuntu 16.10 verwendet den Kernel 4.8, erschienen: 25 September 2016. Ich denke die Message ist klar
Aus diesem Grund gelten all meine Zahlen für mein System, ggf. für andere vergleichbare Arch Linux Systeme. Es kann jedoch definitiv stärkere (negative) Abweichungen bei anderen Distributionen geben.
[size=+1]Ende[/size]
Ich hoffe dieser Beitrag findet den einen oder anderen interessierten Leser.
Moin moin,
aufgrund immer besserer Hardware- und Software-Unterstützung erfreut sich das Thema "Gaming in einer Windows-VM unter Linux" in den letzten Jahren immer größerer Beliebtheit. Oft stellt man sich als Interessierter jedoch die Frage: "Gaming in einer VM? Kann das überhaupt klappen? Ist der performant genug?".
[size=+2]Einleitung[/size]
Diese Frage habe ich mir vor einiger Zeit auch gestellt und durch eine schnelle Youtube-Recherche mit einem lapidarem "Ja" abgetan. Genug Beispiele haben mir gezeigt, dass Spiele flüssig funktionieren und ich war mit der Antwort zufrieden. Ich habe mir jedoch nie im Detail angesehen wie performant Gaming in einer VM wirklich ist. Vor einigen Wochen habe ich mir neue Hardware zugelegt und in diesem Zuge für mich die Frage nach der Performance im Detail geklärt. Diese Ergebnisse möchte ich mit euch nun teilen, um vielleicht auch andere Interessierte mit diesen Fakten zu erfreuen.
Doch vorab: Was wird es hier nicht zu sehen geben? Ich werde hier keinen Guide schreiben, wie man eine saubere Gaming-VM einrichtet oder gar ein Linux installiert. Hier hilft Google mehr als ausreichend und jeder Interessierte sollte, mit etwas Eigeninitiative und Zeit, in der Lage sein die unzähligen (englischen) Artikel im Internet zu lesen.
[size=+1]Aufbau des Beitrag[/size]
Ich möchte anfangs kurz meine verwendete Hardware und Software darlegen. Danach werden die angesprochenen Test-Ergebnisse vorgestellt. Ich beginne hier mit Tests für einzelne Komponenten, z.B. RAM oder CPU. Danach folgen synthetische Benchmarks wie RealBench oder 3DMark. Jeder Test wird mit einem kurzen Zwischenfazit abgeschlossen. Letztendlich folgt mein persönliches Fazit.
Aufgrund von Zeit und Reproduzierbarkeit greife ich auf keine Benchmarks innerhalb von Spielen zurück.
[size=+2]Hardware und Software[/size]
Beginnen wir mit der verwendeten Hardware. Die komplette Hardware läuft stock, so wie vom Hersteller vorgesehen. Es findet keine manuelle Übertaktung statt.
- Intel Core i7-7700K, 4x 4.20GHz, boxed ohne Kühler Preisvergleich | Geizhals Deutschland
- Gigabyte Aorus GA-Z270X-Gaming 7 Preisvergleich | Geizhals Deutschland
- Samsung SSD 960 Evo 500GB Preisvergleich | Geizhals Deutschland
- G.Skill Trident Z schwarz/weiß DIMM Kit 16GB, DDR4-3200, CL16-18-18-38 Preisvergleich | Geizhals Deutschland
- Zotac GeForce GTX 970 AMP! Extreme Core Preisvergleich | Geizhals Deutschland
In allen Fällen kommt ein durchgepatches Windows 10 samt aktueller nividia-Treiber zum Einsatz.
Sobald Windows in einer VM betrieben wird, wird ein Arch Linux Host verwendet. Als Virtualisierungslösung wird QEMU mit KVM über libvirt verwendet:
- linux 4.10.4-1
- qemu 2.8.0-2
- libvirt 3.1.0-1
Wichtiger Hinweis: Es muss unbedingt berücksichtigt werden, dass der Linux-Host über eine verschlüsselte Festplatte verfügt. Dies bedeutet, dass alle geschriebenen Daten zuerst verschlüsselt und alle gelesenen Daten zuerst entschlüsselt werden müssen. Dies belastet zum einen die CPU, zum anderen beeinflusst dies möglicherweise die Performance innerhalb der VM.
[size=+1]Die VM[/size]
Für die VM wird ein 256GB großes Festplatten-Image vorgesehen, welches im RAW-Format verwendet wird. Grund hierfür ist, dass im Netz bereits ausreichend belegt nachzulesen ist, dass dies zu den performantesten Möglichkeiten für Festplatten gehört. Zusätzlich werden der VM 12GB RAM sowie sechs CPU Kerne zugesprochen.
Ich weise der VM mit Absicht nicht die komplette CPU zu. Dies ist möglich und wird von mir auch im Test zur Messen der CPU-Performance kurzfristig getan, jedoch entscheide ich mich aus persönlichen Gründen gegen eine solche permanente Konfiguration. Ich möchte dem Host nicht sämtliche CPU-Kapazitäten entziehen. Dies kann jedoch jeder so handhaben wie er möchte.
Wichtiger Hinweis: Wenn nicht anders ausgewiesen, werden der VM immer nur sechs der acht verfügbaren (virtuellen) Kerne zugewiesen.
[size=+2]Tests[/size]
Wie bereits angekündigt werden zuerst die einzelnen Komponenten getrennt getestet. Anschließend werden kombinierte Tests durchgeführt.
Der Test-Parkour besteht hierbei aus folgender Software:
- AIDA64 (RAM)
- CrystalDiskMark (Speichermedium)
- CINEBENCH R15 (CPU)
- RealBench (kombiniert)
- Heavens Benchmark (kombiniert)
- 3DMark Fire Strike (kombiniert)
Ich werde die Test-Ergebnisse immer anhand einer Grafik darstellen und einige Worte darüber verlieren. Jeder Test wird zwischen Bare-Metal und VM unterschieden. Es wurde jeder Test mehrfach durchlaufen und das für das System beste Ergebnis ausgewählt. Dabei wurde zwischen Bare-Metal und VM immer die identische Anzahl von Tests durchlaufen, wobei es immer mindestens zwei Durchläufe waren.
Doch nun zu den wirklich interessanten Fakten.
[size=+1]AIDA64[/size]
Das Ergebnis hat mich doch etwas schockiert. Und so richtig glaube ich ihm auch nicht. Der Unterschied ist für mich zu gravierend, als das er wahr sein kann. In ersten Recherchen habe ich gelesen, dass die Verwendung von "memory ballooning" negative Auswirkungen haben soll, wobei es Windows 10 nicht einmal unterstützt. Eine Deaktivierung brachte jedoch noch schlechtere Ergebnisse zu Tage, so dass ich es wieder aktiviert habe. Hier werde ich mir beizeiten hugepages ansehen müssen, da angeblich die Performance viel besser sein soll.
Zwischenfazit: Ich vermute hier Probleme beim Test bzw. der Auswertung. Die Ergebnisse sind zu unterschiedlich als das ich diese glaube. Würde man dies tun, wäre das Ergebnis katastrophal.
[size=+1]CrystalDiskMark[/size]
Die Performance auf Bare-Metal ist dank neustem Protokoll exzellent. Die Lesegeschwindigkeit unter Linux empfinde ich noch als gut, die Schreibgeschwindigkeit bricht jedoch schon stark ein. Mir reicht es jedoch dicke, da wir hier von über 1GB/s reden und dies nur eine Gaming-VM ist, wo praktisch ausschließlich gelesen wird. Ich muss zugeben, dass ich mit dieser guten Performance innerhalb einer VM nicht gerechnet habe und wirklich positiv überrascht bin.
Schlimm sehen jedoch die 4K Abfragen aus. Hier vermute ich das Problem bei der von mir eingesetzten Festplattenverschlüsslung des Linux-Hosts. Diese beeinflusst die Performance grundsätzlich negativ. Zusätzlich multipliziert sich dies nun noch eh schlechten 4K Performance von Festplatten, da diese Tests wirklich extrem sind.
Zwischenfazit: Extrem hohe Lesegeschwindigkeit. Für mich ausreichend hohe Schreibgeschwindigkeit - wenn auch ein Verlust von 35%. Für das Gaming in meinen Augen vollkommen ausreichend.
[size=+1]CINEBENCH R15[/size]
Bei der CPU-Leistung sieht es endlich erfreulicher aus. Bei reiner Singlethread-Performance macht es keinen nennenswerten Unterschied ob Bare-Metal oder VM.
An dieser Stelle wurde die VM nun einmalig mit allen Kernen versorgt und in einer 8 Cores/8 Threads Konfiguration in den Ring geschickt. Das Ergebnis überzeugt: Ein Leistungsverlust von weniger als 2%. An dieser Stelle bin ich vom Hypervisor und Linux-Kernel stark beeindruckt. Der Overhead durch eine Virtualisierung ist überaus minimal.
Da ein 8C/8T Betrieb jedoch nicht meine favorisierte Konfiguration ist, wurde die VM zurück auf 6C/6T gestellt. Ich habe somit 25% theoretische Leistung entzogen, effektiv habe ich jedoch nur ca. 14% Leistung eingebüst. Im ersten Moment nicht verständlich.
Ein Blick auf die CPU Auslastung des Hosts während des Benchmarks macht jedoch schlauer: Während innerhalb der Windows VM 6 Kerne bei 100% Last stehen, werden auf dem Host alle 8 Kerne mit durchschnittlich 70-80% Last belegt. Der Hypervisor legt somit die Last der VM sauber und gleichmäßig auf alle Kerne der CPU um. Dadurch profitiert die VM indirekt von alle Kernen und erreicht effektiv höhere Werte als theoretisch möglich wäre.
An dieser Stelle habe ich einen kurzen Exkurz gewagt und die CPU Kerne zwischen VM und Host gepinnt. Kurz erklärt: Ich habe jedem CPU Kern in der VM einen echten CPU-Kern zugewiesen. Das Ergebnis war wie anfangs eigentlich erwartet: Ich hatte einen Leistungsverlust von über 25%, vermutlich durch den Overhead des Hypervisors.
An dieser Stelle sei auch erwähnt, dass es keinen Unterschied machte, ob ich die VM mit 6C/6T oder 3C/6T (bzw. 8C/8T vs 4C/8T) betrieben habe.
Zwischenfazit: Durch eine Virtualisierung gehen bei der CPU kaum Ressourcen verloren. Das oft empfohlene CPU Pinning ist eher schädlich als hilfreich.
[size=+1]RealBench[/size]
Behält man die bisherigen Ergebnisse im Hinterkopf, dann überraschen die RealBench-Ergebnisse wenig. Vergleicht man den System Score dann hat man gegenüber Bare-Metal ein Verschlechterung von ca. 18%.
Diese wird hauptsächlich durch die fehlende CPU-Leistung zu begründen sein.
Zwischenfazit: Dieser Benchmark stellt keine große Überraschung dar.
[size=+1]Heaven Benchmark[/size]
Wichtigstes Element eines Gaming-PCs ist und bleibt die GPU. Diese wird bei diesem Setup 1:1 an den Guest durchgereicht und steht somit mit voller Leistung zur Verfügung. Daher schwanken die Werte auch nur minimal. Dies ist vermutlich auf noch immer vorhandenen Overhead des Hypervisors zurückzuführen. Eher amüsant war, dass der erste Testdurchlauf auf der VM bessere FPS-Werte als auf dem Bare-Metal erzeugte.
Zwischenfazit: Bei der GPU-Performance sind keine Abstriche zu erwarten.
[size=+1]3DMark Fire Strike[/size]
Auch hier überrascht der Ergebnis nicht mehr. Grafik-Performance ist fast identisch. Einzig der CPU abhängige Physics score schwächelt mit einem Defizit von ca. 19%. Dennoch liegt das Gesamtergebnis nur 3% auseinander. Offenbar hat der Physics score nur geringen Einfluss auf die Gesamtwertung.
Zwischenfazit: Inzwischen waren die Ergebnisse zu erwarten und stimmen mich positiv, da die GPU Performance auch hier stabil bleibt.
[size=+2]Zusammenfassung[/size]
Ist eine VM grundsätzlich genau so performant wie ein System auf Bare-Metal? Nein, offenbar nicht. Bei RAM und Festplatte sind teilweise hohe Verluste zu erwarten, wobei mich das RAM-Ergebnis nicht zufrieden stellt. Hier wird weitere Recherce notwendig sein.
Die Leistung der CPU hängt von der jeweiligen Konfiguration ab. Der Overhead des Hypervisors und Kernels sind jedoch so gering, dass ein Verlust hier unter 5% erwartet werden kann und fällt somit einzig bei CPU-limitierenden Spielen ins Gewicht. CPU Pinning kann mehr Schaden anrichten als nutzen, weswegen man die Verwendung genau prüfen sollte.
Die jedoch derzeit wohl immer noch wichtigste Leistung der GPU geht (fast) ungehindert in die VM über und ermöglicht somit ein ungestörten Spielgenuss.
[size=+1]Persönliches Fazit[/size]
Überraschen mich diese Werte? Ja, in vielerlei Hinsicht. Vom RAM bin ich natürlich negativ überrascht, fast schockiert.
Die Leistung des Hypervisors finde ich jedoch beeindruckend. Ein so geringer Verlust auf CPU-Seite hätte ich nicht erwartet. Richtig überrascht hat mich der positive Verzicht auf CPU Pinning. Im Netz liest an so ziemlich jeder Ecke: "CPU Pinning ist Pflicht", "CPU Pinning bringt Performance" etc.
Ich sage dazu: Bullshit. Meine Erkenntnis: Man sollte den Kernel selbst seine Arbeit machen lassen und ihm nicht Dinge vorschreiben, welche man nicht versteht. Der Kernel macht einen guten Job und zaubert damit bessere Ergebnisse auf den Monitor als eigentlich gedacht. Das zum Beispiel die 100% Last in der VM gleichmäßig über alle Kernel im Host verteilt wird, hätte ich nicht gedacht. Und hätte ich stumpf CPU Pinning verwendet, hätte ich viel Performance unbewusst verschenkt. Wenn man CPU Pinning nutzen möchte, dann soll man doch bitte selbst nachmessen, ob dies auch wirklich das Ergebnis bringt.
Damit will ich nicht sagen, dass CPU Pinning sinnlos ist. Es gibt sicherlich Anwendungsfälle, wo man dafür sorgen muss, dass Ressourcen auf dem Host defintiv verfügbar bleiben. Auch könnte man durch CPU Pinning sicherstellen, dass bei einem AMD Ryzen kein Wechsel zwischen den CCX zu Problemen führt. Man sollte nur Wissen was man da tut und nicht alles blind glauben was im Netz steht. Wobei das ja für eigentlich alles gilt
Die GPU-Performance ist wie erwartet perfekt und somit komme ich für mich zu dem Schluss: Ja! Eine Gaming-VM lohnt sich definitiv, wenn man Linux nicht missen möchte und keine Lust auf einen Dual-Boot hat.
Die Einarbeitung in dieses Thema kostet zwar Zeit und die notwendige Hardware muss vorhanden sein, jedoch bekommt man dafür auch Gaming fast gänzlich ohne Abstriche.
Möchte man also Linux nutzen und nicht auf Spiele verzichten, welche nur für Windows exisiteren, dann sollte man sich mit dem Thema PCIe Passthrough definitiv im Detail beschäftigen.
Mir hat es vor einiger Zeit geholfen einen guten Schritt von Windows weg zu gehen und ich bin froh mit der Entscheidung. Ich fühle mich gut. Und nun habe ich Schwarz auf Weiß, dass Gaming für mich dennoch möglich ist. Fast ohne Nebenwirkungen
[size=+1]Wichtige Anmerkung[/size]
Abschließend möchte ich noch folgenden Punkt anmerken und somit explizit herausarbeiten: Dieser Test fand auf einem Arch Linux statt. Diese Linux Distrubition verwendet immer stets die neuste Software. Sei es nun der Linux Kernel selbst, QEMU etc.
Dies hat einen entscheidenen Vorteil: Performance. Es ist in der Regel so (nicht immer), dass neue Software-Versionen, gerade beim Linux Kernel, wichtige Features enthalten, welche massiven Einfluss auf die Performance haben können.
Verwendet man nun eine andere Distribution, z.B. Ubuntu, dann hat man einen weitaus älteren Kernel bzw. allgemein ältere Software. Dies ist grundsätzlich nichts schlechtes, da brandheiße Software gerne so heiß sein kann, dass man sich daran verbrennt (Bugs, Inkompatibilitäten etc.), jedoch ist mir, gerade für das Gaming, die Performance wichtig. Arch Linux gehört in die Kategorie "Bleeding edge" (https://en.wikipedia.org/wiki/Bleeding_edge_technology). Ubuntu erkauft sich mit älterer Software hingegen Stabilität. Neue, ggf. performance relevante Anpassungen, kommen dafür dann später.
Als Beispiel: Getestet wurde von mir mit dem Kernel 4.10, erschienen: 19 Februar 2017. Das aktuelle Ubuntu 16.10 verwendet den Kernel 4.8, erschienen: 25 September 2016. Ich denke die Message ist klar
Aus diesem Grund gelten all meine Zahlen für mein System, ggf. für andere vergleichbare Arch Linux Systeme. Es kann jedoch definitiv stärkere (negative) Abweichungen bei anderen Distributionen geben.
[size=+1]Ende[/size]
Ich hoffe dieser Beitrag findet den einen oder anderen interessierten Leser.