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&grr&sro.

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 Benchmarksfs-mark: 5000 Files, 1MB Size, 4 Threadssqlite: Timed SQLite Insertionsdacapobench: Tradesoapmcperf: Setcompress-xz: Compressing ubuntu-16.04.3-server-i386.img, Compression Level 9namd: ATPase Simulation - 327,506 Atomsbuild-linux-kernel: Time To Compilecompilebench: Compilemcperf: Getblender: BMW27 - CPU-Onlydacapobench: Tradebeansfio: Rand Write - Linux AIO - No - Yes - 4KB - Default Test Directoryapache: Static Web Page Servingttsiod-renderer: Phong Rendering With Soft-Shadow Mappingdacapobench: H2node-octane: fio: Rand Read - Linux AIO - No - Yes - 4KB - Default Test Directoryfio: Seq Read - Linux AIO - No - Yes - 4KB - Default Test Directorystress-ng: Semaphoresstress-ng: Context Switchingstress-ng: System V Message Passingrodinia: OpenMP LavaMDprimesieve: 1e12 Prime Number Generationrust-prime: Prime Number Test To 200,000,000redis: SETcompress-zstd: Compressing ubuntu-16.04.3-server-i386.img, Compression Level 19osbench: Create Processesfs-mark: 1000 Files, 1MB Sizeosbench: Create Threadsdacapobench: Jythonx264: H.264 Video Encodingosbench: Create Filesosbench: Memory Allocationsosbench: Launch Programsparboil: OpenMP CUTCPcompilebench: Initial CreateVirtualBox 6.0KVMBare Metal113165.588164118921422.1565192.29115232542259768827667115772435575309792593310817547512747611324718636.4920.2928.31127558924.8755.9711282.45672168.6919.3785.9383.104.3137315747.045670286841161.5170767.3814934786718553461273332246136952313744214400068520917604942603538550026.0415.4223.00149901919.8641.8511331.13480586.1614.7377.7560.373.5443518136.2639934239482.191.4592361.78174563568183407530325022366435380837665205333101724614294971298618229925.8514.2322.67155013819.4623.6125113.074541102.9714.9672.3943.023.41506OpenBenchmarking.org

FS-Mark

Test: 5000 Files, 1MB Size, 4 Threads

OpenBenchmarking.orgFiles/s, More Is BetterFS-Mark 3.3Test: 5000 Files, 1MB Size, 4 ThreadsBare MetalKVMVirtualBox 6.04080120160200SE +/- 12.36, N = 9SE +/- 13.42, N = 6SE +/- 1.88, N = 91811571131. (CC) gcc options: -static

SQLite

Timed SQLite Insertions

OpenBenchmarking.orgSeconds, Fewer Is BetterSQLite 3.22Timed SQLite InsertionsBare MetalKVMVirtualBox 6.04080120160200SE +/- 0.15, N = 3SE +/- 1.00, N = 12SE +/- 8.99, N = 936.2647.04165.581. (CC) gcc options: -O2 -lz -ldl -lpthread

DaCapo Benchmark

Java Test: Tradesoap

OpenBenchmarking.orgmsec, Fewer Is BetterDaCapo Benchmark 9.12-MR1Java Test: TradesoapBare MetalKVMVirtualBox 6.02K4K6K8K10KSE +/- 31.98, N = 4SE +/- 81.00, N = 6SE +/- 73.28, N = 4399356708164

Memcached mcperf

Method: Set

OpenBenchmarking.orgOperations Per Second, More Is BetterMemcached mcperf 1.5.10Method: SetBare MetalKVMVirtualBox 6.09K18K27K36K45KSE +/- 1598.75, N = 12SE +/- 462.10, N = 12SE +/- 103.67, N = 34239428684118921. (CC) gcc options: -O2 -lm -rdynamic

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 9Bare MetalKVMVirtualBox 6.0306090120150SE +/- 1.29, N = 3SE +/- 0.96, N = 3SE +/- 0.53, N = 382.19116.00142.001. (CC) gcc options: -pthread -fvisibility=hidden -O2

NAMD

ATPase Simulation - 327,506 Atoms

OpenBenchmarking.orgdays/ns, Fewer Is BetterNAMD 2.13b1ATPase Simulation - 327,506 AtomsBare MetalKVMVirtualBox 6.00.48520.97041.45561.94082.426SE +/- 0.00336, N = 3SE +/- 0.00514, N = 3SE +/- 0.01709, N = 31.459231.517072.15651

Timed Linux Kernel Compilation

Time To Compile

OpenBenchmarking.orgSeconds, Fewer Is BetterTimed Linux Kernel Compilation 4.18Time To CompileBare MetalKVMVirtualBox 6.020406080100SE +/- 0.96, N = 3SE +/- 2.17, N = 2SE +/- 1.48, N = 361.7867.3892.29

Compile Bench

Test: Compile

