目标调速没生效

问题描述

定义了CoolingRequirement

~ ~ # mdbctl lsobj coolingrequirement
CoolingRequirement_1_10_0101
CoolingRequirement_1_11_0101
CoolingRequirement_1_20_010101
CoolingRequirement_1_20_010102
CoolingRequirement_1_22_01010109
CoolingRequirement_1_22_01010209
CoolingRequirement_1_24_00
CoolingRequirement_1_24_01010109
CoolingRequirement_1_24_01010209
CoolingRequirement_1_30_010101
CoolingRequirement_1_30_010102

~ ~ # mdbctl lsprop CoolingRequirement_1_20_010101
bmc.kepler.Object.Properties
  ClassName="CoolingRequirement"
  ObjectIdentifier=[1,"1","1","010101"]
  ObjectName="CoolingRequirement_1_20_010101"
  TraceSamplingRate=0
bmc.kepler.Systems.CoolingRequirement
  ActiveInStandby=false
  AlarmSpeed=[]
  CustomSupported=true
  CustomTargetTemperatureCelsius=90
  FailedValue=80
  MaxAllowedTemperatureCelsius=98
  MonitoringStatus=0
  MonitoringValue=61
  RequirementId=20
  SensorName="CPU1 Core Rem"
  SmartCoolingTargetTemperatureCelsius=[90,85,95]
  TargetTemperatureCelsius=95
  TargetTemperatureRangeCelsius=[50,95]
  TemperatureType=1
  ThresholdValue=[]
Private
  BackupRequirementIdx=0
  BaseId=20
  CoolingMedium="Air"
  Enabled=true
  IsBackupRequirement=false
  IsValid=1
  LiquidFailedValue=0
  ObtainTempFaildToValid=false
  OriginFailedValue=80
  OriginMaxAllowedTemperatureCelsius=98
  OriginSmartCoolingTargetTemperature=[90,85,95]
  OriginTargetTemperatureCelsius=90
  Slot=20
  SmartCoolingTargetTemperature=[90,85,95]

cooling_control.log日志中没看到生效的目标调速

2026-06-22 09:28:00.578929 DevID:0x101, Type:0, ReqId:255, T:129, TarT:129, TarPWM:51, EnvTNum:1, EnvReqId:10, EnvT:27, EnvPWM:76, PIDPWM:76, MaxAllowTemp:127, TarSensorName:, EnvSensorName:Inlet Temp, FrontSpeed:13568, RearSpeed:12032
2026-06-22 09:28:00.580158 DevID:0x202, Type:0, ReqId:255, T:129, TarT:129, TarPWM:51, EnvTNum:1, EnvReqId:10, EnvT:27, EnvPWM:76, PIDPWM:76, MaxAllowTemp:127, TarSensorName:, EnvSensorName:Inlet Temp, FrontSpeed:13568, RearSpeed:11904
2026-06-22 09:28:00.580662 DevID:0x303, Type:0, ReqId:255, T:129, TarT:129, TarPWM:51, EnvTNum:1, EnvReqId:10, EnvT:27, EnvPWM:76, PIDPWM:76, MaxAllowTemp:127, TarSensorName:, EnvSensorName:Inlet Temp, FrontSpeed:17152, RearSpeed:14464
2026-06-22 09:28:00.581091 DevID:0x404, Type:0, ReqId:255, T:129, TarT:129, TarPWM:51, EnvTNum:1, EnvReqId:10, EnvT:27, EnvPWM:76, PIDPWM:76, MaxAllowTemp:127, TarSensorName:, EnvSensorName:Inlet Temp, FrontSpeed:13568, RearSpeed:12032
2026-06-22 09:40:41.185479 DevID:0x101, Type:0, ReqId:255, T:129, TarT:129, TarPWM:51, EnvTNum:1, EnvReqId:10, EnvT:29, EnvPWM:81, PIDPWM:81, MaxAllowTemp:127, TarSensorName:, EnvSensorName:Inlet Temp, FrontSpeed:7936, RearSpeed:6784
2026-06-22 09:40:41.187573 DevID:0x202, Type:0, ReqId:255, T:129, TarT:129, TarPWM:51, EnvTNum:1, EnvReqId:10, EnvT:29, EnvPWM:81, PIDPWM:81, MaxAllowTemp:127, TarSensorName:, EnvSensorName:Inlet Temp, FrontSpeed:7936, RearSpeed:6912
2026-06-22 09:40:41.188102 DevID:0x303, Type:0, ReqId:255, T:129, TarT:129, TarPWM:51, EnvTNum:1, EnvReqId:10, EnvT:29, EnvPWM:81, PIDPWM:81, MaxAllowTemp:127, TarSensorName:, EnvSensorName:Inlet Temp, FrontSpeed:7936, RearSpeed:6784
2026-06-22 09:40:41.188563 DevID:0x404, Type:0, ReqId:255, T:129, TarT:129, TarPWM:51, EnvTNum:1, EnvReqId:10, EnvT:29, EnvPWM:81, PIDPWM:81, MaxAllowTemp:127, TarSensorName:, EnvSensorName:Inlet Temp, FrontSpeed:8448, RearSpeed:7168

