我在 HPC 环境中工作,我正在使用 SLURM 将我的工作提交到队列中。我正在编写自己的内存缓存机制,因此我想知道每个节点有多少内存可用,以便我可以扩展或重用空间。
有没有办法知道有多少内存可用。SLURM 是否设置任何环境变量。
我在 HPC 环境中工作,我正在使用 SLURM 将我的工作提交到队列中。我正在编写自己的内存缓存机制,因此我想知道每个节点有多少内存可用,以便我可以扩展或重用空间。
有没有办法知道有多少内存可用。SLURM 是否设置任何环境变量。
几个选项:
如果设置了cgroups,您只需读取文件即可获取该信息
/cgroup/memory/slurm/uid_<UISERID>/job_<JOBID>/memory.limit_in_bytes
在每个节点上。
否则,可以按照@siserte 的建议使用SLURM API。
或者使用getrlimit(2)查询rlimits也应该有效。
在我的问题中,我错误地说我想访问每个节点可用的内存。我的 MPI 任务映射到 1 个 cpu,所以我实际上需要访问每个 cpu 可用的内存。
如果您通过提交作业,sbatch
您可以--mem-per-cpu
使用环境变量访问SLURM_MEM_PER_CPU
,此处记录:https ://slurm.schedmd.com/sbatch.html
如果需要节点中可用的内存,可以使用https://slurm.schedmd.com/api.html中记录的 SLURM api ,如 @siserte 和 @damienfrancois 所述