docker run --cpuset没有任何效果

时间:2015-07-29 13:59:54

标签: docker cpu-usage multicore resource-management cpuset

我通过将cpuset指定为1个核心来启动一个docker容器:

  .icon {
     display: inline-block;
     height: 24px;
     width: 24px;
     margin-right: 1px;
     image-rendering: crisp-edges;
     background-size: contain;
     &.login{  background: url(../img/ico-login.svg) no-repeat center   center;  }
     &.logout{  background: url(../img/ico-logout.svg) no-repeat center center;  }
  }

第二个将cpuset指定为4个核心:

docker run --cpuset-cpus="0"...

我在每个容器中启动了一个加载过程,我监视了两个容器的CPU消耗。

加载过程如下:

docker run --cpuset-cpus="0-3"...

我观察到两个容器之间的执行时间没有任何改善(没有加速)。

你知道为什么没有改进吗?具有4个核心的容器应该比1个核心容器运行得快吗?

NB: 使用top为1核心容器

ffmpeg input > output

使用top为4核心容器,docker随机选择4个核心中的一个来启动该过程。有时它会影响每个核心30%

CPU0%=100%
CPU1%=0
CPU2%=0
CPU3%=0

1 个答案:

答案 0 :(得分:4)

gzip即使可用,也不会使用多个核心。因此,该程序不适合进行有关CPU内核使用的性能测试。

请改用pzip。见Utilizing multi core for tar+gzip/bzip compression/decompression

另见How can I produce high CPU load on a Linux server?

方便地,Docker Hub上已经提供了stress工具,因此您可以通过运行验证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%使用率。