Redfish接口MemoryMetrics资源信息、ProcessorsMetrics资源信息缺失

// 此模板仅供参考,如果不适用可以修改

问题描述

Redfish接口查询内存MemoryMetrics资源信息、ProcessorsMetrics资源信息,无法获取CE故障信息

期望结果

1、当前是否有方法获取MemoryMetrics中的DRAM的CE错误计数,以及ProcessorsMetrics中的SRAM的CE错误计数

2、如果有麻烦提供方法,如果没有麻烦提供一下实现方案

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

总结与建议

项目 结论
:white_check_mark: 是否现有方法获取 CE 错误 :cross_mark: — 目前 Redfish 接口未暴露 DRAM 和 SRAM 的 CE 错误计数
:magnifying_glass_tilted_left: 可行替代监控手段 :check_mark: 使用 ErrorStormCount 识别高频率 CE 错误行为
:check_mark: 查看 compute 组件日志排查异常
:rocket: 建议实现路径 1. 扩展 MemoryMetrics 与新建 ProcessorsMetrics
2. 添加 CorrectableECCCount 字段至 CSR 配置
3. 通过 Redfish 接口映射配置暴露新字段
4. 由 BMC Agent 或 Host Agent 上报硬件 ECC 数据
点击此处查看详细分析解答

Redfish接口MemoryMetrics与ProcessorsMetrics资源信息缺失问题分析

问题描述

通过Redfish接口查询系统内存和处理器的性能度量资源(MemoryMetricsProcessorsMetrics)时,无法获取DRAM的可纠正错误(CE)计数以及SRAM相关的CE错误信息。当前存在以下两个核心诉求:

  1. 是否有方法可以获取MemoryMetrics中DRAM的CE错误计数,以及ProcessorsMetrics中SRAM的CE错误计数?
  2. 如果已有方法,请提供具体获取方式;如果没有,请提出可行的实现方案。

当前系统支持情况分析

一、MemoryMetrics 资源支持现状

根据提供的上下文信息:

  • Redfish资源路径

    • BMC.kepler.Systems.Memory.MemoryMetrics 是 Redfish 暴露的内存性能指标资源路径。
    • 该资源包含关键属性如:BandwidthPercentBandwidthThresholdPercent 等。
    • 默认情况下,BandwidthPercent 的默认值为 255,表示 未初始化或无效状态
  • 相关命令行与接口访问方式

    • 可通过 Redfish URL 访问:
      https://device_ip/redfish/v1/Systems/1/MemorySummary/MemoryMetrics
    • 或通过资源协作接口 D-Bus 命令查询:
      mdbctl lsprop MemoryMetrics_1_010101
      
  • 错误风暴监控支持

    • 存在 ErrorStormCount 字段,用于统计内存模块的错误风暴次数(包括 CE 和 UCE)。
    • 该指标可通过 bmc.kepler.Systems.FDMDomain.MemoryOnChipRAS 接口获取,属于 RAS(可靠性、可用性、可维护性)子系统的一部分。
  • 内存 ECC 错误记录能力

    • LifeTimeUncorrectableECCErrorCount:记录生命周期内不可纠正 ECC 错误总数。
    • 但目前 缺少直接暴露的 CorrectableECC(CE)计数字段 在标准 Redfish MemoryMetrics 中。

:white_check_mark: 结论:当前 Redfish 接口 未直接提供 DRAM 可纠正 ECC 错误(CE)的独立计数字段,仅能通过 ErrorStormCount 间接反映高频 CE 事件。


二、ProcessorsMetrics 资源支持现状

  • 在提供的知识图谱及文档中:

    • 没有提及 ProcessorsMetrics 这一 Redfish 资源路径或其内部属性。
    • 没有发现任何关于 CPU/处理器缓存(如 L1/L2/L3 SRAM)的 CE 错误计数字段。
    • BMC 层面可通过 Redfish 查询 CPU 基本信息(如型号、温度、利用率),但 未涉及 SRAM ECC 错误统计
  • 关联组件:

    • compute 组件负责 CPU 和内存管理,日志文件为 cpu_infomem_info
    • 但这些日志主要用于静态信息收集,未明确记录运行时 ECC 错误。

:cross_mark: 结论:当前 Redfish 接口未暴露 ProcessorsMetrics 资源,也 无 SRAM CE 错误计数的公开访问机制


回答原始问题

1. 当前是否有方法获取以下信息?

需求项 是否支持 说明
MemoryMetrics 中 DRAM 的 CE 错误计数 :cross_mark: 不支持 无直接字段;可通过 ErrorStormCount 推断高频率 CE 行为
ProcessorsMetrics 中 SRAM 的 CE 错误计数 :cross_mark: 不支持 无相关资源定义或接口暴露

2. 获取方法与实现建议

:white_check_mark: 已有替代监控手段(Memory)

虽然无法直接获取 DRAM 可纠正 ECC 错误计数(CorrectableECCCount),但可通过以下方式间接监测:

