一文带你弄懂thermal governor IPA
目录
一、IPA概念
IPA输入
IPA输出
IPA依赖
IPA优势
二、IPA框架
PID controller
k_p
k_i
K_d
Power allocate
三、DTS配置
四、源代码解析
代码路径
bind流程
throttle流程
一、IPA概念
Intelligent Power Allocation,智能power分配,一种当前主流的thermal governor
IPA输入
- current temp:当前thermal zone的温度
- requested_power:各cooling device根据当前load所申请的power
- sustainable power:为维持thermal zone温度在target temp内,所能承受的最大power
IPA输出
- granted_power:被授予的power budget
IPA依赖
由于IPA需要用到state2power和power2state接口,在cooling state和power之间进行互相换算,所以依赖Linux内核中energy model(简称EM)
IPA优势
- PID闭环
- 可以在多cooling devices之间做power智能分配
二、IPA框架
IPA两大组件:
- PID controller
- power allocate
PID controller
公式:
P_max = k_p * e + k_i * err_integral + k_d * diff_err + sustainable_power
其中:
e:target temp - current temp
err_integral: 之前所有e的和
diff_err: e - 前一次的e
k_p
为了让温度控制更加精准,温度曲线更平滑,分为k_pu和k_po
当current temp < target temp时,使用k_pu,当current temp >= target temp时,使用k_po
具体如下图所示:
k_pu的计算公式:
k_pu = 2 * sustainable_power / (desired_temperature - switch_on_temp)
k_po的计算公式:
k_po = sustainable_power / (desired_temperature - switch_on_temp)
如果不考虑err_integral和diff_err,则Pmax如果时,则Pmax
P_max = k_p * e + sustainable_power
= 2 * sustainable_power / (desired_temperature - switch_on_temp) * (desired_temperature - current_temperature) + sustainable_power
如果current_temperature = switch_on_temp时,则k_p = k_pu,这时Pmax
P_max = k_p * e + sustainable_power
= 2 * sustainable_power / (desired_temperature - switch_on_temp) * (desired_temperature - switch_on_te