OpenBenchmarking.orgMB/s, More Is BetterCompile Bench 0.6Test: CompileBare MetalKVMVirtualBox 6.0400800120016002000SE +/- 28.59, N = 12SE +/- 34.49, N = 12SE +/- 19.11, N = 3174514931152

Memcached mcperf

Method: Get

OpenBenchmarking.orgOperations Per Second, More Is BetterMemcached mcperf 1.5.10Method: GetBare MetalKVMVirtualBox 6.014K28K42K56K70KSE +/- 2250.26, N = 12SE +/- 861.19, N = 12SE +/- 351.02, N = 36356847867325421. (CC) gcc options: -O2 -lm -rdynamic

Blender

Blend File: BMW27 - Compute: CPU-Only

OpenBenchmarking.orgSeconds, Fewer Is BetterBlender 2.79aBlend File: BMW27 - Compute: CPU-OnlyBare MetalKVMVirtualBox 6.060120180240300183185259

DaCapo Benchmark

Java Test: Tradebeans

OpenBenchmarking.orgmsec, Fewer Is BetterDaCapo Benchmark 9.12-MR1Java Test: TradebeansBare MetalKVMVirtualBox 6.016003200480064008000SE +/- 21.43, N = 4SE +/- 82.08, N = 4SE +/- 31.79, N = 4407553467688

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 DirectoryBare MetalKVMVirtualBox 6.060K120K180K240K300KSE +/- 8144.64, N = 12SE +/- 1333.33, N = 3SE +/- 384.42, N = 330325012733327667-lnuma -libverbs-lnuma -libverbs1. (CC) gcc options: -rdynamic -std=gnu99 -ffast-math -include -O3 -U_FORTIFY_SOURCE -ll -lrt -laio -lz -lm -lpthread -ldl

Apache Benchmark

Static Web Page Serving

OpenBenchmarking.orgRequests Per Second, More Is BetterApache Benchmark 2.4.29Static Web Page ServingBare MetalKVMVirtualBox 6.05K10K15K20K25KSE +/- 191.87, N = 3SE +/- 446.11, N = 3SE +/- 93.95, N = 32236622461115771. (CC) gcc options: -shared -fPIC -O2 -pthread

TTSIOD 3D Renderer

Phong Rendering With Soft-Shadow Mapping

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

DaCapo Benchmark

Java Test: H2

OpenBenchmarking.orgmsec, Fewer Is BetterDaCapo Benchmark 9.12-MR1Java Test: H2Bare MetalKVMVirtualBox 6.012002400360048006000SE +/- 51.37, N = 16SE +/- 50.89, N = 16SE +/- 86.40, N = 4380852315575

Node.js Octane Benchmark

OpenBenchmarking.orgScore, More Is BetterNode.js Octane BenchmarkBare MetalKVMVirtualBox 6.08K16K24K32K40KSE +/- 191.64, N = 3SE +/- 130.39, N = 3SE +/- 441.05, N = 33766537442309791. Nodejs v8.11.4

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 DirectoryBare MetalKVMVirtualBox 6.040K80K120K160K200KSE +/- 333.33, N = 3SE +/- 577.35, N = 3SE +/- 338.30, N = 320533314400025933-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 DirectoryBare MetalKVMVirtualBox 6.02004006008001000SE +/- 1.45, N = 3SE +/- 7.22, N = 3SE +/- 1.86, N = 31017685108-lnuma -libverbs-lnuma -libverbs1. (CC) gcc options: -rdynamic -std=gnu99 -ffast-math -include -O3 -U_FORTIFY_SOURCE -ll -lrt -laio -lz -lm -lpthread -ldl

Stress-NG

Test: Semaphores

