本文為達坦科技DatenLord新系列文章【開源週報】的第三篇。
設立這一系列的初衷,是為了更透明地分享達坦科技開源項目的成長軌跡。在這裏,我們不僅會同步項目近期的核心開發進展與技術突破,更將通過路線圖為您揭示未來的演進方向。
📍 項目地址與參與
GitHub 倉庫:https://github.com/open-rdma/open-rdma-driver
我們誠摯邀請所有對高性能網絡、Rust系統編程或RDMA技術感興趣的朋友點擊鏈接關注、支持我們的項目。開源的力量源於社區。您的每一次關注、討論或代碼貢獻,都是項目前進的重要動力。期待與您攜手,共建更完善的高性能基礎設施生態。
01、本週進展
本週核心目標:完善RCCL仿真模式測試框架,修復發現的bug,推進高壓測試穩定性
本週主要圍繞RCCL仿真模式測試展開工作,建立了完善的測試框架,發現並修復了多個關鍵bug,但在高壓測試中遇到了仿真器穩定性問題。
- 建立基礎測試框架 (commit: 0c3e32a)
實現:
- 創建統一測試腳本,支持基本的一鍵運行
- 實現test_common.sh,包含信號處理、仿真器管理、日誌收集
- 為RCCL和基礎測試創建專用腳本
當前狀態:
- 框架初步可用,但功能有限
- 需要進一步完善錯誤處理和測試驗證
- 修復基礎測試中的狀態機問題 (commit: ca025d5)
問題描述:
- 迴環測試(loopback)中的RDMA連接狀態機實現不正確
- 缺少從INIT到RTR再到RTS的完整狀態轉換
- 靜態緩衝區分配無法適應不同大小的傳輸需求
修復內容:
- 在loopback.c中實現了完整的RC連接狀態機:
- 正確實現了INIT→RTR→RTS的狀態轉換
- 添加了狀態檢查和錯誤處理
- 支持動態緩衝區分配,根據傳輸大小申請適當內存
- 優化了send_recv.c中的緩衝區管理
效果:
- 基礎測試現在能正確建立RC連接
- 支持更大規模的數據傳輸測試
- 為發現仿真器高壓問題提供了測試基礎
- 修復虛擬地址到物理地址轉換問題 (commit: d75e3b4)
問題:仿真模式下virt_to_phys_range函數無法正確翻譯地址
解決:測試程序需要sudo權限讀取/proc/self/pagemap
狀態:已修復
- 實現匿名大頁檢測功能 (commit: 7590fc1)
背景:
- 驅動要求註冊的MR必須使用2MB大頁內存
- 需要驗證RCCL通過hack_libc分配的內存確實是大頁
實現內容:
- 在rdma_utils/pagemaps.rs中實現了check_addr_is_anon_hugepage函數
- 通過讀取/proc/self/pagemap檢查指定地址是否為匿名大頁
- 在內存註冊時增加大頁驗證,非大頁內存拒絕註冊
意義:
- 確保RCCL測試使用的內存滿足驅動要求
- 提前發現內存分配問題,避免後續運行錯誤
02、發現的關鍵問題
- 仿真器高壓穩定性問題
現象: 在高壓運行普通sim測試(傳輸2MB數據)時,仿真器出現斷言失敗:
INFO cocotb: ImmAssert failed in mkBsvTopWithoutHardIpInstance.topLevelDmaChannelMux @time=18331000: "/home/peng/projects/rdma_all/open-rdma-rtl/src/FullyPipelineChecker.bsv", line 118, column 25
INFO cocotb: -- DataStream checkFullyPipeline Failed:
name = mkTopLevelDmaChannelMux muxInst write, lastBeatCnt=9140, curBeatCnt=9163, delta=23
分析:
- checkFullyPipeline檢查失敗,DMA通道的數據流出現了23個beat的差異
- 可能是流水線控制邏輯在高負載下出現競爭條件
- 暫時關閉fullcheck檢查後,測試可以運行但1小時未完成
後續計劃:
- 調研cocotb仿真器行為,確認是否是仿真器代碼問題
- 調試硬件RTL代碼,檢查流水線控制邏輯
- 分析高壓場景下的時序和競爭條件
- NCCL重複註冊MR問題
問題:
- NCCL會註冊兩個映射到同一個物理頁的MR
- 這會導致同一個物理頁面被重複pin/unpin
- 可能影響硬件的MTT和PGT管理邏輯
當前狀態:
- 已初步修改代碼避免重複pin/unpin同一物理頁面
- 可能需要調整向硬件註冊MTT和PGT的邏輯
- 修改後的代碼還需要進一步驗證正確性
- Post Recv WR時找不到QP問題
現象:
- 在post接收WR時系統提示找不到對應的QP
- 但QP明明在前面已經成功註冊過
- 可能是QP查找邏輯或狀態管理存在問題
後續計劃:
- 深入調試QP管理代碼
- 檢查QP生命週期管理和查找邏輯
03、下週規劃
短期任務(最高優先級)
- 解決仿真器高壓穩定性問題
- 深入分析checkFullyPipeline失敗的根因
- 測試cocotb仿真器行為
- 完成RCCL sim模式測試
- 修復NCCL重複註冊MR問題
- 驗證當前修改的正確性
- 完善MTT/PGT註冊邏輯
- 解決post recv時找不到QP問題
- 定位找不到QP的根本原因
- 修復QP狀態管理或查找邏輯
中期任務
- 完善測試框架
- 增加更多測試用例和場景
- 實現測試結果自動驗證
- 添加性能基準測試
- 推進RCCL完整功能支持
- 在所有bug修復完成後,驗證RCCL完整功能
- 支持更多collective操作測試
長期任務
- Driver 重構
- 優化代碼架構,提升可維護性
- 重構核心模塊,使得模塊對外接口更為簡潔同時正確處理錯誤
- GPU 內存註冊支持
- 調研 dma-buf 內核接口的實現細節
- 設計內核模塊中的 GPU 內存映射機制
- 實現 ibv_reg_dmabuf_mr verbs 支持
04、本週總結
本週繼續推進在RCCL在驅動的仿真模式下的測試:
成果:
- 建立了基礎測試框架,支持簡單的一鍵運行
- 修復了基礎測試中的狀態機問題
- 實現了匿名大頁檢測
- 發現了仿真器高壓穩定性問題
挑戰:
- 仿真器在高壓測試下出現流水線檢查失敗,需要深入調試
- NCCL重複註冊和QP查找問題需要進一步分析
達坦科技始終致力於打造高性能AI+Cloud基礎設施平台,積極推動AI應用的落地。達坦科技通過軟硬件深度融合的方式,提供AI推理引擎和高性能網絡,為AI應用提供彈性、便利、經濟的基礎設施服務,以此滿足不同行業客户對AI+Cloud的需求。
公眾號:達坦科技DatenLord
DatenLord官網:
https://datenlord.github.io/zh-cn/
知乎賬號:
https://www.zhihu.com/org/da-tan-ke-ji
B站:
https://space.bilibili.com/2017027518
郵箱:info@datenlord.com
如果您有興趣加入達坦科技Rust前沿技術交流羣、硬件敏捷開發和驗證方法學討論羣或AI Infra 交流羣,請添加小助手微信:DatenLord_Tech