我想弄清楚如何配置SLURM,以便用戶在使用SLURM命令(salloc,sbatch,srun)時需要指定--account。實際上,我想禁用默認帳戶行爲。配置SLURM,因此它需要用戶指定 - 帳戶
有沒有人發現了一個簡單的方法來做到這一點?
我想弄清楚如何配置SLURM,以便用戶在使用SLURM命令(salloc,sbatch,srun)時需要指定--account。實際上,我想禁用默認帳戶行爲。配置SLURM,因此它需要用戶指定 - 帳戶
有沒有人發現了一個簡單的方法來做到這一點?
一個選項是將AccountingStorageEnforce
參數設置爲associations
,slurm.conf
。
AccountingStorageEnforce 這控制着什麼水平的基於關聯的強制實施作業提交。有效的選項是 協會,限制,nojobs,nosteps,qos,safe和wckeys,或所有 的任意組合(期望nojobs和nosteps,它們必須被要求爲 )。
通過強制關聯,除非系統中存在相應的關聯,否則不允許新作業運行。如果限制被強制執行 用戶可以通過關聯限制到任何作業大小或運行時間 限制被定義。
然後,使用sacctmgr
命令,確保默認帳戶無權訪問定義的分區。實際上,如果用戶沒有指定有效的帳戶,他們將被拒絕提交。
另一種選擇是編寫自定義submission plugin,您可以在Lua中編寫該自定義代碼。在該腳本中,您可以檢查--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 Submit Plugins Guide只是適度有用,你可能會更好,只需檢查Lua job_submit plugin implementation的指導。