VirtualBox 6.0 vs. KVM vs. Bare Linux Benchmarks

AMD Ryzen Threadripper 2990WX Linux virtualization benchmarks for a future article on Phoronix.

HTML result view exported from: https://openbenchmarking.org/result/1812203-PTS-VIRTUALI66&grs.

VirtualBox 6.0 vs. KVM vs. Bare Linux BenchmarksProcessorMotherboardChipsetMemoryDiskGraphicsAudioNetworkMonitorOSKernelDesktopDisplay ServerDisplay DriverOpenGLCompilerFile-SystemScreen ResolutionSystem LayerVirtualBox 6.0KVMBare MetalAMD Ryzen Threadripper 2990WX 32-Core (16 Cores)Oracle VirtualBox v1.2Intel 440FX 82441FX PMC16384MB64GB VBOX HDDSVGA3D; build: RELEASE; LLVM;Intel 82801AA AC 97 AudioIntel 82540EM GigabitUbuntu 18.104.18.0-12-generic (x86_64)GNOME Shell 3.30.1X Server 1.20.1modesetting 1.20.12.1 Mesa 18.2.2GCC 8.2.0ext43773x2052Oracle VirtualBox 5.2.18_Ubuntur12374516 x AMD EPYC (with IBPB) (16 Cores)QEMU Standard PC (i440FX + PIIX 1996) (1.11.1-1ubuntu1 BIOS)94GBRed Hat QXL paravirtual graphic cardQEMU GenericRed Hat Virtio device3.3 Mesa 18.2.2 (LLVM 7.0 128 bits)1024x768KVMAMD Ryzen Threadripper 2990WX 32-Core @ 3.00GHz (16 Cores)ASUS ROG ZENITH EXTREME (1601 BIOS)AMD Family 17h32768MBSamsung SSD 970 EVO 500GBMSI AMD Radeon RX 470/480/570/570X/580/580X 8GB (1366/2000MHz)Realtek ALC1220ASUS VP28UIntel I211 Gigabit Connection + Qualcomm Atheros QCA6174 802.11ac Wireless4.5 Mesa 18.2.2 (LLVM 7.0.0)3840x2160OpenBenchmarking.orgCompiler Details- --build=x86_64-linux-gnu --disable-vtable-verify --disable-werror --enable-checking=release --enable-clocale=gnu --enable-default-pie --enable-gnu-unique-object --enable-languages=c,ada,c++,go,brig,d,fortran,objc,obj-c++ --enable-libmpx --enable-libstdcxx-debug --enable-libstdcxx-time=yes --enable-multiarch --enable-multilib --enable-nls --enable-objc-gc=auto --enable-offload-targets=nvptx-none --enable-plugin --enable-shared --enable-threads=posix --host=x86_64-linux-gnu --program-prefix=x86_64-linux-gnu- --target=x86_64-linux-gnu --with-abi=m64 --with-arch-32=i686 --with-default-libstdcxx-abi=new --with-gcc-major-version-only --with-multilib-list=m32,m64,mx32 --with-target-system-zlib --with-tune=generic --without-cuda-driver -v Disk Details- VirtualBox 6.0: CFQ / errors=remount-ro,relatime,rw- KVM: NONE / errors=remount-ro,relatime,rw- Bare Metal: NONE / errors=remount-ro,relatime,rwPython Details- Python 2.7.15+ + Python 3.6.7Security Details- VirtualBox 6.0: __user pointer sanitization + Full generic retpoline + SSB disabled via prctl and seccomp- KVM: __user pointer sanitization + Full AMD retpoline IBPB- Bare Metal: __user pointer sanitization + Full AMD retpoline IBPB + SSB disabled via prctl and seccompProcessor Details- Bare Metal: Scaling Governor: acpi-cpufreq ondemand

