1

我在 HPC 环境中工作,我正在使用 SLURM 将我的工作提交到队列中。我正在编写自己的内存缓存机制,因此我想知道每个节点有多少内存可用,以便我可以扩展或重用空间。

有没有办法知道有多少内存可用。SLURM 是否设置任何环境变量。

4

2 回答 2

3

几个选项:

如果设置了cgroups,您只需读取文件即可获取该信息

 /cgroup/memory/slurm/uid_<UISERID>/job_<JOBID>/memory.limit_in_bytes

在每个节点上。

否则,可以按照@siserte 的建议使用SLURM API

或者使用getrlimit(2)查询rlimits也应该有效。

于 2018-03-23T15:09:38.563 回答
1

在我的问题中,我错误地说我想访问每个节点可用的内存。我的 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 所述

于 2018-03-24T00:04:59.130 回答