本頁介紹如何最佳化 Linux NFS 用戶端對電子設計自動化 (EDA) 工作負載的存取。本文檔面向負責配置 Linux 運算節點和管理高效能 EDA 環境的儲存管理員、雲端架構師和系統工程師。 Google Cloud。
用戶端最佳做法
Linux 節點和互動式虛擬機器透過 NFS 掛載 NetApp 磁碟區。 客戶端調優不會增加磁碟區吞吐量限制,但有助於防止元資料風暴、單一儲存端點上的插槽過載以及大型庫上不良的順序讀取行為。
請依以下順序配置客戶端:
核心並發性(掛載前):Linux NFS 並發性
對於 Cluster Toolkit 和 Slurm 計算鏡像,在首次掛載之前,請在計算鏡像或啟動腳本中包含槽表設定。
掛載選項(掛載時):Linux NFS 掛載選項
預讀(掛載後,可選):Linux NFS 預讀
有關 NFS 客戶端優化的更多信息,請參閱 針對 NetApp Volumes 優化 Linux NFS 客戶端。
有關掛載命令和匯出策略,請參閱 連接 NFS 用戶端。 若要將客戶端分佈在大容量磁碟區上,請參閱 使用多個儲存端點連接大容量磁碟區 和 EDA 架構模式。
最佳化用戶端眾多的 EDA 伺服器陣列
對於擁有數百或數千個共享相同匯出的運算節點的大規模部署,請使用下列設定。這些配置與單一虛擬機器基準測試設定不匹配,後者通常在單一主機上使用 nconnect=16 掛載選項。
| 區 | 推薦起點 |
|---|---|
| 通訊協定 | 除非您需要 NFSv4.1 功能,否則請使用 NFSv3 (vers=3)。 |
| 並發性(NFSv3) | 每個客戶端的 RPC 插槽表較小;例如,/etc/modprobe.d/sunrpc.conf 中只有 8 個條目。 |
| 連線 | 每個客戶端每個儲存端點一個 TCP 連線;不要使用 nconnect |
| 大容量磁碟區 | 透過 DNS 或靜態群組掛載,將節點分散到 多個儲存端點 |
| 傳輸大小 | 設定 rsize=262144 和 wsize=262144 |
| 可靠性 | 使用 hard、tcp、timeo=600 或 Google Cloud 控制台預設值 |
| 中繼資料負載 | 如果應用程式允許,請在程式庫和 Scratch 中使用 noatime |
| 鎖定 (NFSv3) | 如果不使用諮詢鎖定,且未設定網路狀態監控器 (NSM),請使用 nolock |
| 預先讀取 | 如果循序讀取速度緩慢,請在掛接後增加讀取為主的程式庫 |
使用 nfsiostat 指令和「監控效能」一節所述指標,執行代表一般生產工作負載的回歸測試,驗證設定。
依資料層級最佳化用戶端
下表列出客戶關注的領域,以及各資料層級的典型掛接選項:
| 級別 | 以客戶為中心 | 與掛接相關的常見選項 |
|---|---|---|
| 程式庫 | 減少 GETATTR 和中繼資料往返次數;循序讀取大型檔案 |
vers=3、hard、tcp、noatime、rsize 和 wsize;只有在資料大多為讀取作業且一致性規則允許時,才考慮 actimeo=600 和 nocto |
| 暫存 | 多位作家;連貫性很重要 | vers=3、hard、tcp 和 noatime;請勿使用積極的屬性快取;每個節點的版位數量應盡量減少 |
| 工具 | 大部分為讀取作業,與程式庫類似 | vers=3、hard、tcp、noatime、rsize=262144 和 wsize=262144;只有在資料大多為讀取作業且一致性規則允許時,才考慮 actimeo=600 和 nocto;在叢集映像檔中維持穩定的掛接選項 |
| 首頁 | 混合小型 I/O | Google Cloud 控制台預設值通常就足夠了;如果 home 與 scratch 共用一個端點,則使用較低的插槽。 |
僅在策略要求時才使用 Kerberos(sec=krb5、krb5i 或 krb5p)。
不要將 Kerberos 與 nconnect 結合使用。有關更多信息,請參閱 Linux NFS 掛載選項。
後續步驟
- 有關基準測試結果,請參閱電子設計自動化工作負載基準測試。