可用内存,尊重 cgroup

可用内存,尊重 cgroup

我正在尝试准确扩展构建过程的并行性,其中一组调用使用大量内存。

有没有一个好的工具可以找出当前进程实际可用的内存量,包括 cgroup 限制?

对于CPU来说,nproc做了合理的工作:

$ docker run --rm -it debian nproc
8
$ docker run --cpuset-cpus 1 --rm -it debian nproc
1

我正在寻找等效的方法来查找当前 cgroup 实际可用的内存量(假设如果有人想要限制我的构建过程,则不必共享 cgroup),到目前为止我最好的方法是尝试和错误:

$ docker run --memory-swap 512M -m 512M --rm debian dd if=/dev/zero of=/dev/null bs=100M count=1
1+0 records in
1+0 records out
$ docker run --memory-swap 512M -m 512M --rm debian dd if=/dev/zero of=/dev/null bs=1G count=1
geier@lime:~$ echo $?
137

理想情况下,即使 cgroups 没有施加实际限制并且仅使用物理内存,这也适用于任何地方,因为目标是避免巨大进程使机器过载。

相关内容