news 2026/9/21 1:24:54

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

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
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 --output="path"一键收集安装版本、Device 健康状态、dump 文件、算子编译信息等(注意:集群 / 容器 / 云场景不支持 asys 一键收集)。

两种方式的完整步骤请参见 收集进程卡住问题信息、收集进程中断问题信息。

三、专题一:CANN 进程卡住问题定位实战 🧊

官方给出了一套清晰的"漏斗式"定位思路,按图索骥即可:

1. 抓调用栈:先判断卡住的大方向

asys collect -r=stacktrace --remote=pid抓取卡住进程(替换为实际 PID)的调用栈,然后看栈里有什么:

  • 栈中没有任何 CANN 内部函数→ 任务根本没下发到 CANN,去排查你自己的脚本/业务逻辑;
  • 栈中有SendTask→ 卡在 CANN 任务下发阶段;
  • 栈中有Synchronize→ 卡在任务执行阶段,进入下一步精确定位。

2. 找卡住的流和任务

在 trace 日志(schedule_tracer_*.txt)中根据报错的stream_id检索流信息:看head值(当前正在执行的任务索引)和pos[索引](具体卡住的任务),即可锁定"任务 N 一直没执行完"。

3. 梳理流间依赖,锁定真正根因

  • 若卡住任务是wait 类型(日志有Event Waitevent_id),说明它在等另一条流的任务;
  • grep -rn "event_id=1"找到下发对应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),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/21 1:23:37

Python轻量级图书推荐系统:冷启动+长尾优化+双路融合

简介:本资源是一套完整的Python图书推荐系统源码实现,面向高校计算机专业学生、推荐算法初学者及Web开发实践者,聚焦协同过滤与文本相似度融合的推荐策略落地。系统涵盖用户端(注册登录、图书浏览/搜索/详情/推荐展示、评论点赞收…

作者头像 李华
网站建设 2026/9/21 1:22:54

基于Python的锂离子电池寿命预测:从数据清洗到模型部署全流程解析

简介:这是一份基于Python实现的锂离子电池寿命预测毕业设计项目,面向计算机、电子或能源相关专业的本科生与研究生,也适用于课程设计和期末大作业场景。资源提供完整可运行的源码、数据集与模型,能够帮助读者快速搭建电池健康状态…

作者头像 李华
网站建设 2026/9/21 1:20:43

CEL分析网格处理:Hypermesh导出inp并合并到Abaqus的完整流程

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/9/21 1:20:15

ETAP一次接线图建模与短路保护协同设计实战指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/9/21 1:14:51

CANoe SOME/IP配置实战:ARXML到VCODM的语义映射与调试

1. 项目概述:这不是“配置教程”,而是一次车载以太网通信的完整工程推演CANoe SOME/IP实战:从ARXML到VCODM的完整配置与调试——这个标题里藏着整车电子电气架构升级中最硬核的一环。我带团队做过7个量产车型的SOME/IP通信落地,每…

作者头像 李华