Cluster
我們如何配置 Lustre 在負載下阻止客戶端請求,而不是失敗?
我們在具有大約 200TB 儲存、12 個對象儲存目標(使用 QDR Infiniband 連接到 DDN 儲存系統)以及大約 160 個四核和八核計算筆記的集群中使用 Lustre。該系統的大多數使用者完全沒有問題,但我的任務是 I/O 密集型的。當我執行一個具有 250-500 個程序的陣列作業時,這些程序同時衝擊文件系統,通常我的 10 到 20 個程序會失敗。日誌文件表明 OST 上的負載超過 2,並且 Lustre 客戶端正在返回錯誤數據或失敗的
read()
函式呼叫。目前,我們解決我的問題的唯一方法是同時執行更少的作業。這並不令人滿意,因為無法提前知道我的工作負載是 CPU 密集型還是 I/O 密集型。此外,僅僅降低負載並不是執行超級電腦的方法:我們希望它在負載下執行時執行得更慢,而不是產生錯誤的答案。
我想知道如何配置 Lustre,以便客戶端在 OST 上的負載過高時阻塞,而不是讓客戶端獲取錯誤數據。
如何配置 Lustre 以使客戶端阻塞?
你有沒有想過添加更多的 OSS 並將 OST 分散開來?那應該減少負載。在這種情況下,你在做什麼樣的 I/O 模式?你有很多大文件,如果有,它們是條帶的嗎?預設條帶化為 1,這意味著每個文件僅駐留在 1 個 OST 上,可以在每個文件(創建時)或每個目錄(對於新文件)上更改。
您還可以嘗試增加光澤超時(lctl get_param/set_param),即:
- 超時
- ldlm_timeout