VirtualBox 6.0 vs. KVM vs. Bare Linux Benchmarksfio: Seq Read - Linux AIO - No - Yes - 4KB - Default Test Directoryfio: Rand Read - Linux AIO - No - Yes - 4KB - Default Test Directorydacapobench: Tradesoapapache: Static Web Page Servingosbench: Launch Programsstress-ng: System V Message Passingdacapobench: Tradebeansstress-ng: Context Switchingttsiod-renderer: Phong Rendering With Soft-Shadow Mappingcompress-xz: Compressing ubuntu-16.04.3-server-i386.img, Compression Level 9x264: H.264 Video Encodingbuild-linux-kernel: Time To Compiledacapobench: Jythonnamd: ATPase Simulation - 327,506 Atomsdacapobench: H2primesieve: 1e12 Prime Number Generationblender: BMW27 - CPU-Onlyrodinia: OpenMP LavaMDstress-ng: Semaphoresosbench: Create Filescompress-zstd: Compressing ubuntu-16.04.3-server-i386.img, Compression Level 19parboil: OpenMP CUTCPrust-prime: Prime Number Test To 200,000,000node-octane: osbench: Memory Allocationsosbench: Create Processesosbench: Create Threadsmcperf: Setmcperf: Getredis: SETcompilebench: Initial Createcompilebench: Compilefs-mark: 5000 Files, 1MB Size, 4 Threadsfs-mark: 1000 Files, 1MB Sizefio: Rand Write - Linux AIO - No - Yes - 4KB - Default Test Directorysqlite: Timed SQLite InsertionsVirtualBox 6.0KVMBare Metal1082593381641157783.1032471867688274761124314268.6992.2967212.15651557520.2925936.49175475119.3724.874.3128.313097985.9355.9782.4511892325421275589373115211311227667165.5868514400056702246160.3753855005346494260336911686.1667.3848051.51707523115.4218526.04209176014.7319.863.5423.003744277.7541.8531.1328684478671499019435149315711312733347.04101720533339932236643.0261822994075497129843582.19102.9761.7845411.45923380814.2318325.85246142914.9619.463.4122.673766572.3923.6113.0742394635681550138506174518125130325036.26OpenBenchmarking.org

Flexible IO Tester

Type: Sequential Read - IO Engine: Linux AIO - Buffered: No - Direct: Yes - Block Size: 4KB - Disk Target: Default Test Directory

OpenBenchmarking.orgMB/s, More Is BetterFlexible IO Tester 3.1Type: Sequential Read - IO Engine: Linux AIO - Buffered: No - Direct: Yes - Block Size: 4KB - Disk Target: Default Test DirectoryVirtualBox 6.0KVMBare Metal2004006008001000SE +/- 1.86, N = 3SE +/- 7.22, N = 3SE +/- 1.45, N = 31086851017-lnuma -libverbs-lnuma -libverbs1. (CC) gcc options: -rdynamic -std=gnu99 -ffast-math -include -O3 -U_FORTIFY_SOURCE -ll -lrt -laio -lz -lm -lpthread -ldl

Flexible IO Tester

Type: Random Read - IO Engine: Linux AIO - Buffered: No - Direct: Yes - Block Size: 4KB - Disk Target: Default Test Directory

OpenBenchmarking.orgIOPS, More Is BetterFlexible IO Tester 3.1Type: Random Read - IO Engine: Linux AIO - Buffered: No - Direct: Yes - Block Size: 4KB - Disk Target: Default Test DirectoryVirtualBox 6.0KVMBare Metal40K80K120K160K200KSE +/- 338.30, N = 3SE +/- 577.35, N = 3SE +/- 333.33, N = 325933144000205333-lnuma -libverbs-lnuma -libverbs1. (CC) gcc options: -rdynamic -std=gnu99 -ffast-math -include -O3 -U_FORTIFY_SOURCE -ll -lrt -laio -lz -lm -lpthread -ldl

DaCapo Benchmark

Java Test: Tradesoap

OpenBenchmarking.orgmsec, Fewer Is BetterDaCapo Benchmark 9.12-MR1Java Test: TradesoapVirtualBox 6.0KVMBare Metal2K4K6K8K10KSE +/- 73.28, N = 4SE +/- 81.00, N = 6SE +/- 31.98, N = 4816456703993

Apache Benchmark

Static Web Page Serving

OpenBenchmarking.orgRequests Per Second, More Is BetterApache Benchmark 2.4.29Static Web Page ServingVirtualBox 6.0KVMBare Metal5K10K15K20K25KSE +/- 93.95, N = 3SE +/- 446.11, N = 3SE +/- 191.87, N = 31157722461223661. (CC) gcc options: -shared -fPIC -O2 -pthread

OSBench

Test: Launch Programs

OpenBenchmarking.orgus Per Event, Fewer Is BetterOSBenchTest: Launch ProgramsVirtualBox 6.0KVMBare Metal20406080100SE +/- 1.49, N = 3SE +/- 0.50, N = 3SE +/- 0.45, N = 383.1060.3743.021. (CC) gcc options: -lm

Stress-NG

Test: System V Message Passing

