我的具体情况如下。 我使用特定的cpuset启动docker容器:
docker run --cpuset-cpus="0-2" # ...
在那个容器里面,我运行一个shell脚本作为入口点,这个shell脚本会在某个时候运行make 。 我想知道一个很好的工作( -j )会是多less。 我当然可以通过环境分配CPU的数量,但自动的方式来检测它是非常优选的。
我知道我可以使用taskset -c -p $$或cat /proc/self/status | grep Cpus_allowed_list cat /proc/self/status | grep Cpus_allowed_list检索当前进程的Cpus_allowed ,但我不知道如何检索允许的CPU的实际数量。 我想避免parsing这些命令的输出或者Cpus_allowed掩码,但是会在选项不存在时执行。
您可以使用nproc shell脚本工具。
所以在make命令行中会出现-j$(nproc) 。