私は独自の最大アクセス可能メモリを知る必要があるいくつかのソフトウェアを開発しています。 Linuxでは、cgroupによって異なります。私が収集したところ、プロセスは/proc/self/cgroup
現在のメモリcgroupの1つを読み取って自分のメモリ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システムで実行する必要があるため、システムへの外部依存関係や仮定を避けたいと思います。