zTT@MobiSys '21
这篇工作还是做的是一个DVFS技术,来动态调整CPU/GPU的电压和频率,达到节能、控温。
1. introduction
- 传统的DVFS技术主要停留在操作系统内核层面,与应用程序无关。但是不同的应用的需求决定了它们的最佳的CPU,GPU的功耗分布。
- 一些DVFS无法摆脱过热的问题。这里举例(图1):手机芯片一旦过热,CPU就会锁住频率,导致帧率下降。
- 移动设备的温度环境太复杂了,握持方式、外部温度等等。导致一些服务器上的温度管理技术不能直接用用到移动设备上。
- 移动设备的内部的芯片温度也是存在热耦合的问题。CPU,GPU是贴合在一起的,CPU热可能也会导致GPU降频。CPU,GPU的调频策略应该联合优化。
作者们为了解决上面的两个问题,提出了一个DVFS设计,它能够持续的学习应用的性能需求和环境变换,而从适应这些改变。作者用强化学习实现这个外部的DVFS适应应用性能和环境变化。
insight
-
默认的控制策略不高效。作者用了3种CPU调速器(governor),分别测试Video Rendering和YOLO的功耗和帧率数据。
Interactive
和Performance
是Linux的默认governor。Optimal
是作者设置的一个虚拟的调速器,它可以提升能效。
对于(a)和(b)来说,我们不难发现的问题就是perf.模式下,虽然将CPU的频率拉到了最高,功耗也很高,但是由于热问题导致帧率较低。而Opt.模式却实现了功耗最低,帧率最高。默认策略没有很好的能效比表现。
目前的DVFS技术的GAP就是缺乏对应用程序性能特点的考虑。
作者表示如果可以预测出APP的资源瓶颈,就能实现对CPU和GPU的能效控制。 -
热问题分析。
-
Fig3 (a)展示JETSON TX2在不同CPU频率下的渲染视频时的温度。显然这里面频率越高,温度越高。Fig3 (b)则是展示了在视频渲染的同时增加YOLO的目标检测。
-
温度收到热耦合影响。Fig4 展示了CPU和GPU的热耦合现象。
这里我们发现在GPU频率拉高的时候GPU和CPU的温度都上涨了。
-
室温影响。Fig 5 两哈了不同室温情况下的温度管理的状况。在(a)中整体性能较为稳定,而在(b),(c)中,在手机套和在口袋中,我们发现它的温度基本超过了阈值。无线充电的情况下温度也会升高。
-
问题描述 ( Problem Formulation)
- \(U(t)\)表示t时刻的应用的QoE值,通常表示帧率。
- \(P(t)\)表示t时刻,CPU和GPU共同的功耗消耗。
- \(\pi\)表示\(t=1\)到\(t=T\)时一些可用的CPU,GPU的联合控制策略。用\(f_{C}(t)\)和\(f_{G}(t)\)分别表示CPU和GPU的频率。
- \(\beta\)表示一个控制权重。比如不考虑功耗消耗就可以设置\(\beta=0\)
- 下面的两个限制条件时用来分别限制CPU和GPU温度不超过阈值。
这样整个问题就被表达成了最大化QoE同时最小化功耗消耗。我们从\(\pi\)中
设计
state
- 当前频率,\(f_{C}(t)\)和\(f_{G}(t)\)
- 当前温度,\(T_{C}(t)\)和\(T_{G}(t)\)
- 当前功耗,\(P_{C}(t)\)和\(P_{G}(t)\)
- 当前帧率,\(x(t)\)
action
作者设计了两类动作实现了一个\(\epsilon-greedy\)算法。在概率为\(\epsilon\)时用探索(exploration)动作,在概率为\(1-\epsilon\)时用开放(exploitation)动作,而当温度接近或者超过阈值时,采取降温动作。这里的动作就是指CPU和GPU的频率。
- Exploration和Exploitation.Exploration是指在整个频率范围内去随机采用一个动作。而Exploitation是指要采用一个最大化奖励值的动作。
- Cool-down Action。在算法中,Exploration没有考虑他的执行后果,所以可能会选择到一个会导致高温的动作。所以达到温度阈值的时候,zTT会选择一个低于当前时钟频率的值去调整状态。
reward
奖励函数的原型是
作者首先考虑到QoE指标函数的设计,它认为QoE过高也会导致性能需求过高,而且对用户来说可能没有体验上的提升。它为不同应用都设置了一个帧率需求值\(X_t\)。超过\(X_t\)不会带来体验提升的同时带来了过多的功耗消耗。
第二点\(W(t)\)是一个惩罚项,用来考虑哪些可能会导致温度过高的动作基于负数值,而低于温度阈值的基于正数奖励。\(W_C(t)\)是CPU的设计,GPU设计类似,\(W(t)=W_C(t)+W_G(t)\)