我正在写一个并行运行的库.该库通常在docker容器中使用.我想开始尽可能多的线程,因为我的docker容器已分配核心.
docker是否将CPU限制设置为某个环境变量?
例如,如果我的用户在创建容器时设置了两个CPU:
docker run --cpuset-cpus="2" myapp:latest
Run Code Online (Sandbox Code Playgroud)
(见这个问题)
如何2通过检查容器的状态从容器中取回数字?
tgo*_*gos 10
与--cpuset-cpus="2"您实际使用 1 cpu。例如,如果您有 4 个可用:{0,1,2,3}您必须通过用逗号分隔它们或定义一个范围来指定其中的 2 个。从文档:
--cpuset-cpus限制容器可以使用的特定 CPU 或内核。如果您有多个 CPU,则容器可以使用的以逗号分隔的列表或以连字符分隔的 CPU 范围。第一个 CPU 编号为 0。有效值可能是 0-3(使用第一个、第二个、第三个和第四个 CPU)或 1,3(使用第二个和第四个 CPU)。
nproc/sys/fs/cgroup/cpuset/cpuset.cpus小例子如下:
主持人:
$ nproc
4
Run Code Online (Sandbox Code Playgroud)具有 1 个 CPU 的容器:
$ docker run --rm -it --cpuset-cpus="2" ubuntu
root@73844de506db:/# nproc
1
root@73844de506db:/# cat /sys/fs/cgroup/cpuset/cpuset.cpus
2
Run Code Online (Sandbox Code Playgroud)具有 3 个 CPU 的容器:
$ docker run --rm -it --cpuset-cpus="0-2" ubuntu
root@4c3f841e613b:/# nproc
3
root@4c3f841e613b:/# cat /sys/fs/cgroup/cpuset/cpuset.cpus
0-2
Run Code Online (Sandbox Code Playgroud)| 归档时间: |
|
| 查看次数: |
3303 次 |
| 最近记录: |