2014-09-04 110 views

回答

0

一個選項是將AccountingStorageEnforce參數設置爲associations,slurm.conf

AccountingStorageEnforce 這控制着什麼水平的基於關聯的強制實施作業提交。有效的選項是 協會,限制,nojobs,nosteps,qos,safe和wckeys,或所有 的任意組合(期望nojobs和nosteps,它們必須被要求爲 )。

通過強制關聯,除非系統中存在相應的關聯,否則不允許新作業運行。如果限制被強制執行 用戶可以通過關聯限制到任何作業大小或運行時間 限制被定義。

然後,使用sacctmgr命令,確保默認帳戶無權訪問定義的分區。實際上,如果用戶沒有指定有效的帳戶,他們將被拒絕提交。

另一種選擇是編寫自定義submission plugin,您可以在Lua中編寫該自定義代碼。在該腳本中,您可以檢查--account參數是否已設置,如果不是,則拒絕提交自定義消息。

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 Submit Plugins Guide只是適度有用,你可能會更好,只需檢查Lua job_submit plugin implementation的指導。

相關問題