Höhe der Leistungseinbuse durch VM

  • Ersteller Ersteller Don_2020
  • Erstellt am Erstellt am
D

Don_2020

Gast
Ich will weg von Windows. Es gibt einige Programm, die nur unter Windows laufen.
Unter Debian bookworm soll mit Virtualbox ein Windows 10 installiert werden. In der VM soll eine Datenbankanwendung laufen.
Welche soll erst mal egal sein.

Mit welchen Leistungsreduktion durch den VM-Overhead muss ich im Schnitt rechnen?
Mir geht es nur um die Größenordnung (10%, 20% 50% oder was auch immer).

Geht das ganze besser mit anderen VMs?
 
Don_2020 schrieb:
Mit welchen Leistungsreduktion durch den VM-Overhead muss ich im Schnitt rechnen?
Wenn du der VM genug Ressourcen zuweist vllt ~2% durch den Hypervisor gegenüber nativ. Kommt halt drauf an, wenn du einen 8-Kerner hast und der VM 6 zuweist und die Anwendung in der VM 8 Kerne nutzen könnte, würdest du halt nur auf 75% der Leistung deines Prozessors kommen.
Ich glaube aber nicht dass dies für deine Datenbankanwendung relevant ist
 
  • Gefällt mir
Reaktionen: iron_monkey
vor 20 Jahren, als das mit den VMs losging, haben wir Tests gemacht und bei normalen Anwendungen waren das damals 3-5% Einbußen.
allerdings mit Linux auf VMware, trotzdem sollte mit den heutigen CPUs und deren Optimierung für die Virtualisierung unter 3% Verlust drin sein
 
Probier mal virt-manager aus, der nutzt das Kernelmodul KVM + Qemu. Das ist die Virtualisierungsumgebung der Wahl unter Linux. Ich hab meiner Fedora-VM da 4 Kerne zugewiesen und 4 GB RAM - und kann keine Unterschiede zwischen der VM und dem Hostsystem feststellen.
 
  • Gefällt mir
Reaktionen: NJay und aragorn92
Danke. Das waren doch mal hilfreiche Angaben.
Ich werde mir mal KVM und Qemu ansehen.
 
ghecko schrieb:
Ich glaube aber nicht dass dies für deine Datenbankanwendung relevant ist

Den meisten Leistung Verlust kommt durch den RAM. Da sind je nach Anwenungsszenario ca 5-20% möglich.
Das wichtigste bei VMs ist das man genügen freien RAM auf dem Host hat.
 
Don_2020 schrieb:
Danke. Das waren doch mal hilfreiche Angaben.
Ich werde mir mal KVM und Qemu ansehen.
Wichtig wäre hier noch die VirtIO Treiber zu installieren und die entsprechende "Hardware" dazu der VM zuweisen. Bei der Installations ist das leider nicht sehr intuitiv, weil man dann eine Treiber-Diskette, oder ähnliches für die HD mit einbinden muss.

Als Videokontroller ist QXL besser als VGA, wenn die Treiber dazu installiert sind, funktioniert auch das dynamische Skalieren.
Ergänzung ()

wern001 schrieb:
Den meisten Leistung Verlust kommt durch den RAM. Da sind je nach Anwenungsszenario ca 5-20% möglich.

Gibt es dazu Benchmarks? Das scheint mit gerade in Verbindung mit KVM ziemlich übertrieben zu sein.

Habe mal kurz einen rambenchmark gestartet:

Host fedora:

Code:
BENCHMARKING RAM WITH MULTI THREADS
(...please wait...)

16 concurrent threads are supported.

----------------------------------------------------------------------
MEMSET TEST

RESULT of filling 1GiB buffer with zeros.
>>> 0.0326 (s) / 32871.9 (MB/s) <<<

                   Details                       
  #Threads        Time (s)      Speed (MB/s)
         1      0.0334 (s)    32168.2 (MB/s)
         2      0.0334 (s)    32112.7 (MB/s)
         3      0.0326 (s)    32871.9 (MB/s)
         4      0.0332 (s)    32333.2 (MB/s)
         5      0.0343 (s)    31322.0 (MB/s)
         6      0.0378 (s)    28354.7 (MB/s)
         7      0.0373 (s)    28756.5 (MB/s)
         8      0.0363 (s)    29543.6 (MB/s)
         9      0.0348 (s)    30799.3 (MB/s)
        10      0.0372 (s)    28826.7 (MB/s)
        11      0.0360 (s)    29821.1 (MB/s)
        12      0.0371 (s)    28903.3 (MB/s)
        13      0.0387 (s)    27720.0 (MB/s)
        14      0.0386 (s)    27827.5 (MB/s)
        15      0.0382 (s)    28097.8 (MB/s)
        16      0.0390 (s)    27496.8 (MB/s)

