本頁說明建議搭配 H4D 計算執行個體和 Cloud RDMA 執行的 MPI 應用程式使用的 PSM3 設定參數。
如要瞭解所有可用的 PSM3 設定參數,請參閱《Intel Ethernet Fabric Suite Host Software User Guide》。
適用於資料流量突增或 UD 流量較大的應用程式
如果應用程式突然湧入大量流量,或過度依賴不可靠的資料包 (UD) 模式,可能會導致網路介面不堪負荷,進而造成來源端封包遺失。
- 解決方案:設定以信用為準的背壓系統,控管傳輸爆量情形,並防止傳輸層發生封包遺失問題。Compute Engine H4D 執行個體總共提供 256 個抵免額。建議您為每個 vCPU 分配至少 1 個固定點數,並將剩餘容量放在共用集區中。
建議設定 (每個節點 192 個等級的範例):如果每個節點有 192 個等級,且每個 vCPU 獲得 1 個固定點數,則共用集區為 256 - 192 = 64。
IRDMA_SHARED_UD_CREDITS=64 IRDMA_TRANSPARENT_UD_QD_OVERRIDE=1
如果信用額度總數超過建議上限,可能會導致來源端傳輸中斷。雖然超額訂閱 (將總點數設為高於可用點數) 可提升工作負載的效能,但前提是工作負載的流量模式穩定且密度低。如果工作負載的特徵是突然爆量或 UD 流量過高,超額訂閱通常會降低效能。
可用於調整 Cloud RDMA 效能的環境變數如下:
- IRDMA_SHARED_UD_CREDITS:指定單一節點上所有程序可用的 UD 抵免額全域集區大小。如果值為 64,表示有 64 個共用保留額度,任何程序都可能使用。
- IRDMA_TRANSPARENT_UD_QD_OVERRIDE:限制使用
irdma驅動程式中 UD 的佇列配對 (QP) 佇列深度。設為1時,它會與IRDMA_SHARED_UD_CREDITS搭配運作,強制執行傳輸層背壓,並防止在多程序負載過重時,傳輸佇列溢位。
高可靠性或高記憶體需求應用程式的建議
為確保接收端 UD 封包的可靠性,RDMA 應用程式必須分配足夠的接收緩衝區,並在完成佇列 (CQ) 中保留可用時段。
高可靠性的標準建議:使用下列環境變數指定較高的佇列深度,盡量避免接收佇列 (RX) UD 封包遭到捨棄。
PSM3_NUM_RECV_WQES=32767 PSM3_NUM_RECV_CQES=65536高記憶體需求例外狀況:如果應用程式面臨記憶體不足 (OOM) 問題,請縮減佇列大小,但維持這兩個值之間的比例不變。
高效能共軛梯度 (HPCG) 等應用程式需要大量記憶體。使用高可靠性標準建議的設定可能會導致 OOM 錯誤。
PSM3_NUM_RECV_WQES會決定每個本機端點分配的 RX 工作佇列項目 (WQE) 和急切跳轉緩衝區數量。值越大,記憶體負荷就越大。
您可以使用的環境變數包括:
PSM3_NUM_RECV_WQES:設定要分配的 RX WQE 數量。UD QP 的大小為PSM3_NUM_RECV_WQES + 1032 WQEs。這個參數也會設定為每個本機端點分配的 UD 接收急切跳動緩衝區數量 (每個緩衝區的大小為PSM3_MTU)。PSM3_NUM_RECV_CQES:控制接收作業的完成佇列項目 (CQE) 數量。這個參數可確保完成佇列中一律有可用時段,進而確保接收端 UD 封包的可靠性。較高的佇列深度 (例如 65536) 有助於避免 RX UD 封包捨棄,但會使用記憶體,且可能導致耗用大量記憶體的應用程式發生 OOM 錯誤。
不重複使用緩衝區的應用程式建議
部分應用程式 (例如高效能 LINPACK (HPL)) 會頻繁分配及釋放暫時通訊緩衝區,而不是保留及重複使用。這種持續要求和釋放記憶體的循環,會迫使系統不斷註冊和取消註冊記憶體頁面,造成嚴重的效能瓶頸。
解決方法:使用
jemalloc等自訂記憶體分配器做為替代方案。jemalloc是高效能的通用記憶體分配器 (malloc), 著重於並行擴充,並避免記憶體片段化。這項解決方案會強制有效回收大型通訊緩衝區 (大於 128 KB),藉此略過昂貴的 Kernel 重新配置週期,並還原 PSM3 效能。建議設定:
安裝「
jemalloc」。舉例來說,在 Rocky Linux 上,您可以執行下列指令,使用 Enterprise Linux (EPEL) 存放區的額外套件:sudo dnf install epel-release sudo dnf install jemalloc
請先預先載入
jemalloc並套用最佳化快取限制,再執行應用程式:LD_PRELOAD="/usr/lib64/libjemalloc.so.2" export MALLOC_CONF="dirty_decay_ms:-1,muzzy_decay_ms:-1,lg_tcache_max:26"
設定指令會使用下列設定:
LD_PRELOAD:指定要在啟動程序前載入的共用程式庫。MALLOC_CONF:為jemalloc設定記憶體配置行為。dirty_decay_ms:-1和muzzy_decay_ms:-1:指示jemalloc絕不將未使用的記憶體傳回 OS。這樣一來,系統就會永久註冊網頁,以便立即重複使用。lg_tcache_max:26:將每個執行緒的記憶體快取限制提高至 64 MB,確保大型通訊緩衝區會積極快取。
後續步驟
- 如要查看其他效能調整建議,請參閱「使用 Cloud RDMA 最佳化及擴充 MPI」。