2512版本内存占用率不显示

openubmc2512版本内存占用率不显示,但其他通过iBMA传递数据的功能都能显示。

注:BMA版本:2.22.0

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

openUBMC 25.12 版本内存占用率不显示问题分析

根据您提供的信息,openUBMC 25.12 版本中内存占用率显示为 --(暂无数据),但其他通过 iBMA 获取的数据(如网口带宽、系统信息等)可以正常显示,说明 iBMA 与 BMC 的基本通信是正常的。

以下是基于 知识图谱(KG)文档块(DC)外部搜索结果 综合分析的可能原因及解决方案。


:magnifying_glass_tilted_left: 问题现象

  • 问题系统:openUBMC 25.12
  • 问题表现
    • Web 界面“内存占用率”显示为 --(当前值)
    • 页面提示:“您必须先在服务器OS侧安装BMA 2.0,并完全启动后,方可查看内存占用率信息。”
    • 实际已安装并运行 BMA 2.22.0(满足最低版本要求)
    • 其他 iBMA 数据(如 CPU 占用率、网口带宽)可正常显示
  • 日志特征
    • /bmc/kepler/Systems/1/Memory 下的 BandwidthPercent 值为 255,表示 无效或未获取

:puzzle_piece: 核心原因分析

1. 内存占用率依赖特定路径与服务

根据知识图谱和文档分析:

组件 功能
iBMA 从操作系统侧采集内存使用数据(MemUsage, TotalPhysicalMemoryGiB 等)
host_agent 接收 iBMA 数据并通过 D-Bus / Redfish 上报至 BMC
compute 组件 管理 /bmc/kepler/Systems/1/Memory 接口,负责计算和暴露内存占用率
Web 界面 读取 bmc.kepler.Systems.Memory.MemoryMetrics.BandwidthPercent 字段进行展示

:white_check_mark: 即使 iBMA 和 host_agent 获取数据成功,如果 compute 组件未能正确解析或更新 MemoryMetrics 接口,Web 仍将显示空白。

2. BandwidthPercent = 255 表示数据无效

  • bmc.kepler.Systems.Memory.MemoryMetrics 接口中:
    • BandwidthPercent 类型为 U8,有效范围为 0–100
    • 值为 255 表示 未初始化、数据缺失或解析失败
  • 在 CSR 配置字典中也明确说明:

    “BandwidthPercent 默认值为 255,表示无效值或未初始化”

:pushpin: 这说明 compute 组件虽然存在,但未能从 host_agent 正确获取并转换内存使用数据。

3. compute 组件处理流程依赖 host_agent 上报

从文档知识库【DC1】可知:

“内存对象在compute组件进行管理,所以需要将host_agent获取到的内存相关信息上到compute组件管理的资源协作接口”

这意味着:

  • host_agent 必须将原始内存数据(如 UsedSystemMemoryGiB, TotalSystemMemoryGiB)上报
  • compute 必须监听该事件并计算占用率:
    $$
    \text{Memory Usage %} = \frac{\text{UsedSystemMemoryGiB}}{\text{TotalSystemMemoryGiB}} \times 100
    $$
  • 然后写入 MemoryMetrics.BandwidthPercent

若此链路中断,Web 界面无法获取有效值。


:white_check_mark: 可能原因总结

序号 可能原因 支持依据
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,未刷新数据 多次报告提到更新包后修复问题

:hammer_and_wrench: 排查与解决建议

:white_check_mark: 步骤 1:确认 iBMA 配置正确启用内存上报

登录 OS,检查 iBMA 配置文件(通常为 /opt/huawei/ibma/conf/iBMA.ini):

[MEMORY]
EnableMemoryMonitor = true
MemoryUsageCalculationMode = ActualUsage   ; 应为 "ActualUsage" 或类似

同时在 BMC Web 界面 → iBMA 管理 → 内存占用率计算 中确认是否勾选了:

:check_box_with_check: 真实内存使用量

:warning: 若未启用,则 iBMA 不会上报内存使用数据。


:white_check_mark: 步骤 2:检查 host_agent 是否获取到内存数据

通过一键日志或 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

如果 TotalPhysicalMemoryGiBnull(见【DC1】),说明 host_agent 未收到有效数据 → 检查 iBMA 是否运行正常。


:white_check_mark: 步骤 3:检查 compute 是否接收并处理数据

查看 compute 日志:

cat /tmp/AppDump/compute/mdb_info.log | grep -A5 -B5 "BandwidthPercent"

期望输出:

.BandwidthPercent
  value:      34

如果仍为:

.BandwidthPercent
  value:      255

→ 说明 compute 未成功处理数据,可能是版本不兼容或逻辑缺陷。


:white_check_mark: 步骤 4:确认 compute 与 host_agent 版本兼容性

虽然 iBMA 版本为 2.22.0 较新,但需确保:

  • host_agentcompute 属于同一 SDK 版本包
  • 存在闭源组件可能导致兼容性问题(参考【DC1】中 “是闭源组件导致的”)

建议:

  • 使用 openUBMC 官方发布的 完整 SDK 镜像
  • 升级至 最新 patch 包(如 DC1 中提到“最新的1230包中已解决这一问题”)

:white_check_mark: 步骤 5:尝试清除状态或重启关键服务

在 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

:brick: 附加建议

建议项 内容
升级到最新版本 openUBMC 25.12 后续补丁可能已修复此问题(如 DC1 中 Longbow 提到的 “1230 包”)
检查 Redfish 接口 访问:https://<BMC_IP>/redfish/v1/Systems/1,查看 Oem 中是否有 MemoryUsagePercent 字段,是否为 null
验证 SMBIOS 上报 CPU 和内存信息常通过 SMBIOS 上报(参见【DC1】评论)
确保 BIOS 正确生成 SMBIOS 表

:white_check_mark: 总结

项目 结论
根本原因 compute 组件未正确处理 host_agent 上报的内存使用数据,导致 MemoryMetrics.BandwidthPercent 保持为无效值 255
核心依赖链 iBMA → host_agent → compute → MemoryMetrics → Web UI
关键检查点 iBMA 配置、host_agent 数据获取、compute 数据处理
推荐操作 检查 iBMA 设置、验证各组件日志、升级 SDK 至最新补丁

:white_check_mark: 解决方向:确保从 OS 到 compute 的完整数据链路畅通,尤其是 compute 组件的正常运行与配置。

如有条件,请提供 host_agentcompute 的日志片段以进一步诊断。

相关链接:

  1. BMC 无法正常显示内存占用率信息
  2. web界面无法正常显示上下电状态
  3. 安装iBMA后ubmc的首页没有上传cpu和内存信息
  4. OS侧安装iBMA后openUBMC下不显示iBMA版本等信息
  5. HOST代理管理常见问题指南 | 文档中心 | openUBMC

麻烦查看一下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

host_agent有拿到值:

iBMA注册是成功的:

但是compute组件没有同步到host_agent那边的值,是否是闭源compute组件问题:

该问题已经澄清,是因为我们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),去掉该同步属性后内存占用率显示正常。谢谢支持