回复:偶发BMC获取不到CPU Core温度

错误时一键收集日志

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 文件。

:warning: 需注意:在你提供的这个具体案例中,“IMU 测 log 未看到明显报错”,说明本次问题不一定能直接通过 IMU 日志定位,建议结合一键收集日志(你已上传的 zip)进一步排查 IPMB 通信链路状态。

三、解决方向

临时规避

  • 在温度读取函数中增加前置条件判断(如检查 PMU status),当 IMU 未就绪时跳过本次读取,避免误报告警。

根本修复

  • 与闭源 compute 组件团队协同,调整系统上电时序或 IMU 初始化逻辑,确保 BMC 访问传感器时 IMU 已完全就绪。
  • 针对 BIOS 启动快于 BMC 准备就绪的场景,可提前丝印获取时间,减少超时导致的内存等加载不上问题。

调试手段

  • 通过 ipmb 命令跟踪通信链路,分析 app.log 中 IMU 相关错误日志。
  • 确认 CPU 温度来源(通过 IPMB 通道从 IMU 获取),判断是 ipmb 通道不通 还是 imu 存在问题。

四、建议的排查步骤

  1. 用已上传的一键收集日志,重点查看 app.log 中 IPMB/IMU 相关错误及告警发生时间点(10:29:57、10:30:13)前后的通信记录。
  2. 确认事件发生时是否伴随 AC/DC 电源循环 或系统刚上电,以判断是否属于"IMU 未就绪"场景。
  3. 检查 ipmb 消息通道服务是否正常,排除通道服务异常。

说明:以上原因与解决方案综合自知识库中多个同类案例分析(S950/26.03、25.06 等),供你参考定位。由于本案例中 IMU 日志未见明显报错,最终根因仍需结合你上传的一键收集日志进一步确认。