Linux의 프로세스에 적용된 모든 cgroup을 쿼리하기 위한 API

Linux의 프로세스에 적용된 모든 cgroup을 쿼리하기 위한 API

저는 자체 최대 액세스 가능 메모리를 알아야 하는 일부 소프트웨어를 개발 중입니다. 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 시스템에서 실행되어야 하기 때문에 시스템에 대한 외부 종속성이나 가정을 피하고 싶습니다.

관련 정보