----------------------------------------------------------------------
MEMCHR TEST

RESULT of scanning 1GiB buffer.
>>> 0.0302 (s) / 35582.2 (MB/s) <<<

                   Details                       
  #Threads        Time (s)      Speed (MB/s)
         1      0.0513 (s)    20899.6 (MB/s)
         2      0.0346 (s)    30995.7 (MB/s)
         3      0.0320 (s)    33527.8 (MB/s)
         4      0.0313 (s)    34304.8 (MB/s)
         5      0.0302 (s)    35582.2 (MB/s)
         6      0.0315 (s)    34018.6 (MB/s)
         7      0.0306 (s)    35065.6 (MB/s)
         8      0.0307 (s)    34913.7 (MB/s)
         9      0.0309 (s)    34700.8 (MB/s)
        10      0.0308 (s)    34809.2 (MB/s)
        11      0.0305 (s)    35169.7 (MB/s)
        12      0.0303 (s)    35369.4 (MB/s)
        13      0.0304 (s)    35295.4 (MB/s)
        14      0.0308 (s)    34843.6 (MB/s)
        15      0.0307 (s)    35000.9 (MB/s)
        16      0.0308 (s)    34831.7 (MB/s)

======================================================================

VM debian 4GB Ram:


Code:
======================================================================
BENCHMARKING RAM WITH MULTI THREADS
(...please wait...)

8 concurrent threads are supported.

----------------------------------------------------------------------
MEMSET TEST

RESULT of filling 1GiB buffer with zeros.
>>> 0.0333 (s) / 32208.5 (MB/s) <<<

                   Details                       
  #Threads        Time (s)      Speed (MB/s)
         1      0.0353 (s)    30402.8 (MB/s)
         2      0.0338 (s)    31787.4 (MB/s)
         3      0.0333 (s)    32208.5 (MB/s)
         4      0.0337 (s)    31836.2 (MB/s)
         5      0.0339 (s)    31606.2 (MB/s)
         6      0.0338 (s)    31783.3 (MB/s)
         7      0.0370 (s)    28963.9 (MB/s)
         8      0.0376 (s)    28519.8 (MB/s)

----------------------------------------------------------------------
MEMCHR TEST

RESULT of scanning 1GiB buffer.
>>> 0.0292 (s) / 36730.7 (MB/s) <<<

                   Details                       
  #Threads        Time (s)      Speed (MB/s)
         1      0.0503 (s)    21321.1 (MB/s)
         2      0.0344 (s)    31164.9 (MB/s)
         3      0.0308 (s)    34814.2 (MB/s)
         4      0.0293 (s)    36603.0 (MB/s)
         5      0.0292 (s)    36730.7 (MB/s)
         6      0.0297 (s)    36106.6 (MB/s)
         7      0.0346 (s)    31003.7 (MB/s)
         8      0.0311 (s)    34548.5 (MB/s)

======================================================================
 
Zuletzt bearbeitet:
@jb_alvarado das sind nur die MB/sek und wie sieht es mit der latenz und zugriffszeiten aus?
 
Don_2020 schrieb:
Mit welchen Leistungsreduktion durch den VM-Overhead muss ich im Schnitt rechnen?
Mir geht es nur um die Größenordnung (10%, 20% 50% oder was auch immer).
Die Frage wäre aber, was man mit der VM genau machen möchte. Dann kann man schauen, ob es hier zu Problemen kommen könnte.
 
wern001 schrieb:
@jb_alvarado das sind nur die MB/sek und wie sieht es mit der latenz und zugriffszeiten aus?

Noch ein Test, anderer Computer. Befehl:

sysbench --test=memory --memory-block-size=1K --memory-scope=global --memory-total-size=100G --memory-oper=read run

Host

Code:
sysbench 1.0.20 (using system LuaJIT 2.1.1692716794)

Running the test with following options:
Number of threads: 1
Initializing random number generator from current time


Running memory speed test with the following options:
  block size: 1KiB
  total size: 102400MiB
  operation: read
  scope: global

Initializing worker threads...

Threads started!

Total operations: 87595794 (8757616.89 per second)

85542.77 MiB transferred (8552.36 MiB/sec)


General statistics:
    total time:                          10.0001s
    total number of events:              87595794