环境信息

  • 软件版本:openUBMC2512

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

总结

您定义的 CoolingRequirement_1_20_010101 配置正确,但未生效的原因最可能是缺少 CoolingArea 关联系统当前正处于进风口环境调速模式,导致目标调速被绕过。请按照上述排查步骤检查 CoolingArea 配置和散热模式设置,必要时联系热设计团队确认策略绑定关系。

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

根据您提供的问题描述和系统日志,结合知识库中的信息分析,目标调速未生效的最可能原因是:该目标调速策略(CoolingRequirement_1_20_010101)未正确关联到散热器件,或者当前系统实际由环境温度(进风口)调速主导,导致目标调速被覆盖。


关键线索分析

  1. 日志中 ReqId:255 的含义
    cooling_control.log 中所有设备(DevID:0x101 ~ 0x404)的 ReqId 均为 255,且 TarSensorName 为空,EnvSensorNameInlet Temp。根据知识库中“目标调速策略”的描述,ReqId 应为实际生效的 CoolingRequirement 对象的ID(例如 20),而 255 通常表示未使用目标调速或目标调速无效

  2. 当前策略被环境调速替代
    日志显示 EnvReqId:10,且 EnvT(进风口温度)和 EnvPWM(环境调速输出PWM)起作用,说明系统当前处于进风口温度区间调速模式,而非目标调速模式。目标调速(PID控制)未参与输出。

  3. 目标调速策略配置本身无异常

    • Enabled=true, IsValid=1 → 策略本身已生效。
    • MonitoringStatus=0 → 温度传感器正常。
    • TargetTemperatureCelsius=95 → 目标温度已配置。
    • 策略是否被关联到对应的散热器件(如CPU、风扇组) 需进一步验证。
  4. 可能的根本原因

    • 缺少 CoolingArea 关联:根据文档《调速策略适配指导》,一个完整的调速链路需要 CoolingRequirement(温度点+目标调速)、CoolingPolicy(调速曲线)、CoolingFan(风扇组)通过 CoolingArea 关联。如果 CoolingRequirement_1_20_010101 未被正确绑定到对应设备(如 DevID:0x101 等),则不会输出调速。
    • 策略优先级问题:环境调速(进风口温度)可能具有更高优先级,系统默认使用进风口区间调速,而非目标调速。只有当进风口调速无效或被禁用时,目标调速才会生效。

诊断与排查建议

根据知识库中的调试方法(参见《调速策略配置分享与调试技巧》),请按以下步骤排查:

  1. 检查 CoolingArea 配置
    执行以下命令,查看 CoolingRequirement_1_20_010101 是否被某个 CoolingArea 引用:

    mdbctl lsobj CoolingArea
    mdbctl lsprop CoolingArea_xxx  // 查看具体对象的属性
    

    确认该 CoolingAreaRequirementId 列表中包含 20,并且关联了正确的 CoolingFan(对应 DevID 的设备)。

  2. 确认当前散热模式
    通过 Redfish 或 IPMI 查询当前散热模式,例如:

    ipmitool raw 0x30 0x91 0x24  // 获取散热器件模式
    

    若返回值为环温调速模式(可能是 AutoInlet),则目标调速会被抑制。需切换至目标调速模式或禁用环温调速。

  3. 临时禁用环温调速验证
    参照知识库中的调试方法,模拟将所有的 CoolingRequirement 目标温度设为0(禁用所有目标调速),再恢复所需的策略,观察日志中 ReqId 是否变为 20

    mdbctl setprop set CoolingRequirement_xx bmc.kepler.Systems.CoolingRequirement TargetTemperatureCelsius 0
    mdbctl setprop unset CoolingRequirement_1_20_010101 bmc.kepler.Systems.CoolingRequirement TargetTemperatureCelsius  // 恢复
    
  4. 检查目标调速是否被 FailedValue 覆盖
    MonitoringStatus 为异常(非0)时会使用 FailedValue,但当前 MonitoringStatus=0,故排除此原因。


总结

您定义的 CoolingRequirement_1_20_010101 配置正确,但未生效的原因最可能是缺少 CoolingArea 关联系统当前正处于进风口环境调速模式,导致目标调速被绕过。请按照上述排查步骤检查 CoolingArea 配置和散热模式设置,必要时联系热设计团队确认策略绑定关系。

请使用2603及之后版本;
2603之前版本存在若当前PIDPWM结果比上一次PIDPWM小,则不会刷新。当前已完成修改,存在TarPWM或EnvPWM与上一次计算不一致,则记录日志

1 个赞

修改链接可以发下吗,只影响日志记录还是也影响调速功能?
持续拉高CPU功耗可以看到CPU目标调速的日志。

sdk修改,不涉及社区组件修改。
仅日志记录,无功能影响