docker run --cpuset 没有任何效果
Posted
技术标签:
【中文标题】docker run --cpuset 没有任何效果【英文标题】:docker run --cpuset is not having any effect 【发布时间】:2015-10-20 13:35:52 【问题描述】:我通过将 cpuset 指定为 1 个核心来启动一个 docker 容器:
docker run --cpuset-cpus="0"...
第二个,将 cpuset 指定为 4 个核心:
docker run --cpuset-cpus="0-3"...
我在每个容器中启动了一个加载过程,并监控了两个容器的 CPU 消耗。
加载过程如下:
ffmpeg input > output
我观察到两个容器之间的执行时间没有改善(没有加速)。
您知道为什么没有改进吗? 4 核容器应该比 1 核容器运行得更快吧?
注意: 将顶部用于 1core 容器
CPU0%=100%
CPU1%=0
CPU2%=0
CPU3%=0
使用 top 作为 4core 容器,docker 随机选择 4 个核心之一来启动进程。有时它会影响每个核心的 30%
CPU0%=0 CPU0%=30% CPU0%=0
CPU1%=100% or CPU0%=30% or CPU0%=0
CPU2%=0 CPU0%=30% CPU0%=0
CPU3%=0 CPU0%=30% CPU0%=100%
【问题讨论】:
【参考方案1】:gzip
不使用多个内核,即使它们可用。因此,该程序不太适合针对 CPU 内核的使用进行性能测试。
请改用pzip。见Utilizing multi core for tar+gzip/bzip compression/decompression
另见How can I produce high CPU load on a Linux server?
stress
工具已经在 Docker Hub 上可用,因此您可以通过运行验证 docker --cpuset-cpus
选项是否正常工作:
docker run --rm -it --cpuset-cpus="0-3" jess/stress --cpu 4
→ 您将见证所有 4 个核心都达到 100% 的使用率。
然后通过运行:
docker run --rm -it --cpuset-cpus="0-1" jess/stress --cpu 4
→ 您将见证只有 2 个核心达到 100% 的使用率。
【讨论】:
对于 ffmpeg 库是一样的...如何优化 CPU 消耗以在多核系统中使用 100% 的每个内核?ffmpeg input.avi ouput.mp3
这是另一个问题。
问题是我不想使用Docker Hub提供的压力工具。我想强调 ffmpeg 之类的 C 库,每个内核 100%。
这是一个非常具体的案例,值得提出自己的问题。在 google 中快速搜索将显示 ffmpeg 进程可以或不能使用多个线程,具体取决于您为编码指定的编解码器。所以你应该问一个关于ffmpeg的具体使用和你打算使用的编解码器的问题以上是关于docker run --cpuset 没有任何效果的主要内容,如果未能解决你的问题,请参考以下文章
在 Docker 中混合 cpu-shares 和 cpuset-cpus
Docker命令RUN无法使用git init --bare吗?