SLURM配置
- 一、先把 /etc/slurm-llnlgres.conf 改成这样
- 二、slurm.conf 也必须同步改
- 三、cgroup.conf
- 四、重启并检查
- 五、然后才是限制用户
- 六、脚本里这样写
- 提醒
还没有。你现在的 gres.conf 里没有写
Type=,两张卡都只是普通的gpu,脚本里写--gres=gpu:card1:1会报错(找不到这个类型)。一、先把 /etc/slurm-llnlgres.conf 改成这样
NodeName=yin-PowerEdge-R750 Name=gpu Type=card0 File=/dev/nvidia0 NodeName=yin-PowerEdge-R750 Name=gpu Type=card1 File=/dev/nvidia1二、slurm.conf 也必须同步改
你用的是/etc/slurm-llnl/目录(Debian/Ubuntu 的包),所以 slurm.conf 在:
nano/etc/slurm-llnl/slurm.conf找到你的 NodeName 那一行,加上 Gres(其余参数保持你原来的不动):
GresTypes=gpu NodeName=yin-PowerEdge-R750 Gres=gpu:card0:1,gpu:card1:1 ...原有参数... AccountingStorageTRES=gres/gpu,gres/gpu:card0,gres/gpu:card1 AccountingStorageEnforce=limits,qosgres.conf 和 slurm.conf 里的 Type 必须一致,否则节点会变成drain/inval。
三、cgroup.conf
nano/etc/slurm-llnl/cgroup.conf加上:
ConstrainDevices=yes四、重启并检查
systemctl restart slurmctld systemctl restart slurmdsudoscontrol reconfig scontrol shownodeyin-PowerEdge-R750|grep-igres应该看到Gres=gpu:card0:1,gpu:card1:1。如果节点状态异常:
sinfo-N-lscontrol shownodeyin-PowerEdge-R750|grepReason五、然后才是限制用户
sacctmgr modify user wherename=用户名setGrpTRES=gres/gpu:card0=0六、脚本里这样写
#SBATCH --gres=gpu:card1:1提醒
脚本里指定只是"选卡",不是"限制"。用户随时可以改成card0。真正禁止用户用 0 号卡的是第五步的GrpTRES=...card0=0,而这一步需要 slurmdbd 记账功能开着。先检查:
scontrol show config|grep-iAccountingStorageType如果输出是accounting_storage/none,第五步不会生效,把输出贴给我,我帮你看怎么开。
补充:如果你不想折腾记账
更简单的办法是直接在 gres.conf 里只暴露一张卡,让 Slurm 根本不知道 card0 的存在:
NodeName=yin-PowerEdge-R750 Name=gpu File=/dev/nvidia1
slurm.conf 里对应改成 Gres=gpu:1。这样所有用户只能用 1 号卡,不用 sacctmgr,也不用写 Type。缺点是这是对所有用户生效,不能只针对某个用户。
只想限制个别用户的话,就用前面的 GrpTRES 方案。