计算 Docker 容器中允许的 CPU 数量

pmr*_*pmr 15 virtualization linux scheduling docker

我的具体情况如下。我使用特定的cpuset启动一个docker容器:

docker run --cpuset-cpus="0-2" # ...
Run Code Online (Sandbox Code Playgroud)

在该容器内,我运行一个 shell 脚本作为入口点,该 shell 脚本将make在某个时候运行。我想弄清楚有多少工作(-j)。我当然可以通过环境传递已分配 CPU 的数量,但更喜欢自动检测它的方法。

我知道我可以使用taskset -c -p $$cat /proc/self/status | grep Cpus_allowed_list检索Cpus_allowed当前进程的 ,但我不知道如何检索允许的 CPU 的实际数量。我想避免解析这些命令的输出或摆弄Cpus_allowed掩码,但会在没有选项时这样做。

Bri*_*ian 22

您可以使用nprocshell 脚本工具。

所以它会-j$(nproc)在有问题的 make 命令行中。

  • @EvanBenn `--cpus="2"` 不限制处理单元的数量,相当于 `-cpu-period="100000" 和 --cpu-quota="200000"`。 (3认同)