我的具体场景如下。我启动一个具有特定 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
您可以使用nproc
shell 脚本工具。
因此它会出现-j$(nproc)
在所讨论的 make 命令行中。