針對電子設計自動化工作負載,最佳化 Linux NFS 用戶端存取權

本頁介紹如何最佳化 Linux NFS 用戶端對電子設計自動化 (EDA) 工作負載的存取。本文檔面向負責配置 Linux 運算節點和管理高效能 EDA 環境的儲存管理員、雲端架構師和系統工程師。 Google Cloud。

用戶端最佳做法

Linux 節點和互動式虛擬機器透過 NFS 掛載 NetApp 磁碟區。 客戶端調優不會增加磁碟區吞吐量限制,但有助於防止元資料風暴、單一儲存端點上的插槽過載以及大型庫上不良的順序讀取行為。

請依以下順序配置客戶端:

  1. 核心並發性(掛載前):Linux NFS 並發性

    對於 Cluster Toolkit 和 Slurm 計算鏡像,在首次掛載之前,請在計算鏡像或啟動腳本中包含槽表設定。

  2. 掛載選項(掛載時):Linux NFS 掛載選項

  3. 預讀(掛載後,可選):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=262144wsize=262144
可靠性 使用 hardtcptimeo=600 或 Google Cloud 控制台預設值
中繼資料負載 如果應用程式允許,請在程式庫和 Scratch 中使用 noatime
鎖定 (NFSv3) 如果不使用諮詢鎖定,且未設定網路狀態監控器 (NSM),請使用 nolock
預先讀取 如果循序讀取速度緩慢,請在掛接後增加讀取為主的程式庫

使用 nfsiostat 指令和「監控效能」一節所述指標,執行代表一般生產工作負載的回歸測試,驗證設定。

依資料層級最佳化用戶端

下表列出客戶關注的領域,以及各資料層級的典型掛接選項:

級別 以客戶為中心 與掛接相關的常見選項
程式庫 減少 GETATTR 和中繼資料往返次數;循序讀取大型檔案 vers=3hardtcpnoatimersizewsize;只有在資料大多為讀取作業且一致性規則允許時,才考慮 actimeo=600nocto
暫存 多位作家;連貫性很重要 vers=3hardtcpnoatime;請勿使用積極的屬性快取;每個節點的版位數量應盡量減少
工具 大部分為讀取作業,與程式庫類似 vers=3hardtcpnoatimersize=262144wsize=262144;只有在資料大多為讀取作業且一致性規則允許時,才考慮 actimeo=600nocto;在叢集映像檔中維持穩定的掛接選項
首頁 混合小型 I/O Google Cloud 控制台預設值通常就足夠了;如果 home 與 scratch 共用一個端點,則使用較低的插槽。

僅在策略要求時才使用 Kerberos(sec=krb5krb5ikrb5p)。 不要將 Kerberos 與 nconnect 結合使用。有關更多信息,請參閱 Linux NFS 掛載選項

後續步驟