【社区330版本】stress加压前后,出现部分风扇自动调速失败情况,伴有风扇相关告警

【测试步骤】

1.更新BMC至社区330版本

2.系统管理-风扇&散热-风扇设置,调节转速偏差告警阈值为10

3.使用stress进行加压(stress -c 480 --vm 1 --vm-bytes 900G --hdd 1 --hdd-bytes 50G --timeout 1h)一段时间,在bmc观察各风扇转速

4.加压一段时间后,停止加压,在bmc观察各风扇转速

(发散测试:①将服务器下电,各风扇调换位置,调节转速偏差告警阈值,重复加压过程10次,未复现故障;②将服务器下电,各风扇位置复原,调节转速偏差告警阈值,重复加压过程;③停止加压,调节转速偏差告警阈值,查看风扇转速)

【预期结果】

1.加压后,风扇转速提高(风扇基于CPU1和CPU2进行分区调速)

2.停止加压,风扇转速降低

【实际结果】

使用stress加压一段时间,如图1所示,风扇一转速无明显提高,风扇二三四转速提高明显,达到10000rpm以上,不符合风扇基于CPU1和CPU2进行分区调速,伴有相关风扇调速失败告警

停止加压,如图2所示,风扇二三四转速下降,风扇一转速提高,达到10000rpm以上,伴有相关风扇调速失败告警

转速异常、告警持续存在,修改转速偏差告警阈值为默认值25,告警消失,风扇转速恢复正常

(发散测试:①重复多次未出现风扇转速自动调节异常;②第七次加压,一段时间后如图所示,风扇三四转速始终无明显提高,风扇一二转速升高明显,有相关告警;③停止加压,风扇转速异常未恢复,告警未恢复,修改转速偏差告警阈值后,转速、告警恢复正常)

【问题定位】

加压一段时间和加压后,有风扇自动调速失败,导致其他风扇转速过高,达到10000rpm以上,属于问题,需要解决

【配置信息】

内核信息:

Linux localhost.localdomain 5.10.0-216.0.0.115.oe2203sp4.aarch64 #1 SMP Thu Jun 27 15:22:10 CST 2024 aarch64 aarch64 aarch64 GNU/Linux

系统信息:

BMC:26.03.00.01

BIOS:20.60.21(12/05/2025)

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

:white_check_mark: 五、结论

本问题非硬件故障或固件致命缺陷,而是由于用户将“转速偏差告警阈值”设置为过低值(10%),导致系统频繁误判风扇异常,进而错误触发 AbnormalFan 强制提速机制,最终造成风扇组间调速失衡、转速异常升高或反转的现象。

  • 根本原因:配置不当(阈值过低) → 诱发异常调速机制误动作。
  • 解决路径:恢复合理阈值(建议 ≥20%,默认25%)即可恢复正常。
  • 改进方向:优化异常判定逻辑,防止低容差配置引发系统失稳。
点击此处查看详细分析解答

关于社区330版本 stress加压后风扇自动调速失败问题的分析与解决方案

根据您提供的详细测试步骤、现象及截图信息,结合知识库中的技术资料,现对 社区330版本 中出现的 stress加压导致部分风扇调速失败、转速异常波动、并伴随风扇告警 的问题进行系统性分析和定位,给出根本原因和解决建议。


:puzzle_piece: 一、问题核心现象总结

  1. 加压阶段

    • 少数风扇(如风扇一)转速无明显提升;
    • 多数风扇(如风扇二、三、四)转速飙升至11264 RPM(约75%-80% duty,已接近满转),远高于正常负载调速预期;
    • 出现 “Fan X front/rear failure or incorrect fan model” 的严重告警(事件码 0x04000007)。
  2. 停止加压后

    • 理论上应降速,但出现“反转”现象:原本低速的风扇升速,高速风扇降速;
    • 告警未自动清除,转速异常持续存在。
  3. 恢复手段

    • 转速偏差告警阈值从10恢复为默认值25 后,告警消失,各风扇转速恢复正常。
    • 发散测试中存在复现与不复现的情况,表明具有一定条件依赖性和时序敏感性。

:magnifying_glass_tilted_left: 二、根本原因分析

综合文档、日志及知识库信息,该问题的本质是:

在低转速偏差阈值(10%)配置下,系统对风扇状态检测过于敏感,引发误判为“风扇故障或型号错误”,从而触发异常调速逻辑(AbnormalFan机制),并因 PID 控制未能正确接管,导致调速策略混乱。

1. 根本原因:低偏差阈值 + 异常调速机制误触发

:white_check_mark: 相关证据与机制支持:

  • 转速偏差告警阈值 是判断风扇是否“正常”的关键参数。当风扇实际转速与期望值偏差超过此阈值时,系统认为风扇异常。

  • 知识库文档明确指出:

    “风扇异常状态:……风扇转速偏差大。风扇pwm稳定期间,多次采集的转子转速与预期转速相差超过25%则状态异常。”
    —— 出自文档《thermal_mgmt》,说明 25% 是设计默认的安全容差

  • 用户将该阈值手动设置为 10%,远低于常规容忍区间(通常为20%-25%),显著提高了误报率

  • stress 加压引起 CPU 温度上升时,调速系统尝试提升某些风扇转速(如风扇2/3/4)。但由于风扇个体差异、老化、灰尘、气流扰动等原因,个别风扇(如风扇1)响应滞后或未完全达到目标转速,即使偏差仅为15%,也可能 在10%阈值下被判定为异常

