【发布时间】:2016-08-22 22:47:39
【问题描述】:
我们刚刚编写了一个 CPU 密集型应用程序来对 Docker 映像进行基准测试。这是一个近似于 Pi 小数的 Java 应用程序。
- 如果我们运行
java -jar superpi.jar,它会向所有核心施加压力并且需要 30 秒 - 如果我们运行
docker run fewlaps/superpi,它只会对四个核心中的两个核心施加压力,并且需要 70 秒
Docker 映像正在运行 .jar,就像我们在主机上运行它时一样。为什么 Docker 镜像不如本地运行 .jar 快?我们预计在本地运行它和在 Docker 上运行它会有一些差异,但是这个过程需要双倍的时间。
有没有办法要求 Docker 使用所有的 CPU?
顺便说一句,该项目在 GitHub 上发布:Fewlaps/SuperPI
【问题讨论】:
-
30ms 对于像 JVM 启动/JIT 编译这样繁重的事情来说是相当短的时间。结果如何随着您的基准测试的运行时间而扩展? (这可以让您在基准达到稳定状态之前估算启动开销,无论哪种情况都尽可能快地运行)。
-
对不起!我完全弄错了结果。我说的是秒,而不是毫秒。感谢@PeterCordes 的快速回答!
-
这是 Hans 提供的有用链接。如果您使用虚拟机运行 Docker 映像,我还没有想到要问的另一件事。如果是,VM 配置控制 CPU 内核的最大数量。
-
不,我刚刚安装了 Docker,它并没有要求任何 VM 软件。好像是由 Docker 自己管理的。现在我正在阅读在 virtualbox 上创建 docker-machine 的文档。可能在那里我可以创建一个没有任何 CPU 限制的 docker-machine。
标签: performance docker benchmarking