CPU占用率无法获取

问题描述

鲲鹏950环境,带内未装BMA,CPU加压情况下,BMC界面CPU占用率一直显示为0

环境信息

重现步骤

  1. 上电情况下查看BMC界面CPU占用率为0

  2. 带内加压,加压命令为 stress -c 384 -t 999

  3. 查看BMC界面,CPU占用率为0

环境日志如下:

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

:clipboard: 总结

项目 内容
根本原因 未安装BMA导致BMC无法获取操作系统侧CPU占用数据
现象解释 Web界面缺乏有效数据源,显示默认值0
推荐方案 部署BMA + 启用host_agent + 确认compute服务正常
临时方案 使用topmdbctl或Redfish API手动查询

:white_check_mark: 结论:您遇到的问题属于典型“无BMA导致性能数据缺失”场景。请优先部署BMA服务以恢复完整监控能力。

点击此处查看详细分析解答

关于OpenUBMC2509环境下CPU占用率无法获取的问题分析与解决方案

根据您提供的问题描述,鲲鹏950环境中在未安装BMA(带内代理模块)的情况下,BMC Web界面中的CPU占用率始终显示为0,即使在CPU加压的情况下也无变化。以下是基于现有知识库信息的全面分析与解决方案建议。


:magnifying_glass_tilted_left: 问题分析

1. CPU占用率的获取机制

在OpenUBMC系统中,CPU占用率信息通常通过以下路径获取:

  • 数据源:CPU占用率信息主要来源于 host_agentcompute 服务组件。
  • 关键属性:核心指标为 CtrlCPUUsagePercentBandwidthPercent,位于资源对象 /bmc/kepler/Systems/1/ProcessorSummary/ProcessorMetrics 中。
  • 获取方式
    • 通过 Redfish 接口:/redfish/v1/Systems/1/ProcessorSummary/ProcessorMetrics
    • 通过 MDB 命令:mdbctl lsprop CPUMetrics_1_010101
    • 通过 Web 界面“系统监控”模块展示。

:pushpin: 参考文档:文档编号6(《算力部件相关FAQ》)明确指出:

# 查询CPU占用率的推荐方法
mdbctl lsprop CPUMetrics_1_010101
# 或通过Redfish接口查询 BandwidthPercent 属性

2. BMA缺失对数据采集的影响

BMA(Baseboard Management Agent)是带内操作系统侧的关键组件,负责采集系统运行时指标(如CPU、内存使用率),并通过带内通道上报给BMC。

  • 当前环境未安装BMA,意味着BMC失去了来自操作系统的实时性能数据源。
  • 在这种情况下,BMC可能:
    • 无法获取真实的CPU使用率;
    • 使用默认值(如0)填充显示字段;
    • 仅能依赖有限的IPMI传感器或本地进程监控(如top),但这通常不会集成到Web界面。

:warning: 风险提示:若系统未部署BMA,Web界面显示的CPU/Memory占用率信息极有可能不准确或缺失,这与您观察到的现象完全吻合。


:puzzle_piece: 现有信息佐证

信息来源 关键内容
知识图谱实体 CPU Occupancy Rate 显示为“–”,表明监控数据未正常获取或显示异常。
文档chunk #5 用户反馈“CPU占用率–”,并建议检查Redfish接口返回是否为空。
文档chunk #1 明确提到“BMC CPU占用率测试失败”,且日志中cat /tmp/top.log可读取数据,但最终测试仍Fail —— 说明底层工具可以采数,但上层集成存在问题。
文档chunk #7 提到内存占用率需经 host_agent → compute 流程处理后才可用于Web展示,CPU逻辑类似。

:white_check_mark: 解决方案建议

:white_check_mark: 方案一:部署BMA以支持带内监控(推荐)

由于当前环境缺少BMA,最根本的解决办法是安装并启用BMA服务

步骤:

  1. 确认您的OS Anolis 23.3系统支持BMA安装包;
  2. 从OpenUBMC社区获取适用于鲲鹏950和Anolis的BMA RPM包;
  3. 安装并启动BMA服务:
    rpm -ivh bma-agent-*.rpm
    systemctl start bma-agent
    systemctl enable bma-agent
    
  4. 验证BMA与BMC通信状态:
    # 在BMC端执行
    busctl --user introspect bmc.kepler.host_agent /bmc/kepler/Systems/1/Sms
    # 查看 Registered 是否为 true
    

:white_check_mark: 成功后,CPU占用率将通过BMA上报至BMC,并在Web界面正常显示。


:white_check_mark: 方案二:验证底层数据是否可获取(诊断用)

即使暂不安装BMA,也可尝试确认BMC能否自行采集数据。

1. 检查MDB接口中的CPU指标

登录BMC SSH,执行:

mdbctl lsprop CPUMetrics_1_010101

观察 BandwidthPercent 是否为 255(无效值)或持续为 0