OpenBenchmarking.orgBogo Ops/s, More Is BetterStress-NG 0.07.26Test: System V Message PassingVirtualBox 6.0KVMBare Metal1.3M2.6M3.9M5.2M6.5MSE +/- 1521.73, N = 3SE +/- 47317.32, N = 3SE +/- 26530.85, N = 33247186538550061822991. (CC) gcc options: -O2 -std=gnu99 -lm -lz -lcrypt -lrt -lpthread -laio -lc

DaCapo Benchmark

Java Test: Tradebeans

OpenBenchmarking.orgmsec, Fewer Is BetterDaCapo Benchmark 9.12-MR1Java Test: TradebeansVirtualBox 6.0KVMBare Metal16003200480064008000SE +/- 31.79, N = 4SE +/- 82.08, N = 4SE +/- 21.43, N = 4768853464075

Stress-NG

Test: Context Switching

OpenBenchmarking.orgBogo Ops/s, More Is BetterStress-NG 0.07.26Test: Context SwitchingVirtualBox 6.0KVMBare Metal1.1M2.2M3.3M4.4M5.5MSE +/- 9955.51, N = 3SE +/- 23882.83, N = 3SE +/- 15342.45, N = 32747611494260349712981. (CC) gcc options: -O2 -std=gnu99 -lm -lz -lcrypt -lrt -lpthread -laio -lc

TTSIOD 3D Renderer

Phong Rendering With Soft-Shadow Mapping

OpenBenchmarking.orgFPS, More Is BetterTTSIOD 3D Renderer 2.3bPhong Rendering With Soft-Shadow MappingVirtualBox 6.0KVMBare Metal90180270360450SE +/- 1.39, N = 3SE +/- 1.55, N = 3SE +/- 0.33, N = 32433694351. (CXX) g++ options: -O3 -fomit-frame-pointer -ffast-math -mtune=native -flto -msse -mrecip -mfpmath=sse -msse2 -mssse3 -lSDL -fopenmp -fwhole-program -lstdc++

XZ Compression

Compressing ubuntu-16.04.3-server-i386.img, Compression Level 9

OpenBenchmarking.orgSeconds, Fewer Is BetterXZ Compression 5.2.4Compressing ubuntu-16.04.3-server-i386.img, Compression Level 9VirtualBox 6.0KVMBare Metal306090120150SE +/- 0.53, N = 3SE +/- 0.96, N = 3SE +/- 1.29, N = 3142.00116.0082.191. (CC) gcc options: -pthread -fvisibility=hidden -O2

x264

H.264 Video Encoding

OpenBenchmarking.orgFrames Per Second, More Is Betterx264 2018-09-25H.264 Video EncodingVirtualBox 6.0KVMBare Metal20406080100SE +/- 0.11, N = 3SE +/- 1.21, N = 6SE +/- 1.42, N = 368.6986.16102.97-lavformat -lavcodec -lavutil -lswscale1. (CC) gcc options: -ldl -m64 -lm -lpthread -O3 -ffast-math -std=gnu99 -fPIC -fomit-frame-pointer -fno-tree-vectorize

Timed Linux Kernel Compilation

Time To Compile

OpenBenchmarking.orgSeconds, Fewer Is BetterTimed Linux Kernel Compilation 4.18Time To CompileVirtualBox 6.0KVMBare Metal20406080100SE +/- 1.48, N = 3SE +/- 2.17, N = 2SE +/- 0.96, N = 392.2967.3861.78

DaCapo Benchmark

Java Test: Jython

OpenBenchmarking.orgmsec, Fewer Is BetterDaCapo Benchmark 9.12-MR1Java Test: JythonVirtualBox 6.0KVMBare Metal14002800420056007000SE +/- 85.25, N = 4SE +/- 42.55, N = 4SE +/- 33.19, N = 4672148054541

NAMD

ATPase Simulation - 327,506 Atoms

OpenBenchmarking.orgdays/ns, Fewer Is BetterNAMD 2.13b1ATPase Simulation - 327,506 AtomsVirtualBox 6.0KVMBare Metal0.48520.97041.45561.94082.426SE +/- 0.01709, N = 3SE +/- 0.00514, N = 3SE +/- 0.00336, N = 32.156511.517071.45923

DaCapo Benchmark

Java Test: H2

OpenBenchmarking.orgmsec, Fewer Is BetterDaCapo Benchmark 9.12-MR1Java Test: H2VirtualBox 6.0KVMBare Metal12002400360048006000SE +/- 86.40, N = 4SE +/- 50.89, N = 16SE +/- 51.37, N = 16557552313808

