li_biao
(Li Biao)
1
错误时一键收集日志
null_20261010-1040 (1).zip (9.2 MB)
答案内容由AI生成,仅供参考:
偶发BMC获取不到CPU Core温度——原因分析与解决方向
一、问题现象概述
根据你提供的信息(topic 7988),该问题的典型表现如下:
-
告警事件:Event Code 0x00000023,Alarm Level 为 Minor(轻微告警),事件描述为 “Failed to obtain data of the CPU 1 core temperature.”
-
传感器状态:CPU2 Core Rem、CPU1 Core Rem 的当前值显示为 --,状态为空;而 1711 Core Temp 显示 44°C、状态 OK。
-
资源树关键值:/bmc/kepler/Systems/1/Processors/CPU/CPU_1_010101 中
.TemperatureCelsius = 32768
.MaxMemoryTemperatureCelsius = 32768
其中 32768 是传感器异常/无效值的标志,表示温度数据获取失败。
二、可能的原因(基于同类案例分析)
结合知识库中多个同类问题分析,CPU Core 温度获取失败通常与 IPMB 通信链路或 IMU 状态 有关,主要有以下两类原因:
1. AC/DC 电源循环时 IMU 尚未完全就绪
(参考 S950 + openUBMC 26.03 案例)
- CPU 温度是通过 IPMB 通道从 IMU 获取的。
- 在 AC/DC 电源循环过程中,IMU 短时间内尚未完全初始化,而 BMC 此时已尝试通过 IPMB 通道读取 CPU 和内存温度。
- 通信链路暂时不可用,导致读取失败并上报告警;IMU 就绪后告警会自动解除,因此表现为"偶发、告警产生后快速恢复"。
2. IPMB 消息通道对应的服务异常
(参考 openUBMC 25.06 案例)
- 当 ipmb 消息通道对应的服务异常时,无法发送和接收 ipmb 消息,因而无法获取 CPU 和内存温度。
- 该类问题在日志中会持续出现异常打印,且
/tmp/ 下可能收集不到 ipmi.txt 文件。
需注意:在你提供的这个具体案例中,“IMU 测 log 未看到明显报错”,说明本次问题不一定能直接通过 IMU 日志定位,建议结合一键收集日志(你已上传的 zip)进一步排查 IPMB 通信链路状态。
三、解决方向
临时规避
- 在温度读取函数中增加前置条件判断(如检查 PMU status),当 IMU 未就绪时跳过本次读取,避免误报告警。
根本修复
- 与闭源 compute 组件团队协同,调整系统上电时序或 IMU 初始化逻辑,确保 BMC 访问传感器时 IMU 已完全就绪。
- 针对 BIOS 启动快于 BMC 准备就绪的场景,可提前丝印获取时间,减少超时导致的内存等加载不上问题。
调试手段
- 通过 ipmb 命令跟踪通信链路,分析
app.log 中 IMU 相关错误日志。
- 确认 CPU 温度来源(通过 IPMB 通道从 IMU 获取),判断是 ipmb 通道不通 还是 imu 存在问题。
四、建议的排查步骤
- 用已上传的一键收集日志,重点查看
app.log 中 IPMB/IMU 相关错误及告警发生时间点(10:29:57、10:30:13)前后的通信记录。
- 确认事件发生时是否伴随 AC/DC 电源循环 或系统刚上电,以判断是否属于"IMU 未就绪"场景。
- 检查 ipmb 消息通道服务是否正常,排除通道服务异常。
说明:以上原因与解决方案综合自知识库中多个同类案例分析(S950/26.03、25.06 等),供你参考定位。由于本案例中 IMU 日志未见明显报错,最终根因仍需结合你上传的一键收集日志进一步确认。