저는 자체 최대 액세스 가능 메모리를 알아야 하는 일부 소프트웨어를 개발 중입니다. Linux에서는 cgroup에 따라 다릅니다. 제가 수집한 바에 따르면 프로세스는 /proc/self/cgroup
현재 메모리 cgroup 중 하나를 읽어 자신의 메모리 cgroup을 결정할 수 있습니다. 그러나 실제로는 cgroup 계층 구조가 있으며 프로세스는 모든 cgroup에 의해 제한됩니다. 현재 프로세스의 모든 cgroup에 적용되는 최소 여유 메모리를 결정하는 방법은 무엇입니까?
예를 들어 Slurm을 사용하는 경우 cat /proc/self/cgroup
다음을 반환합니다.
[...]
5:memory:/slurm/uid_3119/job_13759394/step_batch/task_0
[...]
/sys/fs/cgroup/memory/slurm/uid_3119/job_13759394/step_batch/task_0/memory.limit_in_bytes
따라서 이것이 적용 가능한 메모리 제한을 표시한다고 생각할 수도 있습니다 . 그러나 이 경우 /sys/fs/cgroup/memory/slurm/uid_3119/job_13759394/memory.limit_in_bytes
더 제한적이므로 관련된 것은 cgroup입니다. 이 경우 가장 엄격한 메모리 제한을 찾기 위해 어떤 작업 흐름을 적용할 수 있습니까?
cgroup 관련 유틸리티가 많이 있는 것 같지만 systemd
내 애플리케이션이 가능한 모든 Linux 시스템에서 실행되어야 하기 때문에 시스템에 대한 외부 종속성이나 가정을 피하고 싶습니다.