MI308X (gfx942) / ROCm 上 torch 推論服務 (torch_service) 的 permanent GPU hang
重現、方法論與根因分析。本 repo 是 AFDEAPAC/alibabaHang
reproducer 套件的分析與方法論層。
觸發主因:jemalloc 的 madvise(MADV_DONTNEED) 打到 GPU 已註冊的 host SVM range。
XNACK-off 下 → MMU_NOTIFY_CLEAR → svm_range_evict → kgd2kfd_quiesce_mm(TRIGGER_SVM)
停掉所有 user-mode queue → 背景 svm_range_restore_work 重 fault。高頻 free =
quiesce/restore 風暴。疊加 runtime ROCR SDMA copy 的 WaitRelaxed(-1) 無限等待,
queue 被停時 fence 永不 signal → permanent hang。
reproducer 實測:kgd2kfd_quiesce_mm 觸發 837 次、~57% madvise 迭代造成 GPU >=50ms 停頓。
詳見 defects/svm-madvise-quiesce-storm.md 與
reproduce/svm_madvise_evict/。
pageable H2D hipMemcpy 永不返回,GPU util 100%,process 永久卡在
rocr::core::InterruptSignal::WaitRelaxed()。
| 目錄 | 內容 |
|---|---|
defects/ |
缺陷類別記錄(SVM madvise quiesce storm)+ 上游 patch |
methodology/ |
umr / rocgdb / driver dynamic_debug + ftrace 取證方法論 |
rag/ |
可檢索 RAG 條目 (jsonl) |
source-map/ |
原生 driver + upstream clr/rocr 的 hang path 函式對照 |
reproduce/ |
既有 reproducer 分析、torch_service_sim/real、svm_madvise_evict |
reports/ |
專業 HTML 根因報告 (SVG 圖) |
artifacts/ |
蒐證原始輸出 |
- driver:Philip Yang
drm/amdkfd: Unmap svm range when all GPUs set to no-access(defects/patches/) - runtime:ROCm/rocm-systems PR #6724
Device::hostUnlock(已 revert #7085) - driver:kfd_process sysfs NULL deref fix
hjbog-srdc-22.amd.com— MI308X (gfx942), RHEL 8.6, ROCm 7.2.1- 原生 driver source:
/usr/src/amdgpu-6.16.13-2303411.el8
| 層 | 工具 | 要回答 |
|---|---|---|
| Runtime (CLR/ROCR) | rocgdb, AMD_LOG | 卡在哪個 signal/fence? |
| Driver (KFD/amdgpu) | dynamic_debug, ftrace, debugfs | queue 為何 evict/quiesce?fence 為何不 signal? |
| Hardware (SDMA/CP) | umr ring-scan/waves/vm-decode | ring stuck?wave PC?VA fault? |
INDEX.md— 全 repo 交付物一頁導覽(defects / methodology / source-map / reproduce / reports / rag / tracking)tracking/review-issues.md— 客戶 review 6 條 issue 追蹤表(症狀 / 根因 / 產出 / 負責人 / 下一步)tracking/roadmap.md— 已完成 / 進行中 / 待辦 roadmap