我正在尝试弄清楚如何配置SLURM,以便用户在使用SLURM命令(salloc,sbatch,srun)时需要指定--account。实际上我想禁用默认帐户行为。
有没有人找到一个简单的方法来做到这一点?
答案 0 :(得分:1)
我有同样的要求强迫用户指定帐户,在找到几种方法来实现它后,我决定用最短/最简单的解决方案重振这篇文章。
slurm lua submit plugin会在应用默认帐户之前查看作业说明。因此,您可以安装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 Submit Plugins Guide只是中等有用,你可能会更好地只是检查Lua job_submit plugin implementation作为指导。
答案 1 :(得分:0)
一种选择是将AccountingStorageEnforce
参数设置为associations
中的slurm.conf
。
AccountingStorageEnforce 这可以控制对作业提交施加的基于关联的强制执行级别。有效选项是任意组合 协会,限制,nojobs,nosteps,qos,safe和wckeys,或者全部 对于所有事情(期望nojobs和nosteps,他们必须被要求作为 孔)。
通过强制关联,除非系统中存在相应的关联,否则不允许运行新作业。如果强制执行限制 用户可以通过关联来限制任何工作大小或运行时间 限制被定义。
然后,使用sacctmgr
命令,确保默认帐户无权访问已定义的分区。实际上,如果用户未指定有效帐户,将拒绝提交。
另一种选择是编写自定义submission plugin,您可以在Lua中编写。在该脚本中,您可以检查是否已设置--account
参数,如果不是,则可以使用自定义消息拒绝提交。