ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

HCCL集群心跳机制故障定位指南:进程卡死、对端心跳丢失与网络异常的根因追溯

HCCL集群心跳机制故障定位指南:进程卡死、对端心跳丢失与网络异常的根因追溯 HCCL集群心跳机制故障定位指南进程卡死、对端心跳丢失与网络异常的根因追溯【免费下载链接】hccl集合通信库Huawei Collective Communication Library简称HCCL是基于昇腾AI处理器的高性能集合通信库为计算集群提供高性能、高可靠的通信方案项目地址: https://gitcode.com/cann/hcclHCCLHuawei Collective Communication Library基于已有通信域信息构建集群心跳维测链路实现单点故障的广播扩散与根节点定位。本文围绕docs/zh/user_guide/fault_diagnosis/下的集群心跳机制系列文档系统讲解三类核心故障探测能力ERROR CQE、STUCK、LOST的判定标准、日志格式解析与完整定位思路并结合实际案例说明如何从HeartbeatAbnormal日志中追溯集群故障的根节点。心跳机制的设计背景让任意 rank 都掌握集群故障根因在大规模分布式训练/推理场景中集群中任一节点发生故障进程退出、进程卡死、网络异常都可能引发整网通信卡死。传统定位手段只能看到本端超时却无法快速回答三个问题谁先出问题、什么类型的问题、问题发生在哪个节点。为此HCCL 会基于已有的通信域信息与邻近的 rank 建立起独立的维测链路提供集群的单点故障广播扩散能力——某个节点发现异常后异常事件会沿维测链路在集群内扩散最终使任意 rank 的 plog 日志中都包含故障根节点信息。该链路仅承载轻量的心跳与事件扩散报文HCCL 会严格控制维测链路的数量和通信数据量用户无需担心其对正常通信链路造成性能损失。该机制的完整定位思路可参见 cluster_heartbeat_mechanism_troubleshooting.md实际案例分析可参见 process_hang_or_peer_heartbeat_loss_example.md。三类核心故障探测能力与判定标准当前 HCCL 心跳机制支持三种异常类型的探测分别覆盖网络、进程状态两大维度。每种异常在运行日志run/plog与调试日志debug/plog中有对应的关键字并遵循各自的判定标准优先级异常类型status运行日志-run/plogExceptionType调试日志-debug/plog判断标准1网络问题ERROR CQEError cqe Occurred定期轮询 ROCE 驱动重传超次事件通过 QPN 映射远端 IP2进程卡死STUCKStuck Occurred每隔 1/3 的 HCCL_EXEC_TIMEOUT 时间轮询所有算子的入/出次数分析是否卡住3进程退出LOSTHeartbeat Lost Occurred30s 时间内未收到远端的心跳报文三种异常的判定机制各有侧重ERROR CQE优先级 1网络问题HCCL 定期轮询 ROCE 驱动获取其事件。ERROR CQE 在 HCCL 中代表 RoCE 报文的重传超时出现后必然伴随集群卡死导致超时。详情可参见 error_cqe_report_EI0013.md。STUCK优先级 2进程卡死以HCCL_EXEC_TIMEOUT为时间基准每隔其 1/3 的时间轮询所有算子的入/出次数通过对比分析算子是否长时间未推进来判断进程是否卡死。关于该环境变量的取值说明可参见 HCCL_EXEC_TIMEOUT.md。LOST优先级 3进程退出连续 30s 未收到远端的心跳报文即判定对端心跳丢失。日志打印控制规则为控制打印数量当前 Cluster Exception ERROR 日志只打印有效事件的前三个且打印优先级为ERROR CQE STUCK LOST。如果用户需要确认全量的心跳事件可以在 run 目录日志中检索。日志解析一异常事件的扩散转发日志HeartbeatAbnormalHCCL 在检测到异常事件后会在集群中进行信息的扩散转发并将收到的异常事件打印到 run 日志日志格式如下[HeartbeatAbnormal]local rank[IP/ID]crimer rank[IP/ID] status[4异常事件类型]by informer rank[IP/ID]各字段含义HeartbeatAbnormal代表心跳异常事件。local rank当前节点的信息。crimer rank根节点故障根因节点信息。status异常事件类型。by informer rank集群故障上报者发现者信息。用户可结合关键字HeartbeatAbnormal与 status 状态进行检索日志示例如下[INFO] HCCL(686,python):2025-10-23-07:52:59.191.363 [heartbeat.cc:951] [8970][TaskExecStage][HeartbeatAbnormal]local rank [127.10.0.1/1]: crimer rank [127.10.0.2/2] status[LOST] by informer rank [127.10.0.3/3]解读该日志当前 rank 是127.10.0.1/1根节点故障根因节点是127.10.0.2/2异常类型为LOST进程退出/心跳丢失该事件由127.10.0.3/3节点发现并上报扩散。即便本端未直接感知故障也可以通过该日志获知集群中的根节点位置与异常类型这正是单点故障广播扩散能力的价值所在。日志解析二集群故障综合定位日志Cluster Exception Location如果后续出现算子执行报错并且调用了 task exception 回调函数通知 HCCLHCCL 会根据已经收到的异常事件结合HCCL_EXEC_TIMEOUT等超时事件配置推测出最可能的单点故障原因并打印在 ERROR 日志中日志格式如下[TaskExecStage][HeartbeatAbnormal]Cluster Exception Location[IP/ID], Arrival Time:[星期 月 日 时:分:秒 年], Discoverer:[IP/ID], ExceptionType:[异常类型], Possible Reason:可能原因各字段含义[TaskExecStage][HeartbeatAbnormal]代表集群故障发生在算子执行阶段为心跳异常事件。Cluster Exception Location集群故障发生位置。Arrival Time集群故障发生时间异常广播到本端的时间。Discoverer集群故障发现节点。ExceptionType集群故障的异常类型。Possible Reason集群故障发生的可能原因。用户可检索关键字HeartbeatAbnormal定位此类日志示例如下[ERROR]HCCL(835695,all_reduce_test):2025-10-23-17:28:06.049.385[task_exception_handler.cc:610][835695][TaskExecStage][HeartbeatAbnormal]Cluster Exception Location[IP/ID]:[127.10.0.1/1], Arrival Time:[Thu Oct 23 17:25:58 2025], Discoverer:[127.10.0.1/2], ExceptionType:[Heartbeat Lost Occurred], Possible Reason:1. Process has exited, 2. Network Disconnected解读该日志集群故障发生在127.10.0.1/1节点异常在2025-10-23 17:25:58被发现由127.10.0.1/2节点发现并上报异常类型为Heartbeat Lost Occurred心跳丢失HCCL 推测的可能原因为1. 进程已退出2. 网络断开。实战案例进程卡死或对端心跳丢失在 CANN 日志中检索到关键字Cluster Exception Location时即表示命中了集群心跳机制的故障定位输出。以下是两类典型场景的日志形态完整案例参见 process_hang_or_peer_heartbeat_loss_example.md。场景一对端心跳丢失[ERROR]HCCL(835695,all_reduce_test):2025-10-23-17:28:06.049.385[task_exception_handler.cc:610][835695][TaskExecStage][HeartbeatAbnormal]Cluster Exception Location[IP/ID]:[127.10.0.1/1], Arrival Time:[Thu Oct 23 17:25:58 2025], Discoverer:[127.10.0.1/2], ExceptionType:[Heartbeat Lost Occurred], Possible Reason:1. Process has exited, 2. Network Disconnected场景二进程卡死[ERROR]HCCL(1219039,all_reduce_test):2025-10-23-21:05:09.859.568[task_exception_handler.cc:610] [1219039][TaskExecStage][HeartbeatAbnormal]Cluster Exception Location[IP/ID]:[127.10.0.1/1], Arrival Time:[Thu Oct 23 21:03:19 2025], ExceptionType:[Stuck Occurred], Possible Reason:1.Host process is stuck, 2.Device task is stuck从报错日志中提取关键信息收到上述报错后应从日志中提取四个核心字段进行定位Cluster Exception Location异常所在的节点信息。Arrival Time异常广播到本端的时间。ExceptionType异常类型包括心跳丢失Heartbeat Lost Occurred、进程卡死Stuck Occurred、网络丢包Error CQE Occurred等。Possible Reason异常可能的发生原因及排查思路。分类型排查思路Heartbeat Lost Occurred心跳丢失排查异常所在的节点在异常广播到本端的时间之前是否已经提前退出或者节点间是否存在网络异常导致无法连接。由于进程退出和网络断开均可能导致对端无法回应心跳需结合心跳事件的具体情况甄别——例如如果两端 rank 互报对端 LOST通常意味着链路中断而非单端进程退出。Stuck Occurred进程卡死排查异常所在节点的业务进程是否卡死在某个节点或发生了死锁。可结合算子执行日志确认是 Host 侧进程卡死Host process is stuck还是 Device 侧任务卡死Device task is stuck。Error cqe Occurred网络丢包排查异常所在节点是否发生了 cqe error可进一步通过hccn_tool -i devid -link_stat -g查看网口是否有闪断记录并检查HCCL_RDMA_TIMEOUT与HCCL_RDMA_RETRY_CNT配置是否过小详见 error_cqe_report_EI0013.md。超时但无异常事件时的补充手段如果任务超时后未伴随任何异常事件则可能为集群行为一致性问题如各节点执行路径不一致此时应优先排查脚本、版本、数据集等因素。如有需要可以开启HCCL_ENTRY_LOG_ENABLE环境变量进行算子级行为跟踪export HCCL_ENTRY_LOG_ENABLE1开启后每次调用通信算子都会实时打印一条运行日志默认值为 0即不打印可据此对比各 rank 的算子调用顺序与次数定位行为不一致的节点。该变量仅用于集合通信算子的单算子调用场景详情参见 HCCL_ENTRY_LOG_ENABLE.md。注意事项与事件甄别提前杀进程场景如果训练/推理任务在 notify 超时前被提前杀掉或 task exception 机制由于某种原因未及时调用 callback 函数通知 HCCLHCCL 可能不会打印异常信息。此时用户依然可以通过 run 日志中系统运行过程中的异常事件进行根节点定位。甄别原则对于系统卡住时间附近的 LOST/ERROR CQE 事件一般即为导致系统停止的原因而 STUCK 的检测时间为(1/3~2/3) * HCCL_EXEC_TIMEOUT需要注意其检测时延特性。事件交叉叠加网络异常和进程退出均有可能同时导致 LOST 和 ERROR CQE 事件。请结合心跳事件的具体情况判断例如如果两端 rank 互报对端 LOST说明链路双向中断更可能为网络问题而非单端进程退出。小结HCCL 集群心跳机制通过轻量维测链路将单点故障广播扩散至全集群使任意 rank 的日志都具备根因追溯能力。定位故障时只需三步检索关键字HeartbeatAbnormal与Cluster Exception Location→ 解析根节点crimer rank / Cluster Exception Location、异常类型status / ExceptionType与发现者informer rank / Discoverer→ 按 ERROR CQE STUCK LOST 的优先级与 Possible Reason 建议定向排查网络、进程状态或一致性因素。相关完整文档可继续阅读集群心跳机制故障定位思路进程卡死或对端心跳丢失案例分析ERROR CQE 报错EI0013HCCL_EXEC_TIMEOUT 环境变量HCCL_ENTRY_LOG_ENABLE 环境变量【免费下载链接】hccl集合通信库Huawei Collective Communication Library简称HCCL是基于昇腾AI处理器的高性能集合通信库为计算集群提供高性能、高可靠的通信方案项目地址: https://gitcode.com/cann/hccl创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表