文章目录
1. 引子
近期遇到一个问题,某项目IC支持主频为2G,但是在分析问题过程中发现存在部分机器,即使负载已经超过300%的情况下频率仍没有在最大运行,而是1.5G左右;
这个现象引发了customer的重视,当然此问题很快就找到了原因,存在部分机器温度过高,触发了高温降频的策略,从而出现的这个现象;
对于这个现象来讲,问题分析过程比较明确:
- 确认HW最大支持多少?必要条件下可以做AB实验分析;
- 在HW支持的条件下,系统是否在哪里设置了软件最高速率限制?
- SW中可以影响到CPU频率的增减的策略有哪些:
- 动态负载均衡策略
- 高温降频甚至重启的策略
针对于此问题:
- HW支持最高频率为2G;
- 同一版软件,部分机器可以达到2G,有些只能达到1.5G,则怀疑点为HW影响或者上述策略影响;
- 通过CPU FREQ功能进行调试,配置为performance模式(即去除负载均衡策略),表现仍与之前情况相同,则怀疑点为HW影响或者温度策略;
- 将温度策略移除进行测试,所有机器均可以正常启动到2G的频率,则可以确认此问题为温度策略影响;
- 细化温度策略中的具体处理,分别针对于主控、connectivity等温度策略查看,最终确认与主AP相关;
至此,此问题原因已经确认,存在部分机器散热情况较差,导致出现降频处理,解决措施为HW增加散热处理,然后SW去除温度降频的策略(保留超过结温重启的策略)
对于这个问题已经处理完成了,但是在处理过程中其实对于整个CPU freq的处理逻辑梳理的不是特别清晰:
- CPU频率降低依赖于哪些功能?
- 系统中的cpufreq驱动支持哪些功能?
- 负载、温度调节freq的机制是哪里实现的?支持多少不同的方式?是否还有其他的策略调节频率?
小朋友,你的头上为什么这么多问号???