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

이상적으로는 cgroup이 실제 제한을 적용하지 않고 물리적 메모리만 사용하더라도 모든 곳에서 작동합니다. 목표는 거대한 프로세스로 인해 시스템에 과부하가 걸리는 것을 방지하는 것이기 때문입니다.

관련 정보