// 此模板仅供参考,如果不适用可以修改
问题描述
Redfish接口查询内存MemoryMetrics资源信息、ProcessorsMetrics资源信息,无法获取CE故障信息
期望结果
1、当前是否有方法获取MemoryMetrics中的DRAM的CE错误计数,以及ProcessorsMetrics中的SRAM的CE错误计数
2、如果有麻烦提供方法,如果没有麻烦提供一下实现方案
// 此模板仅供参考,如果不适用可以修改
Redfish接口查询内存MemoryMetrics资源信息、ProcessorsMetrics资源信息,无法获取CE故障信息
1、当前是否有方法获取MemoryMetrics中的DRAM的CE错误计数,以及ProcessorsMetrics中的SRAM的CE错误计数
2、如果有麻烦提供方法,如果没有麻烦提供一下实现方案
答案内容由AI生成,仅供参考:
| 项目 | 结论 |
|---|---|
ErrorStormCount 识别高频率 CE 错误行为 |
|
1. 扩展 MemoryMetrics 与新建 ProcessorsMetrics2. 添加 CorrectableECCCount 字段至 CSR 配置3. 通过 Redfish 接口映射配置暴露新字段 4. 由 BMC Agent 或 Host Agent 上报硬件 ECC 数据 |
通过Redfish接口查询系统内存和处理器的性能度量资源(MemoryMetrics 和 ProcessorsMetrics)时,无法获取DRAM的可纠正错误(CE)计数以及SRAM相关的CE错误信息。当前存在以下两个核心诉求:
根据提供的上下文信息:
Redfish资源路径:
BMC.kepler.Systems.Memory.MemoryMetrics 是 Redfish 暴露的内存性能指标资源路径。BandwidthPercent、BandwidthThresholdPercent 等。BandwidthPercent 的默认值为 255,表示 未初始化或无效状态。相关命令行与接口访问方式:
https://device_ip/redfish/v1/Systems/1/MemorySummary/MemoryMetricsmdbctl lsprop MemoryMetrics_1_010101
错误风暴监控支持:
ErrorStormCount 字段,用于统计内存模块的错误风暴次数(包括 CE 和 UCE)。bmc.kepler.Systems.FDMDomain.MemoryOnChipRAS 接口获取,属于 RAS(可靠性、可用性、可维护性)子系统的一部分。内存 ECC 错误记录能力:
LifeTimeUncorrectableECCErrorCount:记录生命周期内不可纠正 ECC 错误总数。
结论:当前 Redfish 接口 未直接提供 DRAM 可纠正 ECC 错误(CE)的独立计数字段,仅能通过
ErrorStormCount间接反映高频 CE 事件。
在提供的知识图谱及文档中:
ProcessorsMetrics 这一 Redfish 资源路径或其内部属性。关联组件:
cpu_info、mem_info。
结论:当前 Redfish 接口未暴露 ProcessorsMetrics 资源,也 无 SRAM CE 错误计数的公开访问机制。
| 需求项 | 是否支持 | 说明 |
|---|---|---|
| MemoryMetrics 中 DRAM 的 CE 错误计数 | 无直接字段;可通过 ErrorStormCount 推断高频率 CE 行为 |
|
| ProcessorsMetrics 中 SRAM 的 CE 错误计数 | 无相关资源定义或接口暴露 |
虽然无法直接获取 DRAM 可纠正 ECC 错误计数(CorrectableECCCount),但可通过以下方式间接监测:
ErrorStormCount 监控异常 CE 活动bmc.kepler.Systems.FDMDomain.MemoryOnChipRASErrorStormCountmdbctl lsprop bmc.kepler.Systems.FDMDomain.MemoryOnChipRAS ErrorStormCount
/var/log/compute/ 目录下的日志文件,如:
npu_info(含 ECC 错误字段)mem_info(可能包含带外采集的 ECC 数据)Single ECC、Double ECC 字段是否在其他设备上有记录。目前 没有任何接口提供处理器内部 SRAM(如缓存、寄存器文件)的 ECC 错误数据。
若需实现该功能,建议如下:
| 目标 | 方案 |
|---|---|
| 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 的软硬件错误,生成统一视图 |
配置文件位置:
rackmount/interface_config/redfish/mapping_config/
添加 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"
}
]
}
支持 Lua 脚本转换(如需单位处理):
Formula = "return dbustool.get('/org/openbmc/MemoryECC', 'CorrectableCount')"
| 项目 | 结论 |
|---|---|
ErrorStormCount 识别高频率 CE 错误行为 |
|
1. 扩展 MemoryMetrics 与新建 ProcessorsMetrics2. 添加 CorrectableECCCount 字段至 CSR 配置3. 通过 Redfish 接口映射配置暴露新字段 4. 由 BMC Agent 或 Host Agent 上报硬件 ECC 数据 |
如需进一步开发支持,建议参考文档:HOST代理管理常见问题指南 与《接口定制》指南。
你说的信息缺失是指对应字段查看不到,还是查询到的信息为无效值呢?
如果是字段缺失,请先明确当下openUBMC提供的redfish是否支持该能力
当前不支持,需要提供支持
没有对应字段
可以查看一下处理器资源下的ECCInfo属性与内存资源下的Oem/{{OemIdentifier}}/EccCount属性