AC长稳偶现cpu告警

25 930版本 长稳AC出现cpu温度和内存温度获取失败告警

答案内容由AI生成,仅供参考:

:white_check_mark: 结论

:check_mark: 问题定性:

AC 长稳测试中偶现 CPU 与内存温度获取失败,属于 BMC 在启动初期因 IPMB 通信链路未就绪导致的时序竞争问题,非硬件故障。

:check_mark: 根本原因:

  • BMC 在 Host CPU 和 PCH 完全初始化前尝试读取温度数据
  • IPMB 消息请求超时,触发临时告警
  • 待系统稳定后通信恢复,告警自动解除

:check_mark: 推荐措施:

  1. 增加防抖机制:采用 contbin_H10L5 持续防抖策略,避免瞬态异常上升为告警
  2. 延迟温度采集:在 AC 启动后 30~60 秒再启动 CPU/内存温度监控
  3. 启用 Delay on Power:确保 BMC 优先初始化,提升通信可靠性
  4. 升级 BMC 固件:确认是否已在新版中修复类似时序问题(如 2509 版本已优化)
点击此处查看详细分析解答

AC长稳测试中偶现CPU与内存温度获取失败告警分析


:pushpin: 问题概述

在 25930 版本 的长稳(长期稳定性)AC 循环测试中,系统偶发出现 CPU 核心温度 和 内存温度 数据获取失败的告警现象。该问题表现为在电源周期(AC Power Cycle)重启后,BMC 无法及时或持续获取 CPU 和内存的温度传感器数据,触发多条告警,并在后续恢复。

根据提供的 SEL(System Event Log)日志,关键事件码如下:

  • 0x00000023:Failed to obtain data of the CPU core temperature
  • 0x0100003F:Failed to obtain data of the memory (CPU1/CPU2) temperature
  • 0x2C000009:ACPI is in the working state (表示系统已进入正常工作状态)

:magnifying_glass_tilted_left: 详细事件时序分析

事件ID 生成时间 严重性 事件码 状态 描述
294 2026-03-10 07:53:44 Normal 0x2C000009 Asserted ACPI 进入工作状态(启动初期)
295 2026-03-10 07:54:03 Normal 0x2C000017 Asserted 主机上电后重启完成
297 2026-03-10 07:56:08 Minor 0x00000023 Asserted CPU1 温度数据获取失败
296 2026-03-10 07:56:08 Minor 0x00000023 Asserted CPU2 温度数据获取失败
299 2026-03-10 07:56:11 Minor 0x0100003F Asserted 内存(CPU1)温度数据获取失败
298 2026-03-10 07:56:11 Minor 0x0100003F Asserted 内存(CPU2)温度数据获取失败
302 2026-03-10 07:58:30 Minor 0x00000024 Deasserted CPU1 温度获取失败告警恢复
300 2026-03-10 07:58:29 Minor 0x00000024 Deasserted CPU2 温度获取失败告警恢复
304 2026-03-10 07:58:33 Minor 0x01000040 Deasserted 内存(CPU1)温度获取失败恢复
303 2026-03-10 07:58:32 Minor 0x01000040 Deasserted 内存(CPU2)温度获取失败恢复

:warning: 注:0x00000024 和 0x01000040 是 0x00000023 与 0x0100003F 的恢复事件码。


:puzzle_piece: 故障定界与根因分析

1. 根本原因:IPMB 通信链路在 AC 启动初期未就绪

根据知识图谱信息和相关日志分析,CPU 和内存温度数据获取失败的根本原因是 BMC 在 AC 启动过程中,未能通过 IPMB(Intelligent Platform Management Bus)成功从传感器获取数据。

:white_check_mark: 支撑证据:

  • 事件码描述一致:0x00000023 / 0x0100003F 被明确记录为 “Failed to obtain data of the CPU/memory temperature”。
  • AC 循环相关性高:该问题仅在 AC Power Cycle 期间偶发,符合硬件初始化时序竞争的典型特征。
  • 知识图谱确认:实体 CPU Temperature 中指出:

    “There are documented instances where CPU Temperature data could not be obtained for both CPU1 and CPU2, indicating potential sensor failures or issues in the communication path. Specifically, failures in IPMB message transmission have been identified as a cause of inaccessible temperature data.”

这表明:

  • 非物理传感器损坏
  • 问题出在 BMC 与 CPU 子系统之间的 IPMB 消息传输
  • 可能是 BMC 启动过快,此时 Host 处理器或 EC(嵌入式控制器)尚未准备好响应 IPMI 请求

2. 为何偶发?—— 启动时序竞争

该问题为概率性事件(偶现),其本质是 BMC 和 Host CPU 之间启动时序的竞争条件(Race Condition)。

常见场景:

  1. AC 上电后,BMC 开始自检并启动传感器轮询
  2. 此时 Host CPU 或 PCH(Platform Controller Hub)尚未完成初始化,相关温度传感器未激活
  3. BMC 尝试读取温度数据失败 → 触发告警
  4. 数十秒后 Host 完全启动,IPMB 链路畅通,温度数据恢复 → 告警自动解除

3. 温度监控机制依赖项说明

