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


14

我的具体情况如下。我使用特定的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-打印可用的处理单元数
Brian

@Brian太简单了。
2015年

Answers:


19

您可以使用nproc外壳脚本工具。

因此它将-j$(nproc)在有问题的make命令行中。


1
“ docker run --rm --cpus 2 debian nproc”-> 8吗?
埃文·本

2
@EvanBenn --cpus="2"并不限制处理单元的数量,它等效于-cpu-period="100000" and --cpu-quota="200000"
布莱恩
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.