Я работаю в среде HPC и использую SLURM для отправки своей работы в очередь. Я пишу свой собственный механизм кэширования памяти и, следовательно, я хочу знать, сколько памяти доступно для каждого узла, чтобы я мог расширить или повторно использовать пространство.
Есть ли способ узнать, сколько памяти доступно.
Устанавливает ли SLURM какие-либо переменные окружения.
Несколько вариантов:
Если контрольные группы настройки, вы можете получить эту информацию, просто читая файл
/cgroup/memory/slurm/uid_<UISERID>/job_<JOBID>/memory.limit_in_bytes
на каждом узле.
В противном случае, используя SLURM API как предложено @siserte может работать.
Или запросить rlimits с помощью getrlimit (2) также должен работать.
В своем вопросе я неправильно указал, что хочу получить доступ к памяти, доступной для каждого узла. Мои задачи MPI сопоставлены с 1 процессором, поэтому мне действительно нужно было получить доступ к памяти, доступной для каждого процессора.
Если вы отправляете работу через sbatch
вы можете получить доступ --mem-per-cpu
используя переменную окружения SLURM_MEM_PER_CPU
, документировано здесь: https://slurm.schedmd.com/sbatch.html
Если требуется память в узле, API SLURM задокументирован в https://slurm.schedmd.com/api.html могут быть использованы, как упомянуто @siserte и @damienfrancois