Hello, I recently conducted a test to compare the CPU performance of a physical machine, a high performance VM (pass-through CPU, PIN CPU), and a common VM.
Here are the results:
1. Physical machine:
# sysbench --test=cpu --cpu-max-prime=100000000 --threads=2 run
WARNING: the --test option is deprecated. You can pass a script name or path on the command line without any options.
sysbench 1.0.17 (using system LuaJIT 2.0.4)
Running the test with following options:
Number of threads: 2
Initializing random number generator from current time
Prime numbers limit: 100000000
Initializing worker threads...
Threads started!
CPU speed:
events per second: 0.01
General statistics:
total time: 346.0588s
total number of events: 2
Latency (ms):
min: 345943.52
avg: 346001.09
max: 346058.65
95th percentile: 100000.00
sum: 692002.17
Threads fairness:
events (avg/stddev): 1.0000/0.00
execution time (avg/stddev): 346.0011/0.06
2. High Performance VM:
# sysbench --test=cpu --cpu-max-prime=100000000 --threads=2 run
WARNING: the --test option is deprecated. You can pass a script name or path on the command line without any options.
sysbench 1.0.17 (using system LuaJIT 2.0.4)
Running the test with following options:
Number of threads: 2
Initializing random number generator from current time
Prime numbers limit: 100000000
Initializing worker threads...
Threads started!
CPU speed:
events per second: 0.01
General statistics:
total time: 351.8625s
total number of events: 2
Latency (ms):
min: 351416.59
avg: 351639.01
max: 351861.43
95th percentile: 100000.00
sum: 703278.02
Threads fairness:
events (avg/stddev): 1.0000/0.00
execution time (avg/stddev): 351.6390/0.22
3. Common VM:
# sysbench --test=cpu --cpu-max-prime=100000000 --threads=2 run
WARNING: the --test option is deprecated. You can pass a script name or path on the command line without any options.
sysbench 1.0.17 (using system LuaJIT 2.0.4)
Running the test with following options:
Number of threads: 2
Initializing random number generator from current time
Prime numbers limit: 100000000
Initializing worker threads...
Threads started!
CPU speed:
events per second: 0.01
General statistics:
total time: 354.9108s
total number of events: 2
Latency (ms):
min: 354761.26
avg: 354835.99
max: 354910.73
95th percentile: 100000.00
sum: 709671.99
Threads fairness:
events (avg/stddev): 1.0000/0.00
execution time (avg/stddev): 354.8360/0.07
Result:
There is little difference in CPU performance between these three scenarios, so why distinguish between high performance and regular virtual machines? I don't think it makes much sense.