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

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

我的具体场景如下。我启动一个具有特定 cpuset 的 docker 容器:

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

在该容器中,我运行一个 shell 脚本作为入口点,并且该 shell 脚本将make在某个时刻运行。我想弄清楚作业数量(-j)是多少比较合适。我当然可以通过环境传递分配的 CPU 数量,但更希望采用自动检测方法。

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

答案1

您可以使用nprocshell 脚本工具。

因此它会出现-j$(nproc)在所讨论的 make 命令行中。

相关内容