reboot过程中闪现CPU VRD和VDDQ告警

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

关于 reboot 过程中闪现 CPU VRD 和 VDDQ 温度获取失败告警的分析报告


一、问题描述

在执行 reboot 指令后,系统启动过程中,BMC 日志中短暂出现 CPU VRD(Voltage Regulator Device)和 VDDQ 温度读取失败的“轻微”级别告警。这些告警随后被自动消除(Deasserted),但在事件日志中仍被记录。

  • 实际结果:重启期间上报了以下告警事件:
    • Failed to obtain data of the CPU 1 VRD temperature
    • Failed to obtain data of the CPU 2 VRD temperature
    • Failed to obtain data of the CPU 2 VDDQ temperature
  • 期望结果:系统重启过程中不应上报此类告警,或应通过机制屏蔽瞬态异常。

二、环境信息

项目 内容
软件版本 OpenUBMC 2509
操作系统 Linux-based Host OS
硬件平台 支持双 CPU 架构的服务设备
日志来源 BMC Web UI、SEL 日志、一键日志包(event.db / sel.txt)

三、相关告警事件分析

根据提供的日志截图与内容,整理关键事件如下:

事件码 级别 事件描述 状态 产生时间
0x00000061 轻微 Failed to obtain data of the CPU 2 VRD temperature Asserted → Deasserted 2026-01-10 06:04:57/58
0x00000062 轻微 Failed to obtain data of the CPU 1 VRD temperature Asserted → Deasserted 2026-01-10 06:04:58
0x00000025 轻微 Failed to obtain data of the CPU 2 VDDQ temperature Asserted → Deasserted 2026-01-10 06:04:58
0x00000026 轻微 Failed to obtain data of the CPU 1 VDDQ temperature Deasserted 2026-01-10 06:05:06

:white_check_mark: 结论:所有告警均发生在主机重启(The host was restarted...)前后约 10 秒内,且均被 Deasserted,属于瞬态现象


四、根本原因分析

结合知识库中的实体关系、代码配置逻辑以及防抖机制设计,可以得出以下结论:

1. 告警来源与监控机制
  • VRD 温度监控对象

    • 实体:VrdTemperatureCelsius
    • 类型:VrdMgmt 类的软件属性,由 vr_manager.lua 通过 IPMI 协议从 IMU 获取。
    • 用途:用于风扇调速与健康状态判断。
    • 关联实体:Chip_CpuIvrd3_01010109 Scanner_CpuIvrem345_vrdTemp_01010109
  • VDDQ 温度监控对象

    • 实体:CpuDDRVddqTemp
    • 实体:CpuNBDVDDTemp
    • 均属于 VrdMgmt 对象下的温度参数,监控 CPU 内存供电模块的温度。
    • 配置参考:CSR 配置字典中 VrdMgmt 类定义了这些属性。
2. 事件触发逻辑(代码级)

从提供的 JSON 片段可见,已尝试通过增加 PowerGood 判断 修改事件触发条件:

"Event_Cpu1VrdTempFail": {
  "Reading": "<?>Scanner_PowerGood.Value;<?>/VrdMgmt_1.VrdTemperatureCelsius |> expr{$1 == 0 ? 0 : ($2 == 32511 ? 1 : 0)}",
  ...
}
  • 逻辑解释
    • 只有当 Scanner_PowerGood.Value == 1(即系统处于上电稳定状态)时,才检查温度值。
    • VrdTemperatureCelsius == 32511(无效值或读取失败),则上报告警。
    • 否则不触发。
  • 目的:防止在系统未完全上电前(如 reboot 过程中)误报温度异常。
3. 瞬态告警的成因

尽管加入了 PowerGood 判断,但以下因素仍可能导致闪现告警:

因素 说明
:stopwatch: 信号同步延迟 Scanner_PowerGood 信号的更新可能滞后于温度采集任务的执行周期,导致短暂窗口期内进行无效读取。
:repeat_button: 采集周期不匹配 温度扫描器周期为 3000ms,而 PowerGood 检测为 8000ms,可能存在竞争条件。
:chart_decreasing: 传感器初始化顺序 CPU VRD/VDDQ 温度传感器依赖 BIOS 上报或 VRD 芯片初始化完成,在 reboot 初期尚未就绪。
:hammer_and_wrench: 防抖机制未完全覆盖 当前事件未启用 contbin_H10L5 类型的二值防抖(专用于温度读取失败),导致瞬态错误直接触发告警。

