功耗封顶事件未产生问题分析
更新时间: 2026/05/29
在Gitcode上查看源码问题背景
- 单板类型:自研板;
- 软件版本:OpenUBMC 25.09;
- 涉及功能:功耗封顶,IMU,ipmi;
- 触发条件:在web页面电源&功率页面开启功率封顶,当功率超过封顶功率时,确认是否产生封顶触发事件(下电、重启、记录事件日志)。
- 业务表现:预期产生封顶失败事件和封顶触发事件(下电、重启、记录事件日志);实际仅发生了封顶失败事件,未产生封顶触发事件。
问题复现步骤
- BMC开启功率封顶,设置封顶失败后下电;
- 跑压力测试,使得功耗超过封顶功耗。
关键日志信息
封顶配置已下发至IMU信息:
定位过程
- 确认功耗封顶流程以及事件产生流程;
- 关于功率封顶的大致流程:功率封顶过程中,BMC始终会与IMU进行通信。BMC会定时从IMU获取功率封顶使能状态、功率封顶值、功率封顶失败策略、功率封顶触发状态(部分机型也可获取功率封顶失败状态),并根据获取的信息决定是否要再次下发。
- 关于功率封顶事件的产生:BMC从IMU获取到功率封顶触发或失败时,会将当前封顶服务的触发或失败状态置位;BMC有定时任务,会根据封顶服务的状态,置位整体的功率封顶触发或失败状态,从而产生相应的事件;除此之外,部分机型也支持IMU直接上报功率封顶失败,BMC会产生功率封顶触发及失败事件。
- 关于产生了封顶失败事件,未产生封顶触发事件,期望提供具体的日志,便于分析。
- 根据功耗封顶流程进行日志分析; 推测为BMC未正常从IMU获取到功率封顶触发与失败状态,这并不指向为BMC的问题,该状态为IPMI命令获取,可能为IMU未正常返回功率封顶触发与失败状态;且IMU也并未上报功率封顶失败;出现的功率封顶失败事件,为BMC对功率封顶值与系统功耗值的检查任务上报。
- 抓包确认IMU和IPMI交互,确定是否下发的功耗有问题;
- 确认是下发的功耗值是否正确; 经确认,功率封顶下发的功耗值是指的整机功率,是由IMU调的BMC这边的IPMI命令获取的,而并非单指带能源功率;因此需要进一步确认当前的整机功耗来源。
问题原因
下发的功耗并非设备的整机功耗,实际上当前环境风扇未插满,部分Fan对象SpeedStable为false。导致BMC不能返回正确的功耗给IMU
解决方案
风扇插满后尝试功耗封顶,功能正常。