我试图弄清楚如何配置 SLURM,以便用户在使用 SLURM 命令(salloc、sbatch、srun)时需要指定 --account。实际上,我想禁用默认帐户行为。
有没有人找到一个简单的方法来做到这一点?
我有同样的要求来强制用户指定帐户,并且在找到了几种使用 slurm 实现它的方法之后,我决定用最短/最简单的解决方案来恢复这篇文章。
slurm lua 提交插件在应用默认帐户之前会看到作业描述。因此,您可以安装 slurm-lua 软件包,将“JobSubmitPlugins=lua”添加到 slurm.conf,重新启动 slurmctld,并直接测试该帐户是否是通过 job_submit.lua 脚本定义的(在您保存的任何位置创建脚本) slurm.conf;通常在 /etc/slurm/):
-- /etc/slurm/job_submit.lua to reject jobs with no account specified
function slurm_job_submit(job_desc, part_list, submit_uid)
if job_desc.account == nil then
slurm.log_error("User %s did not specify an account.", job_desc.user_id)
slurm.log_user("You must specify an account!")
return slurm.ERROR
end
return slurm.SUCCESS
end
function slurm_job_modify(job_desc, job_rec, part_list, modify_uid)
return slurm.SUCCESS
end
return slurm.SUCCESS
未指定帐户导致的错误如下所示:
# srun --pty bash
srun: error: You must specify an account!
srun: error: Unable to allocate resources: Unspecified error
# sbatch submit.slurm
sbatch: error: You must specify an account!
sbatch: error: Batch job submission failed: Unspecified error
这些错误也会打印到 slurmctld 日志中,以便您了解特定作业的资源分配问题:
[2017-09-12T08:32:00.697] error: job_submit.lua: User 0 did not specify an account.
[2017-09-12T08:32:00.697] _slurm_rpc_submit_batch_job: Unspecified error
作为附录,Slurm 提交插件指南只是适度有用,您可能会更好地检查Lua job_submit 插件实现以获得指导。
一种选择是将AccountingStorageEnforce
参数设置为associations
in slurm.conf
。
AccountingStorageEnforce 这控制对作业提交施加的基于关联的强制执行级别。有效选项是关联、限制、nojobs、nosteps、qos、safe 和 wckeys 的任意组合,或者所有事物的 all(除了 nojobs 和 nosteps,它们也必须被请求)。
通过强制关联,除非系统中存在相应的关联,否则不允许运行新作业。如果强制实施限制,则可以通过关联来限制用户与定义的任何作业大小或运行时间限制。
然后,使用该sacctmgr
命令,确保默认帐户无权访问已定义的分区。实际上,如果用户未指定有效帐户,他们将被拒绝提交。
另一种选择是编写自定义提交插件,您可以在 Lua 中编写该插件。在该脚本中,您可以检查是否设置了--account
参数,如果未设置,则使用自定义消息拒绝提交。