基于2509的BMC版本,风扇调速失效

基于2509构建的BMC
适配了一款GPU卡,配置了调速策略:


但是给卡加压测试时导致掉卡,发现是因为没有触发调速策略。
于log中发现如下打印,怀疑是cooling组件挂掉了:

希望可以指导定位为何没有触发调速策略。

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

结论

调速策略未触发的直接原因是 NPU组件未被识别为冷却设备,导致其关联的CoolingRequirement无法被激活。建议重点检查硬件注册、冷却设备映射和传感器可用性,并优先使用稳定的线性调速策略替代MPC模型。

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

风扇调速策略未触发问题的定位分析

根据您提供的信息,在基于2509版本BMC适配GPU卡时,配置了CoolingRequirement_1_72调速策略,但在GPU加压测试导致掉卡的情况下,该调速策略未能触发。结合日志分析,可以系统性地定位问题。

问题现象总结

  • 环境信息:基于2509版本的BMC,适配GPU卡并配置了调速策略。
  • 配置内容
    • CoolingRequirement_1_72:目标温度80℃,最大允许温度100℃,异常转速为80%。
    • CoolingArea_1_72:关联风扇1至12。
  • 问题表现:GPU加压测试中出现掉卡,调速策略未生效,疑似cooling组件异常。

关键日志分析

从日志中发现多个关键错误和警告信息,指向cooling组件和thermal_mgnt组件的运行异常:

1. thermal_mgnt 组件无法找到冷却需求对象

thermal_mgnt WARNING: dev_object.lua(167): cannot find adapter, object name: CoolingRequirement_1_10_0101040C

此警告多次重复出现,表明thermal_mgnt组件无法识别或访问特定的CoolingRequirement对象。虽然对象名称与配置中的CoolingRequirement_1_72不同,但说明了配置对象加载或注册可能存在普遍性问题。

2. MPC(模型预测控制)模块禁用

cooling NOTICE: [MPC] Disenable mpc

MPC是高级调速算法之一,其被禁用可能影响整体调速逻辑的执行,尤其是在复杂负载场景下。

3. 缺少冷却设备定义

cooling ERROR: There is no cooling device for component npu

此错误非常关键:系统明确指出NPU组件没有定义对应的冷却设备。这意味着尽管配置了针对GPU/NPU的CoolingRequirement,但系统底层并未将该硬件组件与风扇冷却系统正确关联。

4. 模型数据获取失败

Get CPU Kmeans model data shifter failed
Get Kmeans input data failed

表明MPC依赖的机器学习模型数据加载失败,进一步说明调速策略中的智能控制路径已中断。

5. 泵对象检测超时(非关键)

Pump object tmeout detection starting, expect pumps num: 0, cur pumps num: nil

此信息提示液冷泵检测异常,但若系统为风冷设计且无泵,则为非关键警告。

根本原因分析

综合来看,调速策略未触发的根本原因是:GPU/NPU组件未被正确识别为需要冷却的设备,导致其关联的CoolingRequirement无法激活

具体表现为:

问题层级 原因 证据支持
配置关联缺失 NPU未注册到冷却系统中 There is no cooling device for component npu
对象注册失败 CoolingRequirement对象未正确加载或注册 cannot find adapter, object name: CoolingRequirement_1_10_0101040C
控制逻辑中断 MPC模型因数据缺失而失效 Get Kmeans input data failed, [MPC] Disenable mpc

解决建议

:white_check_mark: 1. 确认硬件组件注册(关键)

确保NPU/GPU在系统中已被识别,并正确绑定到冷却框架。检查以下配置项:

  • 确认EntityIdEntityInstance是否正确指向GPU/NPU硬件。
  • 检查CoolingRequirement_1_72中的MonitoringValue所引用的ThresholdSensor_ChipTemp.Reading是否存在且可读。

:white_check_mark: 2. 验证冷却设备映射

在PSR配置中确认是否已为NPU组件定义了对应的冷却设备。例如:

"CoolingDevice_NPU": {
    "Component": "NPU",
    "CoolingArea": "CoolingArea_1_72"
}

:white_check_mark: 3. 检查冷却模块状态

使用命令检查coolingthermal_mgnt模块是否正常运行:

systemctl status cooling
systemctl status thermal_mgnt

:white_check_mark: 4. 验证对象加载

通过MDB工具检查CoolingRequirement_1_72是否成功加载:

mdbctl lsobj CoolingRequirement_1_72

:white_check_mark: 5. 检查传感器状态

确认ThresholdSensor_ChipTemp状态正常:

mdbctl getobj ThresholdSensor_ChipTemp

确保其ReadingStatus为有效状态(非255),否则会触发MonitoringStatus=1,进入异常调速模式。

:white_check_mark: 6. 避免MPC依赖(临时方案)

若不需要MPC高级控制,可切换至线性调速策略(CoolingPolicy),避免因模型加载失败导致整体调速失效。


附加建议

  • 升级BMC版本:基于2509的版本可能存在已知bug,建议升级至稳定版本(如25.12 LTS)。
  • 迁移配置至 thermal_mgmt:根据文档趋势,未来调速相关配置应由thermal_mgmt统一管理(见“【已评审】cooling配置导入导出项迁移”建议)。
  • 增加日志调试级别:临时启用cooling组件的DEBUG日志,捕获更详细的调速决策流程。

结论

调速策略未触发的直接原因是 NPU组件未被识别为冷却设备,导致其关联的CoolingRequirement无法被激活。建议重点检查硬件注册、冷却设备映射和传感器可用性,并优先使用稳定的线性调速策略替代MPC模型。

  1. 所有基础调速能力均在thermal_mgmt组件中,具体为basic_cooling文件夹下的所有内容;
  2. 调速策略未生效,需确认配置是否正确,并可通过查看关键日志send target temp是否存在对应调速策略下发,或mdbctl lsobj 对应的CoolingRequirement对象下查看私有属性IsValid是否生效