:magnifying_glass_tilted_left: 参考文档:搜索结果 中提及 contbin_H10L5 用于 “CPU温度读取失败”、“VRD温度读取失败” 等场景。


五、解决方案建议

:white_check_mark: 1. 补充防抖机制(推荐)

应在事件定义中引入 持续二值防抖 contbin_H10L5,确保仅在连续多次检测失败后才上报告警。

  • 配置建议

    Event_Cpu1VrdTempFail:
      Debounce: "#/Debounce_contbin_H10L5"
      Reading: "<?>Scanner_PowerGood.Value; ... "
    
  • 原理:即使某次读取失败,只要在 10 次高电平判断中不超过 5 次失败,就不会触发告警。

:white_check_mark: 2. 强化 PowerGood 条件判断

优化表达式,增强判空和状态联动:

"Reading": "<?>Scanner_PowerGood.Value; <?>/VrdMgmt_1.VrdTemperatureCelsius |> expr{$1 != 1 ? 0 : ($2 == 32511 || $2 < 0 ? 1 : 0)}"
  • $1 != 1 ? 0:非上电状态一律不告警。
  • $2 < 0:补充对负值或异常值的过滤。
:white_check_mark: 3. 关联系统重启状态(可选)

利用 The host was restarted 这类事件作为上下文,在重启完成前静默特定告警

  • 可通过规则引擎实现:
    if last_event.code == 0x2C00000F and time_since_event < 15s then
      suppress_event("CPU_VRD_TEMP_FAIL")
    end
    
:white_check_mark: 4. 升级版本确认修复

已有类似问题在后续版本中被修复(见 search result #4):

10月版本已解决

建议确认当前版本 OpenUBMC2509 是否包含相关修复补丁。若未包含,应提交至维护团队考虑合入。


六、总结

项目 内容
问题本质 系统重启过程中,因传感器未就绪与监控策略未充分防抖,导致 CPU VRD/VDDQ 温度读取失败告警短暂上报。
是否真实故障 :cross_mark: 否,属正常瞬态行为,非硬件或固件缺陷。
根本原因 1. 传感器初始化晚于监控采集
2. 缺少有效防抖机制
3. PowerGood 判断存在窗口期
推荐措施 立即生效
• 增加 contbin_H10L5 防抖
• 优化事件触发表达式
长期规划
• 升级至已知修复版本

七、附录:相关实体与配置参考

实体 类型 描述
VrdTemperatureCelsius 软件属性 VRD 温度值,用于调速与告警
CpuDDRVddqTemp 软件属性 CPU DDR VDDQ 区域温度
CpuNBDVDDTemp 软件属性 CPU NB DVDD 区域温度
Scanner_PowerGood Scanner 检测系统是否处于稳定供电状态
VrdMgmt CSR Class VRD 电源与温度管理核心类
contbin_H10L5 防抖机制 用于温度读取失败的持续二值防抖

:books: 参考文档:

  • 《CSR配置字典之VrdMgmt类》
  • 《CSR硬件监控防抖机制》
  • 《CoolingRequirement类配置字典》

:white_check_mark: 建议闭环操作
将本次分析结果同步至研发团队,并推动将 Event_CpuXxxTempFail 类事件统一加上 contbin_H10L5 防抖机制,从根本上杜绝重启过程中此类“误报”问题。

相关链接:

  1. OS下用reboot命令和BMC的页面点重启BMC,系统事件提示的有歧义
  2. SmcDfxInfo映射的多个scanner取到的数值一样,可能是什么原因?
  3. 【iTestSmart 1.0.35】重启后查询电源信息,BMC重启成功,查询信息失败。
  4. AC循环概率出现CPU、内存温度拿不到的情况
  5. CSR配置字典之VrdMgmt类 | 文档中心 | openUBMC