Primesieve

1e12 Prime Number Generation

OpenBenchmarking.orgSeconds, Fewer Is BetterPrimesieve 7.21e12 Prime Number GenerationVirtualBox 6.0KVMBare Metal510152025SE +/- 0.14, N = 3SE +/- 0.19, N = 8SE +/- 0.02, N = 320.2915.4214.231. (CXX) g++ options: -O3 -lpthread

Blender

Blend File: BMW27 - Compute: CPU-Only

OpenBenchmarking.orgSeconds, Fewer Is BetterBlender 2.79aBlend File: BMW27 - Compute: CPU-OnlyVirtualBox 6.0KVMBare Metal60120180240300259185183

Rodinia

Test: OpenMP LavaMD

OpenBenchmarking.orgSeconds, Fewer Is BetterRodinia 2.4Test: OpenMP LavaMDVirtualBox 6.0KVMBare Metal816243240SE +/- 0.00, N = 3SE +/- 0.09, N = 3SE +/- 0.00, N = 336.4926.0425.851. (CXX) g++ options: -O2 -lOpenCL

Stress-NG

Test: Semaphores

OpenBenchmarking.orgBogo Ops/s, More Is BetterStress-NG 0.07.26Test: SemaphoresVirtualBox 6.0KVMBare Metal500K1000K1500K2000K2500KSE +/- 10018.98, N = 3SE +/- 19457.08, N = 3SE +/- 27876.89, N = 31754751209176024614291. (CC) gcc options: -O2 -std=gnu99 -lm -lz -lcrypt -lrt -lpthread -laio -lc

OSBench

Test: Create Files

OpenBenchmarking.orgus Per Event, Fewer Is BetterOSBenchTest: Create FilesVirtualBox 6.0KVMBare Metal510152025SE +/- 0.10, N = 3SE +/- 0.17, N = 3SE +/- 0.07, N = 319.3714.7314.961. (CC) gcc options: -lm

Zstd Compression

Compressing ubuntu-16.04.3-server-i386.img, Compression Level 19

OpenBenchmarking.orgSeconds, Fewer Is BetterZstd Compression 1.3.4Compressing ubuntu-16.04.3-server-i386.img, Compression Level 19VirtualBox 6.0KVMBare Metal612182430SE +/- 0.45, N = 3SE +/- 0.05, N = 3SE +/- 0.21, N = 324.8719.8619.461. (CC) gcc options: -O3 -pthread -lz -llzma

Parboil

Test: OpenMP CUTCP

OpenBenchmarking.orgSeconds, Fewer Is BetterParboil 2.5Test: OpenMP CUTCPVirtualBox 6.0KVMBare Metal0.96981.93962.90943.87924.849SE +/- 0.03, N = 3SE +/- 0.05, N = 3SE +/- 0.04, N = 34.313.543.411. (CXX) g++ options: -lm -lpthread -lgomp -O3 -ffast-math -fopenmp

Rust Prime Benchmark

Prime Number Test To 200,000,000

OpenBenchmarking.orgSeconds, Fewer Is BetterRust Prime BenchmarkPrime Number Test To 200,000,000VirtualBox 6.0KVMBare Metal714212835SE +/- 0.02, N = 3SE +/- 0.08, N = 3SE +/- 0.00, N = 328.3123.0022.671. (CC) gcc options: -m64 -pie -nodefaultlibs -ldl -lrt -lpthread -lgcc_s -lc -lm -lutil

Node.js Octane Benchmark

OpenBenchmarking.orgScore, More Is BetterNode.js Octane BenchmarkVirtualBox 6.0KVMBare Metal8K16K24K32K40KSE +/- 441.05, N = 3SE +/- 130.39, N = 3SE +/- 191.64, N = 33097937442376651. Nodejs v8.11.4

OSBench

Test: Memory Allocations

OpenBenchmarking.orgNs Per Event, Fewer Is BetterOSBenchTest: Memory AllocationsVirtualBox 6.0KVMBare Metal20406080100SE +/- 0.12, N = 3SE +/- 0.14, N = 3SE +/- 0.08, N = 385.9377.7572.391. (CC) gcc options: -lm

OSBench

Test: Create Processes

OpenBenchmarking.orgus Per Event, Fewer Is BetterOSBenchTest: Create ProcessesVirtualBox 6.0KVMBare Metal1326395265SE +/- 1.55, N = 9SE +/- 0.70, N = 12SE +/- 0.74, N = 955.9741.8523.611. (CC) gcc options: -lm

