首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >单端口容器在cpu性能上略优于主机:为什么?

单端口容器在cpu性能上略优于主机:为什么?
EN

Stack Overflow用户
提问于 2015-12-31 09:25:59
回答 1查看 1.1K关注 0票数 10

我进行了一个实验,比较了一个码头容器的CPU性能和它正在运行的主机的CPU性能。

病例

A:在主机上运行的基准程序(Intel i5,2.6 GHz,2处理器,2核)

B:在同一主机上运行的Docker容器上运行的基准程序。(对B中的容器没有资源限制,即容器本身拥有所有1024个cpu共享。没有其他容器正在运行)

基准程序:数值积分

数值积分:是大规模并行程序的一个标准示例。使用示例程序库编写了一个用C++编写的标准数值积分OpenMP (已经进行了正确性测试)。该程序由程序中的可用线程从1-11中运行11次。这11次运行是针对每个案例A和B进行的,因此总共对主机执行了22次,对于容器执行了11次。

X轴:程序中可用的线程数

Y轴:表示性能,它是时间的反比(用一个常数乘以时间的反比来运行程序)。

结果

观测

在主机上运行的对接器容器的性能略优于主机。本试验在2个不同的寄主上重复4-5次,每次,容器性能曲线略高于主机性能曲线。

问题

当停靠器容器在主机上运行时,容器的性能如何高于主机?

可能的原因:更高优先级的码头cgroup进程?

我假设容器的cgroup中的进程可能获得更高的进程优先级,从而使在容器中运行的程序比程序直接在主机上运行时的性能更高。这听起来像是一个可能的解释吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-01-02 00:45:21

感谢@miraculixx和@Zboson的评论,这帮助我理解了容器的性能并不比主机好。奇怪的结果(图)是由于在执行实验时在主机和容器上使用不同的编译器版本造成的。当Case A&B在更新到容器和主机中相同版本的编译器后再次运行时,结果如下:

没有优化标志的

带有优化标志的-O3

观测

可以观察到,容器具有与主机相同或稍差的性能;这在直觉上是有意义的。(如果没有优化,就会出现一些差异)

P.S.对误导性问题的标题表示歉意。我不知道性能差异可能是由于不同的编译器版本,直到评论发布。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34544127

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档