ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

CANN进程卡住与进程中断问题定位:2大专题的实战排查方法

CANN进程卡住与进程中断问题定位:2大专题的实战排查方法 CANN进程卡住与进程中断问题定位2大专题的实战排查方法【免费下载链接】docs该仓库用于维护cann公共文档项目地址: https://gitcode.com/cann/docs在 CANN华为昇腾 AI 计算架构应用开发中进程卡住任务长时间无响应、伴随超时报错和进程中断应用进程异常退出是最常见的两类疑难故障。本文基于 CANN 官方文档仓库cann/docs维护的《进程卡住》《进程中断》两大问题定位专题手把手带你掌握「收集日志 → 分析日志 → 定位根因」的完整实战排查方法新手也能快速上手。一、先分清进程卡住 和 进程中断 有何不同在动手排查前先用一句话判断你遇到的是哪一类问题避免走错方向维度 进程卡住⚡ 进程中断核心现象任务执行中冻住长时间不结束应用进程直接崩溃、异常退出典型表现伴随超时timeout报错若配置永不超时则会一直卡住进程消失日志出现致命报错排查重心卡在哪个环节下发 / 执行 / 等待因什么报错退出接口 / 任务 / 心跳 / 资源更细的现象描述可参考进程卡住问题现象描述、进程中断问题现象描述。二、通用第一步正确收集故障日志关键90% 的排查失败都源于日志没收集全。两大专题的第一动作都是收集 CANN 日志支持两种方式手动收集最小集信息在 Host 服务器规划一个目录例如${HOME}/err_log_info/把默认应用类日志${HOME}/ascend/log移动进去进程中断问题还需额外用msnpureport -f把 Device 侧系统日志、黑匣子等导出到 Host 侧。工具自动收集全量信息执行asys collect --outputpath一键收集安装版本、Device 健康状态、dump 文件、算子编译信息等注意集群 / 容器 / 云场景不支持 asys 一键收集。两种方式的完整步骤请参见 收集进程卡住问题信息、收集进程中断问题信息。三、专题一CANN 进程卡住问题定位实战 官方给出了一套清晰的漏斗式定位思路按图索骥即可1. 抓调用栈先判断卡住的大方向用asys collect -rstacktrace --remotepid抓取卡住进程替换为实际 PID的调用栈然后看栈里有什么栈中没有任何 CANN 内部函数→ 任务根本没下发到 CANN去排查你自己的脚本/业务逻辑栈中有SendTask→ 卡在 CANN 任务下发阶段栈中有Synchronize→ 卡在任务执行阶段进入下一步精确定位。2. 找卡住的流和任务在 trace 日志schedule_tracer_*.txt中根据报错的stream_id检索流信息看head值当前正在执行的任务索引和pos[索引]具体卡住的任务即可锁定任务 N 一直没执行完。3. 梳理流间依赖锁定真正根因若卡住任务是wait 类型日志有Event Wait和event_id说明它在等另一条流的任务用grep -rn event_id1找到下发对应Event Record任务的流检查那条流的 record 任务是否没执行——这往往才是卡住的真凶。完整定位细节与日志片段示例请阅读 进程卡住问题定位思路。四、专题二CANN 进程中断问题定位实战 ⚡进程中断的核心是找到第一处报错官方排查流程同样有流程图可循1. 先 grep 首报错看有没有错误码在应用类日志plog-*_*.log中执行grep -rn ERROR看第一处报错首报错带错误码E*9***系统内部错误码除外→ 直接查 错误码参考 对照解决最快首报错无错误码→ 按下面 4 类继续排查。2. 接口使用类错误检查日志中是否有acl*、[drv api]、rt*等接口报错。存在对外接口acl开头报错时对照 API 参考检查接口用法与参数。典型案例调用SetDevice接口错误导致无可用Context、rtMemcpyAsync异步参数校验报错。3. 任务执行类错误搜fault kernel_name/kernelName→ 表示算子执行报错记下报错的 kernel 名称搜Task run failed→ 表示CANN 内部组件执行任务报错建议用ascend-dmi工具压测后再定位。4. 心跳丢失 / 资源未释放plog 有Device lost heartbeat且黑匣子日志有HEARTBEAT EXCEPTION→ TaskScheduler CPU 心跳丢失syslog 有fatal panic→ Control CPU 心跳丢失plog 有RESOURCE_ALLOC_FAIL→内存等资源未及时释放重点检查应用代码是否在资源用完后就释放。完整定位思路与日志示例请阅读 进程中断问题定位思路。五、典型案例与求助技巧 fork 方式创建子进程导致应用进程卡死这是进程卡住专题收录的经典案例若你用了 fork 创建子进程务必先看 fork方式创建子进程导致应用进程卡死。已按文档排查仍无果收集好日志后可联系技术支持。定位时建议同时提供现场业务信息单算子 / 模型推理 / 模型训练、集群规模与用户操作记录。六、快速上手文档导航清单 你想做的事对应文档查看卡住专题全貌进程卡住问题定位专题查看中断专题全貌进程中断问题定位专题手动 / asys 收集日志收集进程卡住问题信息排查卡住根因进程卡住问题定位思路排查中断根因进程中断问题定位思路查 C/C / Python 堆栈查看C/C应用程序的堆栈✅一句话总结先分清是卡住还是中断再收全日志然后按流程图逐层下钻——卡住看哪个环节中断看哪类报错。掌握这套方法绝大多数 CANN 进程级疑难故障都能迎刃而解。【免费下载链接】docs该仓库用于维护cann公共文档项目地址: https://gitcode.com/cann/docs创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进