OSBench

Test: Create Threads

OpenBenchmarking.orgus Per Event, Fewer Is BetterOSBenchTest: Create ThreadsVirtualBox 6.0KVMBare Metal20406080100SE +/- 2.42, N = 12SE +/- 1.16, N = 9SE +/- 0.06, N = 382.4531.1313.071. (CC) gcc options: -lm

Memcached mcperf

Method: Set

OpenBenchmarking.orgOperations Per Second, More Is BetterMemcached mcperf 1.5.10Method: SetVirtualBox 6.0KVMBare Metal9K18K27K36K45KSE +/- 103.67, N = 3SE +/- 462.10, N = 12SE +/- 1598.75, N = 121189228684423941. (CC) gcc options: -O2 -lm -rdynamic

Memcached mcperf

Method: Get

OpenBenchmarking.orgOperations Per Second, More Is BetterMemcached mcperf 1.5.10Method: GetVirtualBox 6.0KVMBare Metal14K28K42K56K70KSE +/- 351.02, N = 3SE +/- 861.19, N = 12SE +/- 2250.26, N = 123254247867635681. (CC) gcc options: -O2 -lm -rdynamic

Redis

Test: SET

OpenBenchmarking.orgRequests Per Second, More Is BetterRedis 4.0.8Test: SETVirtualBox 6.0KVMBare Metal300K600K900K1200K1500KSE +/- 7079.03, N = 3SE +/- 38416.53, N = 12SE +/- 20755.24, N = 31275589149901915501381. (CC) gcc options: -ggdb -rdynamic -lm -ldl -pthread

Compile Bench

Test: Initial Create

OpenBenchmarking.orgMB/s, More Is BetterCompile Bench 0.6Test: Initial CreateVirtualBox 6.0KVMBare Metal110220330440550SE +/- 16.85, N = 3SE +/- 6.85, N = 3SE +/- 5.47, N = 3373435506

Compile Bench

Test: Compile

OpenBenchmarking.orgMB/s, More Is BetterCompile Bench 0.6Test: CompileVirtualBox 6.0KVMBare Metal400800120016002000SE +/- 19.11, N = 3SE +/- 34.49, N = 12SE +/- 28.59, N = 12115214931745

FS-Mark

Test: 5000 Files, 1MB Size, 4 Threads

OpenBenchmarking.orgFiles/s, More Is BetterFS-Mark 3.3Test: 5000 Files, 1MB Size, 4 ThreadsVirtualBox 6.0KVMBare Metal4080120160200SE +/- 1.88, N = 9SE +/- 13.42, N = 6SE +/- 12.36, N = 91131571811. (CC) gcc options: -static

FS-Mark

Test: 1000 Files, 1MB Size

OpenBenchmarking.orgFiles/s, More Is BetterFS-Mark 3.3Test: 1000 Files, 1MB SizeVirtualBox 6.0KVMBare Metal50100150200250SE +/- 1.96, N = 3SE +/- 8.09, N = 9SE +/- 3.09, N = 31121132511. (CC) gcc options: -static

Flexible IO Tester

Type: Random Write - IO Engine: Linux AIO - Buffered: No - Direct: Yes - Block Size: 4KB - Disk Target: Default Test Directory

OpenBenchmarking.orgIOPS, More Is BetterFlexible IO Tester 3.1Type: Random Write - IO Engine: Linux AIO - Buffered: No - Direct: Yes - Block Size: 4KB - Disk Target: Default Test DirectoryVirtualBox 6.0KVMBare Metal60K120K180K240K300KSE +/- 384.42, N = 3SE +/- 1333.33, N = 3SE +/- 8144.64, N = 1227667127333303250-lnuma -libverbs-lnuma -libverbs1. (CC) gcc options: -rdynamic -std=gnu99 -ffast-math -include -O3 -U_FORTIFY_SOURCE -ll -lrt -laio -lz -lm -lpthread -ldl

SQLite

Timed SQLite Insertions

OpenBenchmarking.orgSeconds, Fewer Is BetterSQLite 3.22Timed SQLite InsertionsVirtualBox 6.0KVMBare Metal4080120160200SE +/- 8.99, N = 9SE +/- 1.00, N = 12SE +/- 0.15, N = 3165.5847.0436.261. (CC) gcc options: -O2 -lz -ldl -lpthread


Phoronix Test Suite v10.8.5