OpenBenchmarking.orgBogo Ops/s, More Is BetterStress-NG 0.07.26Test: SemaphoresBare MetalKVMVirtualBox 6.0500K1000K1500K2000K2500KSE +/- 27876.89, N = 3SE +/- 19457.08, N = 3SE +/- 10018.98, N = 32461429209176017547511. (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 SwitchingBare MetalKVMVirtualBox 6.01.1M2.2M3.3M4.4M5.5MSE +/- 15342.45, N = 3SE +/- 23882.83, N = 3SE +/- 9955.51, N = 34971298494260327476111. (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 PassingBare MetalKVMVirtualBox 6.01.3M2.6M3.9M5.2M6.5MSE +/- 26530.85, N = 3SE +/- 47317.32, N = 3SE +/- 1521.73, N = 36182299538550032471861. (CC) gcc options: -O2 -std=gnu99 -lm -lz -lcrypt -lrt -lpthread -laio -lc

Rodinia

Test: OpenMP LavaMD

OpenBenchmarking.orgSeconds, Fewer Is BetterRodinia 2.4Test: OpenMP LavaMDBare MetalKVMVirtualBox 6.0816243240SE +/- 0.00, N = 3SE +/- 0.09, N = 3SE +/- 0.00, N = 325.8526.0436.491. (CXX) g++ options: -O2 -lOpenCL

Primesieve

1e12 Prime Number Generation

OpenBenchmarking.orgSeconds, Fewer Is BetterPrimesieve 7.21e12 Prime Number GenerationBare MetalKVMVirtualBox 6.0510152025SE +/- 0.02, N = 3SE +/- 0.19, N = 8SE +/- 0.14, N = 314.2315.4220.291. (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,000Bare MetalKVMVirtualBox 6.0714212835SE +/- 0.00, N = 3SE +/- 0.08, N = 3SE +/- 0.02, N = 322.6723.0028.311. (CC) gcc options: -m64 -pie -nodefaultlibs -ldl -lrt -lpthread -lgcc_s -lc -lm -lutil

Redis

Test: SET

OpenBenchmarking.orgRequests Per Second, More Is BetterRedis 4.0.8Test: SETBare MetalKVMVirtualBox 6.0300K600K900K1200K1500KSE +/- 20755.24, N = 3SE +/- 38416.53, N = 12SE +/- 7079.03, N = 31550138149901912755891. (CC) gcc options: -ggdb -rdynamic -lm -ldl -pthread

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 19Bare MetalKVMVirtualBox 6.0612182430SE +/- 0.21, N = 3SE +/- 0.05, N = 3SE +/- 0.45, N = 319.4619.8624.871. (CC) gcc options: -O3 -pthread -lz -llzma

OSBench

Test: Create Processes

OpenBenchmarking.orgus Per Event, Fewer Is BetterOSBenchTest: Create ProcessesBare MetalKVMVirtualBox 6.01326395265SE +/- 0.74, N = 9SE +/- 0.70, N = 12SE +/- 1.55, N = 923.6141.8555.971. (CC) gcc options: -lm

FS-Mark

Test: 1000 Files, 1MB Size

OpenBenchmarking.orgFiles/s, More Is BetterFS-Mark 3.3Test: 1000 Files, 1MB SizeBare MetalKVMVirtualBox 6.050100150200250SE +/- 3.09, N = 3SE +/- 8.09, N = 9SE +/- 1.96, N = 32511131121. (CC) gcc options: -static

OSBench

Test: Create Threads

OpenBenchmarking.orgus Per Event, Fewer Is BetterOSBenchTest: Create ThreadsBare MetalKVMVirtualBox 6.020406080100SE +/- 0.06, N = 3SE +/- 1.16, N = 9SE +/- 2.42, N = 1213.0731.1382.451. (CC) gcc options: -lm

DaCapo Benchmark

Java Test: Jython

OpenBenchmarking.orgmsec, Fewer Is BetterDaCapo Benchmark 9.12-MR1Java Test: JythonBare MetalKVMVirtualBox 6.014002800420056007000SE +/- 33.19, N = 4SE +/- 42.55, N = 4SE +/- 85.25, N = 4454148056721

x264

H.264 Video Encoding

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

OSBench

Test: Create Files

OpenBenchmarking.orgus Per Event, Fewer Is BetterOSBenchTest: Create FilesBare MetalKVMVirtualBox 6.0510152025SE +/- 0.07, N = 3SE +/- 0.17, N = 3SE +/- 0.10, N = 314.9614.7319.371. (CC) gcc options: -lm

OSBench

Test: Memory Allocations

OpenBenchmarking.orgNs Per Event, Fewer Is BetterOSBenchTest: Memory AllocationsBare MetalKVMVirtualBox 6.020406080100SE +/- 0.08, N = 3SE +/- 0.14, N = 3SE +/- 0.12, N = 372.3977.7585.931. (CC) gcc options: -lm

OSBench

Test: Launch Programs

OpenBenchmarking.orgus Per Event, Fewer Is BetterOSBenchTest: Launch ProgramsBare MetalKVMVirtualBox 6.020406080100SE +/- 0.45, N = 3SE +/- 0.50, N = 3SE +/- 1.49, N = 343.0260.3783.101. (CC) gcc options: -lm

Parboil

Test: OpenMP CUTCP

OpenBenchmarking.orgSeconds, Fewer Is BetterParboil 2.5Test: OpenMP CUTCPBare MetalKVMVirtualBox 6.00.96981.93962.90943.87924.849SE +/- 0.04, N = 3SE +/- 0.05, N = 3SE +/- 0.03, N = 33.413.544.311. (CXX) g++ options: -lm -lpthread -lgomp -O3 -ffast-math -fopenmp

Compile Bench

Test: Initial Create

OpenBenchmarking.orgMB/s, More Is BetterCompile Bench 0.6Test: Initial CreateBare MetalKVMVirtualBox 6.0110220330440550SE +/- 5.47, N = 3SE +/- 6.85, N = 3SE +/- 16.85, N = 3506435373


Phoronix Test Suite v10.8.5