일련의 호출이 많은 메모리를 사용하는 빌드 프로세스의 병렬성을 정확하게 확장하려고 합니다.
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이 실제 제한을 적용하지 않고 물리적 메모리만 사용하더라도 모든 곳에서 작동합니다. 목표는 거대한 프로세스로 인해 시스템에 과부하가 걸리는 것을 방지하는 것이기 때문입니다.