方法一:使用 ErrorStormCount 监控异常 CE 活动
  • 接口路径bmc.kepler.Systems.FDMDomain.MemoryOnChipRAS
  • 字段名ErrorStormCount
  • 描述:累计内存条发生的“错误风暴”次数,包含 CE 和 UCE。
  • 适用场景:检测内存是否存在持续的软错误行为(如老化、电压不稳)。
  • 命令示例
    mdbctl lsprop bmc.kepler.Systems.FDMDomain.MemoryOnChipRAS ErrorStormCount
    
方法二:通过 BMC 日志或 compute 组件分析
  • 查看 /var/log/compute/ 目录下的日志文件,如:
    • npu_info(含 ECC 错误字段)
    • mem_info(可能包含带外采集的 ECC 数据)
  • 特别关注 Single ECCDouble ECC 字段是否在其他设备上有记录。

:warning: 缺失部分:SRAM CE 错误监控(CPU/Cache)

目前 没有任何接口提供处理器内部 SRAM(如缓存、寄存器文件)的 ECC 错误数据

实现建议(新增功能方案)

若需实现该功能,建议如下:


:hammer_and_wrench: 实现方案建议

一、短期补充方案(利用现有架构扩展)

目标 方案
1. 增加 DRAM CorrectableECC 计数字段 修改 MemoryMetrics CSR 配置类,新增 CorrectableECCCount 字段:
json\n{\n "MemoryMetrics": {\n "BandwidthPercent": 30,\n "CorrectableECCCount": 125\n }\n}\n
并通过 BMC Agent 从 BIOS/硬件定期采集并更新。
2. 暴露 ProcessorsMetrics 资源 定义新的 Redfish 资源路径:
/redfish/v1/Systems/1/Processors/1/Metrics
新增字段:
- CacheCorrectableECCCount
- CacheUncorrectableECCCount
- LastECErrorsLocation(最后出错的缓存行)
3. D-Bus 接口扩展 在资源协作接口中增加:
bmc.kepler.Systems.Processors.Metrics
属性:CorrectableECC, UncorrectableECC(U32 类型)

二、采集数据来源建议

数据类型 数据来源 采集方式
DRAM CE 错误 BIOS/SMBIOS、IPMI Sensor、EDAC Driver 由 BMC Agent 定期轮询或订阅中断
CPU Cache CE 错误 Machine Check Architecture (MCA)、Core RAS Registers 通过带内 Agent(如 Host OS 上的守护进程)上报给 BMC
RAS 事件汇总 FDM(Field Diagnosis Manager)模块 聚合内存、CPU、NPU 的软硬件错误,生成统一视图

三、Redfish 接口定制步骤(参考 openUBMC 实践)

  1. 配置文件位置

    rackmount/interface_config/redfish/mapping_config/
    
  2. 添加 Metrics 映射配置(示例):

    {
      "Path": "BMC.kepler.Systems.Memory.MemoryMetrics",
      "RedfishPath": "/redfish/v1/Systems/1/MemorySummary/MemoryMetrics",
      "Properties": [
        {
          "Name": "CorrectableECCCount",
          "Type": "Integer",
          "Description": "Total number of correctable ECC errors on DRAM",
          "Source": "dbus_property",
          "PropertyName": "CorrectableECCCount"
        }
      ]
    }
    
  3. 支持 Lua 脚本转换(如需单位处理):

    Formula = "return dbustool.get('/org/openbmc/MemoryECC', 'CorrectableCount')"
    

总结与建议

项目 结论
:white_check_mark: 是否现有方法获取 CE 错误 :cross_mark: — 目前 Redfish 接口未暴露 DRAM 和 SRAM 的 CE 错误计数
:magnifying_glass_tilted_left: 可行替代监控手段 :check_mark: 使用 ErrorStormCount 识别高频率 CE 错误行为
:check_mark: 查看 compute 组件日志排查异常
:rocket: 建议实现路径 1. 扩展 MemoryMetrics 与新建 ProcessorsMetrics
2. 添加 CorrectableECCCount 字段至 CSR 配置
3. 通过 Redfish 接口映射配置暴露新字段
4. 由 BMC Agent 或 Host Agent 上报硬件 ECC 数据

后续行动建议

  1. 提交功能需求 RFC 至 openUBMC 社区:
    • 标题:Add Correctable ECC Count Support in MemoryMetrics and ProcessorsMetrics
    • 包含字段定义、数据源、Redfish 路径设计
  2. 联合 BIOS 团队 提供 EDAC 或 MCA 错误上报机制
  3. 在 compute 组件中增强 RAS 数据采集能力,并支持 Redfish 北向输出

如需进一步开发支持,建议参考文档:HOST代理管理常见问题指南 与《接口定制》指南。

你说的信息缺失是指对应字段查看不到,还是查询到的信息为无效值呢?

如果是字段缺失,请先明确当下openUBMC提供的redfish是否支持该能力

当前不支持,需要提供支持

没有对应字段

可以查看一下处理器资源下的ECCInfo属性与内存资源下的Oem/{{OemIdentifier}}/EccCount属性