我对Docker非常陌生,最近编写了一个Dockerfile来容器化数学优化求解器SuiteOPT。但是,在测试几个问题的优化求解器时,我发现在docker内部的性能比外部慢。例如,一个线性规划(demoLP.py)的演示问题在我的机器上需要大约12秒才能解决,但在docker中需要大约35秒。我已经花费了大约一周的时间查看博客和stackoverflow帖子以寻找解决方案,但无论我做出什么更改,docker的计时始终为大约35秒。是否有人知道可能发生了什么,或者能否指导我正确的方向?
以下是优化求解器Docker Hub和PYPI页面的链接: SuiteOPT Docker Hub SuiteOPT PYPI 页面 < p > < em > 编辑1 :由于@user3666197的评论,我添加了一个额外的想法。虽然我并不期望SuiteOPT在docker容器中表现得很好,但我对这个演示问题的~3倍减速感到惊讶。也许问题可以重新阐述如下:< strong > 如何确定这种减速纯粹是因为我正在执行CPU-RAM-I/O密集代码而不是由于我的Dockerfile配置存在其他问题所致?
以下是优化求解器Docker Hub和PYPI页面的链接: SuiteOPT Docker Hub SuiteOPT PYPI 页面 < p > < em > 编辑1 :由于@user3666197的评论,我添加了一个额外的想法。虽然我并不期望SuiteOPT在docker容器中表现得很好,但我对这个演示问题的~3倍减速感到惊讶。也许问题可以重新阐述如下:< strong > 如何确定这种减速纯粹是因为我正在执行CPU-RAM-I/O密集代码而不是由于我的Dockerfile配置存在其他问题所致?
注意:容器化的目的是为了为用户提供一种简单的方式来开始使用Python中的优化软件。虽然优化软件可在PYPI上获得,但有许多非Python依赖项可能会导致人们希望在不遇到安装问题的情况下使用该软件时出现问题。
perf
这样的工具,通过分析您的具体情况来深入挖掘。例如在这篇文章中:Another reason why your Docker containers may be slow,性能不佳是由于用于记录日志的库而导致的。要直观地查看perf record ...
捕获的内容,请查看 Flame Graphs 和 Netflix FlameScope。 - tgogos--net=host
的成本差异,您可以在此问题中找到:在Docker容器中运行nginx时出现性能问题。我不得不运行测试两次,做2个不同的perf record ...
并比较后来2个不同的火焰图的结果。我认为当容器拥有自己的网络堆栈时花费的额外时间在图片中是显而易见的。 - tgogos