:white_check_mark: 告警来源解析:

  • 事件码 0x04000007Fan X front/rear failure or incorrect fan model
    该告警并非真正的硬件故障,而是 系统检测到风扇前后转子转速不一致或整体转速偏离预期过大,进而怀疑风扇类型不匹配或失效。

  • 此告警来源于:

    scan_fan_status: Scan fan31 rear speed error, real 51%(11776), expect 100% ± 25%;
    

    即系统以 ±25% 为基准判断合理区间,若设为 ±10%,则极易触发。

2. 异常调速机制(AbnormalFan)被错误激活

:white_check_mark: 知识图谱与文档支持:

  • 存在名为 AbnormalFan_1, AbnormalFan_2 的异常调速配置对象,用于处理风扇异常情况。

  • 文档《调速配置指导说明》中明确:

    "AbnormalFan_1": {
        "Id": 1,
        "FanIdx": 1,
        "Status": "AbnormalRotation",
        "FanGroup": [1, 2],
        "SpeedPercentage": 80
    }
    

    表示当风扇1发生 转速异常 时,风扇1和2将被强制拉高至80%以上。

  • 类似地,若系统误判风扇异常,则会 激活 AbnormalFan 规则,强制拉高多个风扇转速作为补偿措施。

:white_check_mark: 为何出现“反转”?

  • 加压后:部分风扇因响应不足被误判为异常 → 触发 AbnormalFan → 强制其所属 FanGroup 提速至80%+;
  • 停止加压后:温度下降,系统期望降速,但异常状态仍未解除(因偏差仍超过10%)→ 异常调速策略仍生效;
  • 此时,原本“正常”的风扇(如风扇2/3/4)因主调速逻辑要求降速,而系统却因异常机制要求维持高速,产生冲突;
  • PID 控制器无法协调矛盾策略 → 调度混乱 → 导致某些风扇“逆势而动”。

:light_bulb: 简言之:调速目标冲突 + 状态滞留 → 转速反向变化。

3. 为何修改阈值即可恢复?

  • 将偏差阈值从10%改回25%,意味着系统对“正常转速偏差”的容忍度提升;
  • 原本误判为异常的状态重新变为“可接受”;
  • AbnormalFan 策略被取消激活;
  • PID 正常接管调速控制;
  • 所有风扇回归统一、协调的自动调速流程。

:toolbox: 三、解决方案建议

类别 措施 说明
:white_check_mark: 立即解决(推荐) 转速偏差告警阈值恢复为默认值(25%) 能快速消除误判和异常调速,恢复正常行为
:warning: 避免操作 不应长期使用低于20%的偏差阈值 极易引发误报和系统响应失衡
:hammer_and_wrench: 长期优化 完善 AbnormalFan 判断逻辑,引入动态偏差容忍机制 例如根据温度/负载动态调整容忍值,避免固定低阈值造成误触发
:clipboard: 配置验证 检查 AbnormalFan_X 配置项中的 FanGroup 是否合理 防止单个风扇异常导致大面积扇区强制提速
:bar_chart: 增强可观测性 建议日志中输出 实际偏差百分比是否触发 AbnormalFan 的决策依据 便于后续问题定位

:books: 四、相关知识点补充(来自知识库)

1. FailedValue 的作用

  • 是一种 温度传感器失效后的应急风扇转速设定值(如80%或100%);
  • 若某温度点读取失败,系统会下发 FailedValue 指定的转速以保散热;
  • 与当前问题无直接关系,但同属“异常调速”机制范畴。

2. BMC 启动阶段的初始转速行为

  • 刚启动时所有风扇默认下发 100% 转速,待 PID 控制器初始化完成后再接管;
  • 若 PID 无法正常加载或无生效调速策略,则持续满转;
  • 说明系统调速依赖组件的完整性。

:white_check_mark: 五、结论

本问题非硬件故障或固件致命缺陷,而是由于用户将“转速偏差告警阈值”设置为过低值(10%),导致系统频繁误判风扇异常,进而错误触发 AbnormalFan 强制提速机制,最终造成风扇组间调速失衡、转速异常升高或反转的现象。

  • 根本原因:配置不当(阈值过低) → 诱发异常调速机制误动作。
  • 解决路径:恢复合理阈值(建议 ≥20%,默认25%)即可恢复正常。
  • 改进方向:优化异常判定逻辑,防止低容差配置引发系统失稳。

:link: 六、参考链接

建议后续测试中,避免对关键容差参数进行极端配置,并优先在测试环境中验证其影响范围。

  1. 提供日志;
  2. 确认是自动调速失效,还是因为更换风扇后导致风扇无法识别出现异常调速;