Docker (moby-engine) performance deficit avoidable?

Hello everyone,

I was doing some benchmarking between my docker container an a bare-metal install of different software I use. I compared a CentOS 7 install to a CentOS7 docker and a Fedora 33 install to a Fedora 33 docker.

The setup is as followed for the docker:

  • CentOS 7 docker is started with sbin/init and accessed using docker exec

  • Fedora 32 docker is started with /bin/bash

Both are ran in a VM (meaning I have a Fedora 33 VM and a CentOS7 VM, but both centos and fedora docker are being ran on the Fedora 33 VM)

So the software I ran for the test are Ansys Fluent and StarCCM+ for centos and Openfoam for Fedora.

For the ansys fluent test:

Ansys Fluent Concorde Case (8 cores)
5960x (linux CentOS7 docker in Fedora 33 VM V19.3) = 142.939 seconds (for 140 iterations)
5960x (linux CentOS7 docker in Fedora 33 VM V19.13) = 393.108 seconds (287 Iterations, Check Mesh fixed 10% bad cells for 4 passthroughs twice)
5960x (linux CentOS7 VM Ansys R19.3) = 132.494 seconds (for 140 iterations)
5960x (linux CentOS7 VM Ansys R19.3) = 383.644 seconds (287 Iterations, Check Mesh fixed 10% bad cells for 4 passthroughs twice)

For StarCCM+ test:

StarCCM+
Blade Element Helicoptor Method (8 core):
5960x (linux CentOS7 docker in Fedora 33 VM V10.03.065) = 10684.45 seconds (or 8 times total cpu time) or 1335.56 seconds total
5960x (linux CentOS7 VM V10.03.065) = 9514.61 Seconds (or 8 times total cpu time) or 1189.326 seconds total

For Openfoam test:

OpenFOAM-7 Incompressible SimpleFOAM Motorbike (6 core):
5960x (linux Fedora 32 docker in Fodera 33 VM (OFv7) = 98.52 seconds (SnappyHexMesh) and 228.77 seconds (SimpleFoam)
5960x (linux Fodera 33 VM (OFv7) = 99.22 seconds (SnappyHexMesh) and 213.5 seconds (SimpleFoam) OpenFOAM-v1912 Incompressible SimpleFOAM Motorbike (6 core):
5960x (linux Fedora 32 docker in Fodera 33 VM (OFv1912) = 77.56 seconds (SnappyHexMesh) and 261.73 seconds (SimpleFoam)
5960x (linux Fodera 33 VM (OFv1912) = 73.78 seconds (SnappyHexMesh) and 229.55 seconds (SimpleFoam)
OpenFOAM-v2012 Incompressible SimpleFOAM Motorbike (6 core):
5960x (linux Fedora 32 docker in Fodera 33 VM (OFv2012) = 77.08 seconds (SnappyHexMesh) and 246.53 seconds (SimpleFoam)
5960x (linux Fodera 33 VM (OFv2012) = 75.2 seconds (SnappyHexMesh) and 236.8 seconds (SimpleFoam)

Based on those numbers I am looking at:

fluent (concorde, 140 iteration) docker perf hit = 7.31 %
fluent (concorde, 287 iterations) docker perf hit = 2.41 %
StarCCM+ (Blade Element Method Helicopter) docker perf hit = 10.95%
Openfoam 7 (motorbike) docker perf hit = 6.67%
Openfoam 1912 (motorbike) docker perf hit = 12.23%
Openfoam 2012 (motorbike) docker perf hit = 3.95%

So is that a normal overhead to expect? I believe the delta will increase/decrease depending on simulations. Is it possible to get an almost 0% (or less than 0.1%) delta?

Here is the script I use to launch CentOS docker: My script