2. 手动运行top查看BMC自身CPU使用

top -b -n 1 | head -10

确认 idle 值是否随压力下降,排除硬件或系统级问题。

3. 调用Redfish API验证

curl -k -u <用户>:<密码> -X GET https://<BMC_IP>/redfish/v1/Systems/1/ProcessorSummary/ProcessorMetrics

查看响应中 BandwidthPercent 字段是否为 null 或缺失。


:white_check_mark: 方案三:检查compute服务状态

compute 组件负责将原始数据转换为Web界面可用的指标。

操作步骤:

  1. 检查compute服务是否运行:
    ps | grep compute
    
  2. 查看日志是否有异常:
    journalctl -u compute.service --no-pager -n 100
    
  3. 若服务异常,尝试重启:
    systemctl restart compute
    

:locked: 注意事项

  • OpenUBMC2509版本限制:该版本存在已知的Web界面数据显示问题(如内存、CPU显示为“–”),尤其是在数据源异常时缺乏容错处理。
  • Kernel兼容性:6.6内核可能存在与旧版host_agent通信机制不兼容的情况,建议确认所用host_agent版本是否支持6.6-005内核。
  • 替代方案:若短期无法部署BMA,建议通过IPMI工具链(如ipmitool) 或直接SSH登录BMC执行top命令进行初步监控。

:clipboard: 总结

项目 内容
根本原因 未安装BMA导致BMC无法获取操作系统侧CPU占用数据
现象解释 Web界面缺乏有效数据源,显示默认值0
推荐方案 部署BMA + 启用host_agent + 确认compute服务正常
临时方案 使用topmdbctl或Redfish API手动查询

:white_check_mark: 结论:您遇到的问题属于典型“无BMA导致性能数据缺失”场景。请优先部署BMA服务以恢复完整监控能力。

如有进一步日志(如mdb_info.loghost_agent.log),欢迎补充以深入排查。

参考这个帖子进行初步排查
docs/docs/zh/development/faq/hardware/compute.md · openUBMC/docs - AtomGit | GitCode

环境日志未上传

debug日志.txt (203.8 KB)

compute 组件开启debug日志如下

1、查询属性值为0

mdbctl lsprop CPUMetrics_1_010101
bmc.kepler.Object.Properties
ClassName=“CPUMetrics”
ObjectIdentifier=[1,“1”,“1”,“010101”]
ObjectName=“CPUMetrics_1_010101”
TraceSamplingRate=0
bmc.kepler.Systems.Processor.ProcessorMetrics
BandwidthPercent=0
BandwidthThresholdPercent=100
ConsumedPowerWatt=747

2、查看debug日志,获取到的CPU占用率为0

2026-03-06 03:35:15.302744 compute DEBUG: cpu_object.lua(333): update cpu0 mem power, cc=0, power=4
2026-03-06 03:35:15.414824 compute DEBUG: cpu_object.lua(333): update cpu1 mem power, cc=0, power=5
2026-03-06 03:35:15.560777 compute DEBUG: cpu_object.lua(361): update cpu1 memory temperature, cc=0, temp=58.000000
2026-03-06 03:35:15.606909 compute DEBUG: memory_service.lua(374): update memory power successfully, power = 8
2026-03-06 03:35:16.074837 compute INFO: imu_m7_log_collect.lua(507): process_return_log system_id=1
2026-03-06 03:35:16.075605 compute INFO: imu_m7_log_collect.lua(568): [imu_collect] check_obj_switch_condition ret=false system_id=1
2026-03-06 03:35:16.076203 compute DEBUG: imu_m7_log_collect.lua(483): cpu2_m7_log = false cpu0_m7_log = false cpu0_imu_log = false cpu1_imu_log = false cpu1_m7_log = false
2026-03-06 03:35:16.124404 compute DEBUG: cpu_service.lua(444): update cpu usage successfully, usage = 0
2026-03-06 03:35:16.659861 compute DEBUG: pmu_object.lua(79): start the faster loop to query CPU and memory temperatures

Kunlun_CPU_Usage=0.z01.txt|attachment (8 MB)

Kunlun_CPU_Usage=0.zip.txt|attachment (5.6 MB)

bma的状态呢?没有bma的话,就是从imu获取的,你发送的这个日志也是符合代码的。请参考上述文档进行全量排查。

看上面回复中的debug日志附件,看到从IMU获取到的数据是0,那这个是符合预期嘛?还是需要IMU相关领域的同学帮忙定位?

这个数据是正常的。可以加压测试一下,看是否会有波动进一步验证。

不加压的时候,CPU占用率会在0、1、2之间浮动,加压状态下,一直为0。是需要测试比如加压到50%的情况吗?

可以向imu的同学咨询一下这是否正常

需要找项目对应的接口人找到IMU领域对应的同学嘛?

对的,后续就不是bmc侧的问题了,麻烦关闭一下帖子