KVM-Virtualisierung vs. dedizierte Hardware

  • Mal meine Erfahrung und Erkenntnis KVM-Virtualisierung vs. dedizierte Hardware bzgl. der CPU-Leistung:


    Ich habe ein externes dediziertes System ohne jegliche Virtualisierung. Hyperthreading wurde manuell deaktiviert.
    Und bei netcup einige 'Root-Server XL SSD v6' (KVM-Virtualisierung, 8 dedizierte Kerne, E5-2670 v3).


    Was mir besonders und jetzt bereits mehrmals aufgefallen ist, ist die unterschiedliche Leistung bei der CPU. Das System ohne Virtualisierung hat einen gleichbleibend hohen und vor allem konstanten "Durchsatz". Anders bei der KVM-Virtualisierung, hier sind teils Abweichungen von bis zu 35% nach unten aufgetreten - hier fehlt also teilsweise 35% der CPU-Leistung.


    Das Betriebssystem, Betriebssystem-Konfiguration und installierte Software ist auf allen Systemen gleich.

  • mibere:
    Die Frage ist auch: Ist das "gefühlt" oder kann man das mit Messungen beweisen?


    In den Benchmarks kann man ja sowas nur teilweise sehen. Hier ein physikalischer EX40:


    Gegen einen KVM-virtualisieren Gen7 RS 4000:


    Was hier auffält: Der virtualisierte Server hat immer eine höhere max-Zeit als der pyhsikalische.
    Der EX 40 kommt hier kaum über 10 ms, der RS 4000 ist hier meistens so zwischen 15 und 30 ms.


    Trotzdem ist doch der RS 4000 nahe dran an dem pyhsikalischen System.


    Thomas


    PS: Testkommando:

    Code
    sysbench --num-threads=4 --test=cpu --cpu-max-prime=20000 run
  • Ich habe das ganze nochmal getestet mit meiner eigenen (KVM/QEMU) Virtualisierung auf dem EX40.
    So siehts auf dem EX40 aus:


    Und so auf einer VM die dort drauf unter Qemu läuft:


    Hier sieht man also die max-Ausschläge nicht.
    Es könnte also sein dass man hier tatächlich den Overhand der Virtualisierungslösung von netcup sieht.
    Ehrlich gesagt finde ich das aber nicht tragisch. Was zählt ist letztendendlich der throughput, und der ist durchaus mit einer physikalischen Maschine zu vergleichen!


    Hier nochmal der gleiche Test auf einem RS 2000:


    Und auf dem RS 4000:


    Und auf einem Root Server M:


    Thomas


    Befehl:

    Code
    sysbench --num-threads=2 --test=cpu --cpu-max-prime=20000 run
  • Thomas, danke für deine Zeit und Mühen. Ich werde dies mal auf meinen Systemen durchführen.


    Es handelt sich bei meiner Feststellung nicht um ein Gefühl, sondern um gemessene Werte - in einer Software, die mehrere Prozesse (Anwendungen) startet, und dadurch 7 von den 8 Cores verwendet.

  • Ich würde vermuten dass die Cores auch tatsächlich dediziert sind - sie stehen dir also immer zur Verfügung. Da ist es dann unwahrscheinlich/unmöglich dass es manchmal zu Verzögerungen kommt.
    Wenn aber natürlich gerade das Storage oder der Bus ausgelastet ist könnte das das Verhalten erklären.


    So ist das halt mit virtuellen Systemen - dir gehört halt doch nicht wirklich alles Exklusiv.


    Thomas

  • In diesem konkreten Szenario spielt Storage (Auslastung, Performance) so gut wie keine Rolle. Storage ist für die Anwendung nicht wichtig, nur CPU und RAM.


    Mir ist das übrigens nicht nur auf einem System aufgefallen, sondern auf mehreren. Es ist somit nicht auf eine bestimmte Maschine zurückzuführen.
    Ich war halt lediglich über diese Schwankungen etwas verwundert. Und nun noch mehr, wo ich seit vorgestern auch besagtes System ohne Virtualisierung im Einsatz habe.