Latency (ms):
         min:                                    0.00
         avg:                                    0.00
         max:                                    0.14
         95th percentile:                        0.00
         sum:                                 3320.35

Threads fairness:
    events (avg/stddev):           87595794.0000/0.00
    execution time (avg/stddev):   3.3203/0.00

VM


Code:
sysbench 1.0.20 (using system LuaJIT 2.1.0-beta3)

Running the test with following options:
Number of threads: 1
Initializing random number generator from current time


Running memory speed test with the following options:
  block size: 1KiB
  total size: 102400MiB
  operation: read
  scope: global

Initializing worker threads...

Threads started!

Total operations: 75905352 (7586937.42 per second)

74126.32 MiB transferred (7409.12 MiB/sec)


General statistics:
    total time:                          10.0001s
    total number of events:              75905352

Latency (ms):
         min:                                    0.00
         avg:                                    0.00
         max:                                    0.06
         95th percentile:                        0.00
         sum:                                 3237.85

Threads fairness:
    events (avg/stddev):           75905352.0000/0.00
    execution time (avg/stddev):   3.2378/0.00

sysbench --test=memory --memory-block-size=1K --memory-scope=global --memory-total-size=100G --memory-oper=write run

Host

Code:
sysbench 1.0.20 (using system LuaJIT 2.1.1692716794)

Running the test with following options:
Number of threads: 1
Initializing random number generator from current time


Running memory speed test with the following options:
  block size: 1KiB
  total size: 102400MiB
  operation: write
  scope: global

Initializing worker threads...

Threads started!

Total operations: 69396862 (6938526.66 per second)

67770.37 MiB transferred (6775.90 MiB/sec)


General statistics:
    total time:                          10.0001s
    total number of events:              69396862

Latency (ms):
         min:                                    0.00
         avg:                                    0.00
         max:                                    0.63
         95th percentile:                        0.00
         sum:                                 4716.32

Threads fairness:
    events (avg/stddev):           69396862.0000/0.00
    execution time (avg/stddev):   4.7163/0.00

VM

Code:
sysbench 1.0.20 (using system LuaJIT 2.1.0-beta3)

Running the test with following options:
Number of threads: 1
Initializing random number generator from current time


Running memory speed test with the following options:
  block size: 1KiB
  total size: 102400MiB
  operation: write
  scope: global

Initializing worker threads...

Threads started!

Total operations: 61335285 (6132539.85 per second)

59897.74 MiB transferred (5988.81 MiB/sec)


General statistics:
    total time:                          10.0001s
    total number of events:              61335285

Latency (ms):
         min:                                    0.00
         avg:                                    0.00
         max:                                    0.58
         95th percentile:                        0.00
         sum:                                 4489.50

Threads fairness:
    events (avg/stddev):           61335285.0000/0.00
    execution time (avg/stddev):   4.4895/0.00

Wenn du noch andere Linux-fähige Tools hast, teste ich mit denen gerne auch.

Zugegeben gibt es schon mehr Differenz als ich dachte, aber kann sich immer noch sehen lassen. Und ob man das beim normalen Arbeiten so stark merkt?
 
Zuletzt bearbeitet:
jb_alvarado schrieb:
Zugegeben gibt es schon mehr Differenz als ich dachte, aber kann sich immer noch sehen lassen. Und man man das beim normalen Arbeiten so stark merkt?
Vielleicht liegt das an der GPU-Beschleunigung? Die wurde hier vergessen, mit zu vermessen.
Ganz selbstverständliche Dinge wie zum Beispiel ein billiger Transparenz/Blur-Filter, der die GUI schick macht, können viel CPU fressen und die VM ausbremsen, wenn Anwendung und virtualisierte GPU sich nicht verstehen und es in Software emuliert werden muss.
 
Gliese schrieb:
Vielleicht liegt das an der GPU-Beschleunigung? Die wurde hier vergessen, mit zu vermessen.
Es ging ja erst mal nur um den Ram.
Gliese schrieb:
Ganz selbstverständliche Dinge wie zum Beispiel ein billiger Transparenz/Blur-Filter, der die GUI schick macht, können viel CPU fressen und die VM ausbremsen, wenn Anwendung und virtualisierte GPU sich nicht verstehen und es in Software emuliert werden muss.
GPU ist schon ein Thema was man im Auge haben muss, aber für normale Office-Anwendungen sehe ich da kein Problem. Zu Not könnte man immer noch eine billige Karte einbauen und durchreichen.

Ich arbeite manchmal in Indesign und Photoshop, beides 2024, in KVM und das geht gut.
 
Zurück
Oben