openubmc2512版本内存占用率不显示,但其他通过iBMA传递数据的功能都能显示。
注:BMA版本:2.22.0
答案内容由AI生成,仅供参考:
根据您提供的信息,openUBMC 25.12 版本中内存占用率显示为 --(暂无数据),但其他通过 iBMA 获取的数据(如网口带宽、系统信息等)可以正常显示,说明 iBMA 与 BMC 的基本通信是正常的。
以下是基于 知识图谱(KG)、文档块(DC) 和 外部搜索结果 综合分析的可能原因及解决方案。
--(当前值)/bmc/kepler/Systems/1/Memory 下的 BandwidthPercent 值为 255,表示 无效或未获取根据知识图谱和文档分析:
| 组件 | 功能 |
|---|---|
| iBMA | 从操作系统侧采集内存使用数据(MemUsage, TotalPhysicalMemoryGiB 等) |
| host_agent | 接收 iBMA 数据并通过 D-Bus / Redfish 上报至 BMC |
| compute 组件 | 管理 /bmc/kepler/Systems/1/Memory 接口,负责计算和暴露内存占用率 |
| Web 界面 | 读取 bmc.kepler.Systems.Memory.MemoryMetrics.BandwidthPercent 字段进行展示 |
即使 iBMA 和 host_agent 获取数据成功,如果 compute 组件未能正确解析或更新
MemoryMetrics接口,Web 仍将显示空白。
bmc.kepler.Systems.Memory.MemoryMetrics 接口中:
BandwidthPercent 类型为 U8,有效范围为 0–100“BandwidthPercent 默认值为 255,表示无效值或未初始化”
这说明 compute 组件虽然存在,但未能从 host_agent 正确获取并转换内存使用数据。
从文档知识库【DC1】可知:
“内存对象在compute组件进行管理,所以需要将host_agent获取到的内存相关信息上到compute组件管理的资源协作接口”
这意味着:
UsedSystemMemoryGiB, TotalSystemMemoryGiB)上报MemoryMetrics.BandwidthPercent若此链路中断,Web 界面无法获取有效值。
| 序号 | 可能原因 | 支持依据 |
|---|---|---|
| 1 | compute 组件异常或配置错误,未能处理来自 host_agent 的内存数据 | 【DC1】中明确指出 compute 负责管理 MemoryMetrics 接口 |
| 2 | host_agent 未正确上报告内存数据到 compute(资源协作接口未触发) | 【DC1】日志中 /bmc/kepler/Systems/1/Sms/... 中 TotalPhysicalMemoryGiB 为 "null" |
| 3 | iBMA 内存采集功能未启用或配置错误 | 【DC4】【DC6】显示 iBMA 设置中有 “内存占用率计算:真实内存使用量 / 可用内存量” 选项 |
| 4 | BMC Web 界面缓存或前端 bug,未刷新数据 | 多次报告提到更新包后修复问题 |
登录 OS,检查 iBMA 配置文件(通常为 /opt/huawei/ibma/conf/iBMA.ini):
[MEMORY]
EnableMemoryMonitor = true
MemoryUsageCalculationMode = ActualUsage ; 应为 "ActualUsage" 或类似
同时在 BMC Web 界面 → iBMA 管理 → 内存占用率计算 中确认是否勾选了:
真实内存使用量
若未启用,则 iBMA 不会上报内存使用数据。
通过一键日志或 SSH 登录 BMC,查看:
cat /tmp/AppDump/host_agent/mdb_info.log | grep -A5 -B5 "MemUsage"
期望输出示例:
.MemUsage
value: 3.43
.TotalPhysicalMemoryGiB
value: 126.22
.UsedSystemMemoryGiB
value: 4.33
如果
TotalPhysicalMemoryGiB为null(见【DC1】),说明 host_agent 未收到有效数据 → 检查 iBMA 是否运行正常。
查看 compute 日志:
cat /tmp/AppDump/compute/mdb_info.log | grep -A5 -B5 "BandwidthPercent"
期望输出:
.BandwidthPercent
value: 34
如果仍为:
.BandwidthPercent
value: 255
→ 说明 compute 未成功处理数据,可能是版本不兼容或逻辑缺陷。
虽然 iBMA 版本为 2.22.0 较新,但需确保:
建议:
在 BMC 上执行:
# 重启 iBMA(在 OS 执行)
service ibma restart
# 重启 host_agent 和 compute(在 BMC 执行)
systemctl restart host_agent
systemctl restart compute
# 或使用 busctl 重置资源
busctl call bmc.kepler.host_agent /bmc/kepler/Systems/1/Sms bmc.kepler.Systems.Sms ResetService
| 建议项 | 内容 |
|---|---|
| 升级到最新版本 | openUBMC 25.12 后续补丁可能已修复此问题(如 DC1 中 Longbow 提到的 “1230 包”) |
| 检查 Redfish 接口 | 访问:https://<BMC_IP>/redfish/v1/Systems/1,查看 Oem 中是否有 MemoryUsagePercent 字段,是否为 null |
| 验证 SMBIOS 上报 | CPU 和内存信息常通过 SMBIOS 上报(参见【DC1】评论) 确保 BIOS 正确生成 SMBIOS 表 |
| 项目 | 结论 |
|---|---|
| 根本原因 | compute 组件未正确处理 host_agent 上报的内存使用数据,导致 MemoryMetrics.BandwidthPercent 保持为无效值 255 |
| 核心依赖链 | iBMA → host_agent → compute → MemoryMetrics → Web UI |
| 关键检查点 | iBMA 配置、host_agent 数据获取、compute 数据处理 |
| 推荐操作 | 检查 iBMA 设置、验证各组件日志、升级 SDK 至最新补丁 |
解决方向:确保从 OS 到 compute 的完整数据链路畅通,尤其是
compute组件的正常运行与配置。
如有条件,请提供 host_agent 和 compute 的日志片段以进一步诊断。
相关链接:
麻烦查看一下host_agent的资源协作接口,具体查看方式如下:
1、ssh连接bmc
2、发送
busctl --user introspect bmc.kepler.host_agent /bmc/kepler/Systems/1/Sms/1/ComputerSystem/Systems/1/Summary |cat
查看属性MemUsage是否有获取到
或者进行一键收集后,查看以下路径文件
dump_info\AppDump\host_agent\mdb_info.log
查看该资源协作接口下的State是否为0
/bmc/kepler/Systems/1/Sms bmc.kepler.Systems.Sms.SmsStatus
查看该资源协作接口下的Registered是否为true
/bmc/kepler/Systems/1/Sms bmc.kepler.Systems.Sms
该问题已经澄清,是因为我们BCU的sr CPUMetrics_1对象的ConsumedPowerWatt属性配置成了同步属性,导致compute组件异常:pcall failed(kepler.class.SetSyncPropertyError: The property ConsumedPowerWatt of the object CPUMetrics_1_010101 is a synchronous property and cannot be set),去掉该同步属性后内存占用率显示正常。谢谢支持