博客 / 詳情

返回

開源週報第三期

本文為達坦科技DatenLord新系列文章【開源週報】的第三篇。

設立這一系列的初衷,是為了更透明地分享達坦科技開源項目的成長軌跡。在這裏,我們不僅會同步項目近期的核心開發進展與技術突破,更將通過路線圖為您揭示未來的演進方向。

📍 項目地址與參與

GitHub 倉庫:https://github.com/open-rdma/open-rdma-driver

我們誠摯邀請所有對高性能網絡、Rust系統編程或RDMA技術感興趣的朋友點擊鏈接關注、支持我們的項目。開源的力量源於社區。您的每一次關注、討論或代碼貢獻,都是項目前進的重要動力。期待與您攜手,共建更完善的高性能基礎設施生態。

01、本週進展

本週核心目標:完善RCCL仿真模式測試框架,修復發現的bug,推進高壓測試穩定性

本週主要圍繞RCCL仿真模式測試展開工作,建立了完善的測試框架,發現並修復了多個關鍵bug,但在高壓測試中遇到了仿真器穩定性問題。

  1. 建立基礎測試框架 (commit: 0c3e32a)

實現:

  • 創建統一測試腳本,支持基本的一鍵運行
  • 實現test_common.sh,包含信號處理、仿真器管理、日誌收集
  • 為RCCL和基礎測試創建專用腳本

當前狀態:

  • 框架初步可用,但功能有限
  • 需要進一步完善錯誤處理和測試驗證
  1. 修復基礎測試中的狀態機問題 (commit: ca025d5)

問題描述:

  • 迴環測試(loopback)中的RDMA連接狀態機實現不正確
  • 缺少從INIT到RTR再到RTS的完整狀態轉換
  • 靜態緩衝區分配無法適應不同大小的傳輸需求

修復內容:

  • 在loopback.c中實現了完整的RC連接狀態機:
  • 正確實現了INIT→RTR→RTS的狀態轉換
  • 添加了狀態檢查和錯誤處理
  • 支持動態緩衝區分配,根據傳輸大小申請適當內存
  • 優化了send_recv.c中的緩衝區管理

效果:

  • 基礎測試現在能正確建立RC連接
  • 支持更大規模的數據傳輸測試
  • 為發現仿真器高壓問題提供了測試基礎
  1. 修復虛擬地址到物理地址轉換問題 (commit: d75e3b4)

問題:仿真模式下virt_to_phys_range函數無法正確翻譯地址

解決:測試程序需要sudo權限讀取/proc/self/pagemap

狀態:已修復

  1. 實現匿名大頁檢測功能 (commit: 7590fc1)

背景:

  • 驅動要求註冊的MR必須使用2MB大頁內存
  • 需要驗證RCCL通過hack_libc分配的內存確實是大頁

實現內容:

  • 在rdma_utils/pagemaps.rs中實現了check_addr_is_anon_hugepage函數
  • 通過讀取/proc/self/pagemap檢查指定地址是否為匿名大頁
  • 在內存註冊時增加大頁驗證,非大頁內存拒絕註冊

意義:

  • 確保RCCL測試使用的內存滿足驅動要求
  • 提前發現內存分配問題,避免後續運行錯誤

02、發現的關鍵問題

  1. 仿真器高壓穩定性問題

現象: 在高壓運行普通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代碼,檢查流水線控制邏輯
  • 分析高壓場景下的時序和競爭條件
  1. NCCL重複註冊MR問題

問題:

  • NCCL會註冊兩個映射到同一個物理頁的MR
  • 這會導致同一個物理頁面被重複pin/unpin
  • 可能影響硬件的MTT和PGT管理邏輯

當前狀態:

  • 已初步修改代碼避免重複pin/unpin同一物理頁面
  • 可能需要調整向硬件註冊MTT和PGT的邏輯
  • 修改後的代碼還需要進一步驗證正確性
  1. Post Recv WR時找不到QP問題

現象:

  • 在post接收WR時系統提示找不到對應的QP
  • 但QP明明在前面已經成功註冊過
  • 可能是QP查找邏輯或狀態管理存在問題

後續計劃:

  • 深入調試QP管理代碼
  • 檢查QP生命週期管理和查找邏輯

03、下週規劃

短期任務(最高優先級)

  1. 解決仿真器高壓穩定性問題
  • 深入分析checkFullyPipeline失敗的根因
  • 測試cocotb仿真器行為
  1. 完成RCCL sim模式測試
  • 修復NCCL重複註冊MR問題
  • 驗證當前修改的正確性
  • 完善MTT/PGT註冊邏輯
  • 解決post recv時找不到QP問題
  • 定位找不到QP的根本原因
  • 修復QP狀態管理或查找邏輯

中期任務

  1. 完善測試框架
  • 增加更多測試用例和場景
  • 實現測試結果自動驗證
  • 添加性能基準測試
  1. 推進RCCL完整功能支持
  • 在所有bug修復完成後,驗證RCCL完整功能
  • 支持更多collective操作測試

長期任務

  1. Driver 重構
  • 優化代碼架構,提升可維護性
  • 重構核心模塊,使得模塊對外接口更為簡潔同時正確處理錯誤
  1. 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

user avatar
0 位用戶收藏了這個故事!

發佈 評論

Some HTML is okay.