首页 > 系统相关 >深入浅出理解Linux thermal governor之IPA

深入浅出理解Linux thermal governor之IPA

时间:2022-12-28 12:01:06浏览次数:53  
标签:IPA power 功耗 governor thermal CPU 温度

IPA(Intelligent PowerAllocation)是由ARM开发的符合linux内核thermalframework的governor,代码中的名字为power_allocator,旨在满足温控效果的条件下最大化性能。

IPA背景

熟悉ARM终端芯片系统的开发人员,应该对EAS(Energy Aware Scheduler)、Energy/Power Model不陌生,IPA正是这种能效思想在温控领域的体现。基于如下理论:

  • SoC的温度与功耗成正相关,功耗越高则温度越高
  • Soc的功耗主要由其上的IP Core(CPU、GPU等)消耗

因此,可以通过控制功耗达到控制温度的目的,通过在各个IP Core间合理分配功耗可以最大化温控下的性能表现。基于上述理论,IPA实现包含了两大核心功能:基于PID的温度闭环控制器、Power Allocator(PA)。

为什么需要IPA governor

为了更好的说明IPA的开发目的,这里以CPU上常使用的step-wise governor作对比,看看传统governor的优点及不足。

Step-wise governor

作为CPU温控常用的governor,step-wise在温控管理上有着良好的表现。Step-wise将温度趋势分为三种:上升、下降、稳定,根据配置的温度触发点(TripPoint)及温度趋势以步进的方式调节CPU的状态,具体来讲就是调节频率。比如温度已经超过触发点同时温度处于上升状态,则step-wise就会将CPU的coolingstate上调一级(对应操作是频率降低),然后继续轮询CPU的温度,通过判断温度趋势再执行相应动作。

上述过程至少存在两个缺点:

1)该控制属于开环控制,step-wise只是根据配置及温度趋势机械地进行步进调节,它并不关心此次的调节动作是否能够达到温控的目的。

2)Step-wise直接控制CPU的频率,在温度及其趋势确定的情况下,则相应的CPU频率也就确定,这对于性能会产生不利影响,特别是移动终端系统上极短时间的性能提升对温升影响较小,但能更好的改善性能体验。

IPA的优点

IPA实现了闭环控制,通过闭环调节使得升温时温度可以稳定在目标温度处,提高控制精度。

IPA实现了多个IP core之间Power的动态分配,实现资源的优化配置。以小核、大核、GPU为控制对象来讲,即使温度已经达到目标温度,但是根据各个小核、大核、GPU的负载情况,最需要性能的处理器仍然有可能跑到最高频率,这种基于负载的power动态分配策略对性能比较友好。

IPA温控效果模拟

当温度超过Tswitch_on时,IPA governor开始工作,通过PID controller闭环控制,使温度能够稳定在Ttarget,并尽可能减少波动,实现预期的温度控制目标。当整体温度下降到Tswitch_on时,IPA governor停止工作。

IPA简化框架

对于IPA来讲,主要的输入为温度和各个Core的性能需求。温度可以来自SOC,也可以来自板温,IPA把采集温度与目标控制温度的温差作为控制输入。各个IP Core的性能需求是通过当前的负载来计算的,然后利用OPP(Operating Performance Point)及EM(Energy Model)转换为Power Request作为IPA的输入。而IPA的输出是PowerGranted,然后再通过OPP及EM转换为性能指标(比如最大运行频率)。如此的循环往复最终实现对硬件的温度控制。

IPA功能

IPA governor包含两个核心功能PID温度控制器和PA(Power Allocator)。PIDController实现PID闭环控制,用于温度的跟踪控制。PowerAllocator实现基于核心负载的Power Budget分配。

PID温度控制器

PID( Proportional Integral Derivative)控制即比例积分微分控制,是最早发展起来的控制策略之一,由于其算法简单、鲁棒性好和可靠性高,被广泛应用于工业过程控制,尤其适用于可建立精确数学模型的确定性控制系统。PID控制属于闭环控制。IPA的PID Controller其控制输入为目标温度与当前温度的差值e,通过比例、积分、微分计算累加求和后再与sustainable_power相加即为当前温度下允许的最大功耗值。Sustainable_power是指在保证满足目标温度target_temerature的条件下所允许的最大功耗值。PIDcontroller的控制函数可以表示为如下公式:

其中,

相关文章

  • SpringBoot MultipartFile 上传文件null
    开发环境Springboot1.5.2使用方法,一开始直获取文件为null,不加required=false接口无法访问@PostMapping("/import")publicvoidimportTest(@RequestParam(v......
  • 简读 || A Belief Propagation Algorithm for Multipath-Based SLAM
    原文链接:ABeliefPropagationAlgorithmforMultipath-BasedSLAM|IEEEJournals&Magazine|IEEEXplore开源代码:https://www2.spsc.tugraz.at/people/eriklei/BP-......
  • AT_pakencamp_2021_day2_c Participants 3 题解
    题目传送门题目大意找出没有参加第\(1\)天的比赛,但是参加了第\(2\)天的比赛人的ID。解题思路从第一次比赛人员的ID中,查找是不是没有有第二次比赛人员的ID。如......
  • AT_pakencamp_2021_day2_a Participants 2 翻译
    题目传送门题目描述将帕研2021集训的参加人数定义为“集训第一天开始时进入帕研2021集训Discord服务器的人数”时,这个数是多少?输入格式这个问题没有输入。输出......
  • AT_pakencamp_2020_day2_a Participants 翻译
    题目传送门题目描述帕研集训20xx分为\(2\)天,不住宿,第\(1\)天的参加者是\(A\)人,第\(2\)天的参加者是\(B\)人。集训全体的参加者,也就是\(2\)天中参加\(1\)......
  • AT_pakencamp_2021_day2_c Participants 3 翻译
    题目传送门帕研君举办了\(2\)天的编程竞赛。第\(1\)天的比赛有\(N\)人参加,第\(2\)天的比赛有\(M\)人参加。每个参赛者都被分配了一个整数ID。第\(1\)天参......
  • AT_pakencamp_2020_day2_a Participants 题解
    题目传送门题目大意集训有\(2\)天,\(2\)天中参加\(1\)天以上的人数最少是多少,最多是多少?解题思路参加一天以上的人数最少就是\(A\)和\(B\)的最大值,而最多就是......
  • T_pakencamp_2021_day2_a Participants 2 题解
    题目传送门题目大意输出帕研集训2021的参加人数。解题思路输出51。代码C++:#include<iostream>intmain(){::std::cout<<51<<::std::endl;retur......
  • MultipartHttpServletRequest: is a MultipartResolver configured?解决办法
    MultipartHttpServletRequest:isaMultipartResolverconfigured?解决办法一.问题描述今天在做商城项目时,要将图片上传到FastDFS服务器,突然出现了如下异常:java.lang.I......
  • 如何在路由绑定中使用 IParsable
    IParsable是.Net7中新增的接口,它可以将字符串转换为对应的实体。在Controller的Route绑定中可以使用IParsable来绑定复杂的实体。实验背景假设有一个需要将ro......