问题背景
- 单板类型:NA;
- 软件版本:openUBMC 25.09;
- 涉及功能:风扇调速;
- 触发条件:OS上电、风扇转速正常(30%)的前提下,执行下电操作,大概两秒钟左右,因为一张PCIE卡的温度触发了异常调速。
- 业务表现:预期风扇正常调速;实际OS下电后,风扇转速持续保持在80%,噪声过大。
问题复现步骤
OS上电、风扇转速正常(30%)的前提下,执行下电操作,大概两秒钟左右,因为一张PCIE卡的温度触发了异常调速,该调速策略配置如下: 从现象分析,下电后scanner先检测到电源状态,将状态设置为disable,触发异常调速,将风扇转速拉高。然后cooling组件才判断电源状态为off,终止调速,风扇就一直保持着高转速。
由此是否可以引申出下面的情况:当执行OS下电时,部分pcie卡可能先下电,导致温度获取异常,从而触发异常调速,然后cooling组件在下电完成后终止调速,导致风扇会一直保持高转速,产生很大的噪声,并且影响整机功耗。
关键日志信息
查看日志,确认报错如下:
定位过程
从如下log可以看出,当一个异常调速变为inValid时,虽然exp_speed_t表中删除了该异常调速,但是在通过PID获取PWM时,因为OS下电,导致PID读值为:66 0 0 6 64 0 255 255 0 0 86 255 255 0 0 86 255 255 0 0 86 255 255 0 0 86 255 255 0 0 86 255 255 0 0 86 255 255 0 0 86 255 255 0 0 86 255 255 0 0 86 255 255 0 0 86 255 255 0 0 86 255 255 0 0 86,导致调速的fan_table为空,进而导致设置pwm失败:cooling_mgmt.lua(1001): Set fan pwm failed, fan_table:nil。
经确认,在风扇支持standby的情况下,需要至少有一个CoolingRequirement将ActiveInStandby设置为true,用来给PID提供温度点,否则就会出现PID返回所有fanid为255的情况,进而导致没有转速可以下发。
问题原因
经确认,在风扇支持standby的情况下,需要至少有一个CoolingRequirement将ActiveInStandby设置为true,用来给PID提供温度点,否则就会出现PID返回所有fanid为255的情况,进而导致没有转速可以下发。
解决方案
在风扇支持standby的情况下,需要至少有一个CoolingRequirement将ActiveInStandby设置为true。