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&grw.

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 Benchmarkscompress-xz: Compressing ubuntu-16.04.3-server-i386.img, Compression Level 9compilebench: Compilecompilebench: Initial Createstress-ng: Semaphoresstress-ng: Context Switchingstress-ng: System V Message Passingdacapobench: H2dacapobench: Jythondacapobench: Tradesoapdacapobench: Tradebeansfio: Rand Read - Linux AIO - No - Yes - 4KB - Default Test Directoryfio: Rand Write - Linux AIO - No - Yes - 4KB - Default Test Directoryfio: Seq Read - Linux AIO - No - Yes - 4KB - Default Test Directoryfs-mark: 1000 Files, 1MB Sizefs-mark: 5000 Files, 1MB Size, 4 Threadsparboil: OpenMP CUTCProdinia: OpenMP LavaMDnamd: ATPase Simulation - 327,506 Atomsosbench: Create Filesosbench: Create Threadsosbench: Launch Programsosbench: Create Processesosbench: Memory Allocationsprimesieve: 1e12 Prime Number Generationrust-prime: Prime Number Test To 200,000,000compress-zstd: Compressing ubuntu-16.04.3-server-i386.img, Compression Level 19build-linux-kernel: Time To Compilex264: H.264 Video Encodingttsiod-renderer: Phong Rendering With Soft-Shadow Mappingblender: BMW27 - CPU-Onlymcperf: Getmcperf: Setapache: Static Web Page Servingredis: SETsqlite: Timed SQLite Insertionsnode-octane: VirtualBox 6.0KVMBare Metal1421152373175475127476113247186557567218164768825933276671081121134.3136.492.1565119.3782.4583.1055.9785.9320.2928.3124.8792.2968.692432593254211892115771275589165.5830979116149343520917604942603538550052314805567053461440001273336851131573.5426.041.5170714.7331.1360.3741.8577.7515.4223.0019.8667.3886.16369185478672868422461149901947.043744282.191745506246142949712986182299380845413993407520533330325010172511813.4125.851.4592314.9613.0743.0223.6172.3914.2322.6719.4661.78102.97435183635684239422366155013836.2637665OpenBenchmarking.org

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

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

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

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

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

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: 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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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: 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

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

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

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

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

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

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++

Blender

Blend File: BMW27 - Compute: CPU-Only

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

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

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

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

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

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

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


Phoronix Test Suite v10.8.5