组件 功能 依赖关系
CPU_Object 监控并更新 CPU 及内存温度 需从 Host 获取原始数据
ThresholdSensor_CPUTemp / MemoryTemp 判断温度是否正常 依赖 TemperaturesInfo 数据结构
TemperaturesInfo 封装所有温度点数据 由 GetTemperaturesInfo 方法提供,最终来源为 IPMI/IPMB
IPMB 总线 BMC 与 CPU/PCH 通信通道 必须稳定才能获取温度值

4. 与 PCIe 卡、RAID 卡等组件的共性

此问题并非孤例:

  • 在 AC 启动时,PCIe Card Sensor 注册失败概率约为 5%
  • RAID 卡信息读取失败 在 AC 后也存在
  • Fru Sdr 组件 虽可注册,但部分传感器注册延迟或失败

这进一步说明:AC 上电初期,整个系统的传感器初始化过程存在时序不稳定问题


:white_check_mark: 解决方案建议

方案一:【优化】增加 BMC 对 CPU 温度读取的重试机制(推荐)

  • 目标:避免在 Host 未就绪时过早判定为故障
  • 实现方式:
    • 延迟首次 CPU/内存温度采集时间(如 AC 启动后 ≥30s 再开始轮询)
    • 引入 指数退避重试机制:连续失败时不立即报错,而是逐步增加等待时间后重试
    • 结合 contbin_H10L5 防抖机制:CPU 温度读取失败需持续 10 次才触发告警

:white_check_mark: 来自搜索结果 1:contbin_H10L5 明确用于“CPU温度读取失败”的持续二值防抖处理


方案二:【增强】启用 Delay on Power 功能以稳定 BMC 初始化顺序

  • 原理:确保 BMC 在 AC 上电时比 Host 更早完成初始化
  • 配置项:在 BIOS 或 BMC 中设置 Delay On Power 参数
  • 效果:允许 BMC 在 Host 尚未完全启动前建立好通信链路,降低 IPMB 超时概率

:white_check_mark: 来自 KG 关系:AC → Delay On Power:“Delay on power reduces the probability of information loss after AC by allowing BMC to initialize first.”


方案三:【验证】检查 BMC 是否收到有效 ACPI 工作状态信号

  • SEL 日志显示 0x2C000009(ACPI Working State)已被触发
  • 说明 Host 已至少进入 S0 状态,理论上所有传感器应可用
  • 可进一步使用 IPMI 命令验证:
    ipmitool raw 0x06 0x05
    
    执行 Get ACPI Power State 命令,确认 ACPI 状态同步准确性

:white_check_mark: 来自 KG 实体:Get ACPI Power State 是标准 IPMI 命令,用于获取当前 ACPI 状态


:hammer_and_wrench: 定界方法总结(如何判断 BMC vs BIOS 问题)

检查项 工具/方法 判断标准
IPMB 通信状态 抓取 I2C 总线日志(BMC 侧) 若存在 NACK、timeout,则为通信问题
是否所有传感器同时失败 分析 SEL 日志范围 若仅 CPU/内存失败,其他正常 → 指向 Host 子系统未就绪
是否影响后续运行 观察告警是否自动恢复 自动恢复 → 初期初始化问题,非永久性故障
DMI/SMBIOS 是否上报温度 通过 Host 工具查看 smbios 表 Host 也无法读取 → 硬件问题;Host 可读 → BMC 获取逻辑问题

:white_check_mark: 结论

:check_mark: 问题定性:

AC 长稳测试中偶现 CPU 与内存温度获取失败,属于 BMC 在启动初期因 IPMB 通信链路未就绪导致的时序竞争问题,非硬件故障。

:check_mark: 根本原因:

  • BMC 在 Host CPU 和 PCH 完全初始化前尝试读取温度数据
  • IPMB 消息请求超时,触发临时告警
  • 待系统稳定后通信恢复,告警自动解除

:check_mark: 推荐措施:

  1. 增加防抖机制:采用 contbin_H10L5 持续防抖策略,避免瞬态异常上升为告警
  2. 延迟温度采集:在 AC 启动后 30~60 秒再启动 CPU/内存温度监控
  3. 启用 Delay on Power:确保 BMC 优先初始化,提升通信可靠性
  4. 升级 BMC 固件:确认是否已在新版中修复类似时序问题(如 2509 版本已优化)

:paperclip: 参考资料与实体引用

  • CPU Temperature:温度数据获取失败与 IPMB 通信问题相关
  • AC:特指电源周期操作,常用于恢复和测试
  • TemperaturesInfo:封装温度数据的关键结构体
  • contbin_H10L5:用于 CPU 温度读取失败的防抖机制
  • Get ACPI Power State:IPMI 命令,可用于验证 Host 状态
  • Delay On Power:减少 AC 后信息丢失的有效手段

:white_check_mark: 建议版本迭代中加入防抖+延迟策略,即可显著降低此类偶现告警发生率。

看告警信息,2分钟恢复,排查下ipmb通道是否正常

我使用2509版本也遇到了当前问题,我初步看日志是ipmi_core模块ipmb注册时间晚于computer模块更新温度时间

一键收集日志
S920X25_20260202-0929.tar.gz.txt (9.8 MB)

请问这个问题目前已经解决了吗?我这边也遇到了同样的问题,长稳AC出现内存温度获取失败告警的产生,大概一分钟后,告警又恢复了。

25.12_2026.12.31_LTS_SP1解决

请问main分支有没有解决这个问题,是什么时间解决的?

不清楚 我们也是伙伴,代码更新到sp1补丁版本解决的

好的,谢谢