1

我试图弄清楚如何配置 SLURM,以便用户在使用 SLURM 命令(salloc、sbatch、srun)时需要指定 --account。实际上,我想禁用默认帐户行为。

有没有人找到一个简单的方法来做到这一点?

4

2 回答 2

1

我有同样的要求来强制用户指定帐户,并且在找到了几种使用 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 插件实现以获得指导。

于 2017-09-12T12:42:09.417 回答
0

一种选择是将AccountingStorageEnforce参数设置为associationsin slurm.conf

AccountingStorageEnforce 这控制对作业提交施加的基于关联的强制执行级别。有效选项是关联、限制、nojobs、nosteps、qos、safe 和 wckeys 的任意组合,或者所有事物的 all(除了 nojobs 和 nosteps,它们也必须被请求)。

通过强制关联,除非系统中存在相应的关联,否则不允许运行新作业。如果强制实施限制,则可以通过关联来限制用户与定义的任何作业大小或运行时间限制。

然后,使用该sacctmgr命令,确保默认帐户无权访问已定义的分区。实际上,如果用户未指定有效帐户,他们将被拒绝提交。

另一种选择是编写自定义提交插件,您可以在 Lua 中编写该插件。在该脚本中,您可以检查是否设置了--account参数,如果未设置,则使用自定义消息拒绝提交。

于 2014-09-07T21:21:49.560 回答