Luk*_*ten 458 performance docker
我想全面了解Docker容器的运行时性能开销.我发现网络的参考传闻速度慢了~100μs.
我还发现运行时成本的参考值"可以忽略不计"和"接近于零",但我想更准确地了解这些成本是多少.理想情况下,我想知道Docker正在以性能成本和抽象的东西进行抽象而没有性能成本.网络,CPU,内存等
此外,如果存在抽象成本,是否有办法绕过抽象成本.例如,也许我可以在Docker中直接安装磁盘.
Ham*_*amy 405
这是一篇出色的2014年IBM研究论文,题为"虚拟机和Linux容器的更新性能比较",作者是Felter等人.它提供了裸机,KVM和Docker容器之间的比较.一般结果是Docker几乎与Native性能完全相同,并且在每个类别中都比KVM快.
例外的是Docker的NAT - 如果您使用端口映射(例如docker run -p 8080:8080),那么您可以预期延迟会受到轻微影响,如下所示.但是,现在可以docker run --net=host在启动Docker容器时使用主机网络堆栈(例如),该容器将与Native列执行相同的操作(如Redis延迟结果中所示).

他们还对一些特定服务(如Redis)进行延迟测试.您可以看到,20个以上的客户端线程,最高的延迟开销是Docker NAT,然后是KVM,然后是Docker主机/本机之间的粗略关系.

仅仅因为它是一篇非常有用的论文,这里有一些其他的数字.请下载它以获得完全访问权限.
看看磁盘IO:

现在看看CPU开销:

现在一些内存的例子(详细阅读论文,内存可能会特别棘手)

Cha*_*ffy 91
Docker不是虚拟化的 - 相反,它是内核对不同进程命名空间,设备命名空间等的支持的抽象; 一个命名空间本身并不比另一个命名空间更昂贵或效率低,所以实际上使Docker产生性能影响的是这些命名空间中实际存在的问题.
泊坞窗的选择中如何配置命名空间为它的容器具有成本,但是这些成本都直接与利益相关的条款 - 你可以给他们了,但这样做也放弃了相关的好处:
等等.这些成本在您的环境中实际影响了多少 - 使用您的网络访问模式,内存限制等 - 是一个难以提供通用答案的项目.
p4g*_*uru 19
这里的一些基准为Docker based memcached server与host native memcached server使用Twemperf基准测试工具https://github.com/twitter/twemperf与5000个连接和20K连接速率
基于docker的memcached的连接时间开销似乎与上述白皮书大致相当于原生速度的两倍.
Twemperf Docker Memcached
Connection rate: 9817.9 conn/s
Connection time [ms]: avg 341.1 min 73.7 max 396.2 stddev 52.11
Connect time [ms]: avg 55.0 min 1.1 max 103.1 stddev 28.14
Request rate: 83942.7 req/s (0.0 ms/req)
Request size [B]: avg 129.0 min 129.0 max 129.0 stddev 0.00
Response rate: 83942.7 rsp/s (0.0 ms/rsp)
Response size [B]: avg 8.0 min 8.0 max 8.0 stddev 0.00
Response time [ms]: avg 28.6 min 1.2 max 65.0 stddev 0.01
Response time [ms]: p25 24.0 p50 27.0 p75 29.0
Response time [ms]: p95 58.0 p99 62.0 p999 65.0
Run Code Online (Sandbox Code Playgroud)
Twemperf Centmin Mod Memcached
Connection rate: 11419.3 conn/s
Connection time [ms]: avg 200.5 min 0.6 max 263.2 stddev 73.85
Connect time [ms]: avg 26.2 min 0.0 max 53.5 stddev 14.59
Request rate: 114192.6 req/s (0.0 ms/req)
Request size [B]: avg 129.0 min 129.0 max 129.0 stddev 0.00
Response rate: 114192.6 rsp/s (0.0 ms/rsp)
Response size [B]: avg 8.0 min 8.0 max 8.0 stddev 0.00
Response time [ms]: avg 17.4 min 0.0 max 28.8 stddev 0.01
Response time [ms]: p25 12.0 p50 20.0 p75 23.0
Response time [ms]: p95 28.0 p99 28.0 p999 29.0
Run Code Online (Sandbox Code Playgroud)
memtier_benchmark docker Memcached
4 Threads
50 Connections per thread
10000 Requests per thread
Type Ops/sec Hits/sec Misses/sec Latency KB/sec
------------------------------------------------------------------------
Sets 16821.99 --- --- 1.12600 2271.79
Gets 168035.07 159636.00 8399.07 1.12000 23884.00
Totals 184857.06 159636.00 8399.07 1.12100 26155.79
Run Code Online (Sandbox Code Playgroud)
memtier_benchmark Centmin Mod Memcached
4 Threads
50 Connections per thread
10000 Requests per thread
Type Ops/sec Hits/sec Misses/sec Latency KB/sec
------------------------------------------------------------------------
Sets 28468.13 --- --- 0.62300 3844.59
Gets 284368.51 266547.14 17821.36 0.62200 39964.31
Totals 312836.64 266547.14 17821.36 0.62200 43808.90
Run Code Online (Sandbox Code Playgroud)