2. 江苏中洋集团股份有限公司, 江苏 南通 226600;
3. 农业部渔业信息重点实验室, 上海 201306
2. Jiangsu Zhongyang Group Co., Ltd., Nantong, Jiangsu 226600, China;
3. Key Laboratory of Fishery Information under Ministry of Agriculture, Shanghai 201306, China
目前, 用户计算目标随多核处理器架构的日益普及和系统复杂性的不断提高而逐渐多元化, 计算系统不再单纯追求高性能, 计算过程中的功耗问题越来越得到重视。大量研究关注于如何在满足系统最大功耗约束条件[1-2]的同时, 优化系统的执行性能[3-4]; 另有研究则把实时功耗约束条件下特定任务能耗最小化作为研究重点[5-7]。移动计算系统功耗约束不仅受用户主观性能需求变化影响, 还受客观供电条件的制约。电池能量变化、外部电源的有效性、新能源能量收集输出功率不稳定[8-9]等复杂条件使系统供电具有不确定性或间歇性[10], 导致功耗约束条件也具有一定的波动性和不确定性。
相对硬件层面的发展, 功耗控制软件技术相对滞后, 但多核系统能效的高低, 较大程度上由系统架构上资源管理软件决定[11]。目前,绝大部分软件层面功耗控制研究主要关注处理器动态功耗,随着集成电路制造工艺进入纳米阶段, 处理器静态功耗相比动态功耗, 在总功耗中所占比重越来越大[5]。因此,静态功耗成为功耗管理的一个重点与难点。
文献[12]提出一种根据工作负载调节处理器核数量的静态功耗节能实时调度方法。文献[5]考虑处理器切换开销情况, 根据状态切换时间和能量开销来确定最优调度序列。但对于同构系统, 单纯依靠软件来调整工作单元数量的静态功耗管理, 调度粒度太大, 不易做到功耗管理的精细化。
非对称异构多核技术(如big.LITTLE[13])采用高性能大核和低功耗小核相组合的灵活功率配置, 为在调整处理器核数量基础上精细化管理功耗提供了硬件技术基础。文献[14]在ARM big.LITTLE平台上, 将动态电压频率调节(Dynamic Voltage and Frequency Scaling, DVFS)、负载均衡和任务迁移等各种电源管理技术整合到一个统一框架, 设计并实现了基于价格理论的异构核电源管理框架。
本文基于big.LITTLE架构, 提出一种多目标功耗自适应控制方法。利用异构核的灵活配置, 在满足系统实时功耗约束条件下, 以性能或能耗为目标, 充分挖掘系统的能效。通过分析不同处理器核实时性能、功耗以及能耗间的关系, 根据实时功耗约束条件、任务负载情况及调度目标, 制定调核策略, 以确定处理器核类型及数量。
1 处理器功耗模型与问题定义 1.1 处理器功耗模型假设非对称多处理器系统由M类处理器核构成, 记为T={T0, T1, …, TM-1}。由文献[15]可知, 电容切换活动产生的动态功耗和泄露电流产生的静态功耗是处理器功耗的两大来源。本文主要针对静态功耗, 通过使处理器核进入睡眠状态(又称关闭)或从睡眠状态返回活跃状态(又称打开)的方式, 调节处理器功耗。当处理器核处于睡眠状态时, 对应处理器功耗可忽略不计, 近似为0。假设基础功耗记为Pbase, 第i类处理器核Ti处于活跃状态的数量记为Ni, 功耗记为Pi, 那么处理器的总功耗如式(1)所示。
$ P=P_{\text { base }}+\sum\limits_{i=0}^{M-1} N_{i} P_{i} $ | (1) |
其中, Ni不能全为0。
以big.LITTLE非对称多处理器系统为例, M=2, 设高效能小核为T0, 处于活跃状态的数量为N0; 高性能大核为T1, 处于活跃状态的数量为N1。在通常情况下主核(编号为0的处理器核)不能够关闭, 永远处于活跃状态, 除非关机,则由式(1)可得处理器功耗如式(2)所示。
$ P=P_{\text { base }}+N_{0} P_{0}+N_{1} P_{1} $ | (2) |
其中, 当主核为T0时, N0不能为0, 当主核为T1时, N1不能为0。
另外, 根据文献[16]可知, 能耗作为计算机系统一段时间内总的能量消耗, 由时间t和功耗P 2个变量因素共同决定, 如式(3)所示。
$ E=\int_{t}^{t+\Delta t} P \mathrm{d} t $ | (3) |
由于big.LITTLE架构中异构处理器具有不同的指令执行速度[4], 因此根据处于活跃状态的处理器核类型及数量, 总执行速度如式(4)所示。
$ V=\frac{N_{0} V_{0}+N_{1} V_{1}}{N_{0}+N_{1}} $ | (4) |
其中, V0表示高效能小核的执行速度, V1表示高性能大核的执行速度。
1.2 功耗管理问题定义在满足功耗约束条件下, 从2个角度出发权衡功耗管理方案中性能与能耗之间的矛盾。
1) 在满足功耗约束条件下, 从性能优先角度出发, 功耗管理问题可描述为:在满足P < Pconstraint条件下, 最大化执行速度V。该问题可归纳为典型的规划问题, 约束条件由式(2)、式(4)以及约束功耗Pconstraint构成, 目标是最大执行速度Vmax, 并推算出Vmax对应的处理器核资源组合。由于执行速度不易直接测量, 执行速度最大化问题可转化为在任务量一定的情况下, 最小化执行时间T。
2) 在满足功耗约束条件下, 从节能优先角度出发, 功耗管理问题可描述为:在满足P < Pconstraint条件下, 最小化能耗E。同样该问题也可归纳为典型的规划问题, 约束条件由式(4)以及约束功耗Pconstraint构成, 目标是最小能耗Emin, 并推算出Emin对应的处理器核资源组合。
2 功耗自适应方法图 1为本文功耗自适应方法的整体架构。该架构主要由模块①调核策略管理器、模块②核资源管理器以及模块③线程与负荷管理器3个部分组成。任务分解与工作者线程(Worker)创建由应用本身实现。
![]() |
Download:
|
图 1 功耗自适应方法架构 |
1) 调核策略管理器根据实时功耗约束条件、任务负载情况及调度目标制定相应调核策略并传送给核资源管理器。调核策略既考虑不同处理器核资源与系统实时功耗、性能以及能耗的关系, 同时也兼顾实时约束功耗, 避免目标系统由于得不到足够外部能源供给而无法正常运行。
2) 在操作系统CPU热插拔机制上构建核资源管理器, 用于根据调核策略通过操作系统(OS)提供的接口实现自动调核。由于异构处理器核具有不同的执行速度和功耗开销, 因此选择合适的处理器核类型及数量对系统整体性能以及能耗至关重要。
3) 引入线程与负荷管理器负责管理工作者线程, 并以共享内存、信号量等方式作为与主线程的通信机制。
2.1 调核策略管理器调核策略根据实时功耗约束条件、任务负载情况及调度目标, 动态确定活跃处理器核组合, 使得处理器在满足功耗约束条件下达到性能最优或最大化节能, 即在满足P < Pconstraint条件下, 最小化执行时间T或最小化能耗E。
图 2以性能优先为例描述调核策略。
![]() |
Download:
|
图 2 调核策略规划示意图 |
图 2按处理器功耗“升序”排列, 给不同处理器核类型及数量组合进行标序, 并采用离散点
在系统运行中, 一旦功耗约束条件Pconstraint发生改变, 且任务队列中存在未完成任务, 按上述调核策略规划法所求得的有效处理器组合对系统核资源作出调整。
为避免因外部功耗约束条件波动过快造成频繁执行热插拔操作的问题, 采用域值缓冲带方法加以解决。具体方法如下:当Pconstraint提高时, 只有Pconstraint满足式(5), 且连续3个采样周期都发出处理器调整请求时, 才调整当前处理器核组合, 否则保持不变; 反之, 当Pconstraint降低时, 只要Pconstraint满足式(6), 就对当前处理器核组合进行调整。
$ P_{\text { constraint }} \geqslant P_{\text { current }}+\left(P_{\text { current }+1}-P_{\text { current }}\right) \times 120 \% $ | (5) |
$ P_{\text { constraint }} <P_{\text { current }}-\left(P_{\text { current }}-P_{\text { current }-1}\right) \times 110 \% $ | (6) |
其中, Pcurrent表示当前处理器组合下处理器功耗需求, Pcurrent+1表示下一处理器组合下功耗需求, Pcurrent-1表示上一处理器组合下功耗需求。
考虑到Pconstraint具有不确定性, 在图 1所示的功耗感知模块中, 创建线程负责实时感知约束功耗, 线程入口地址为receive_power_func()。随后主线程循环利用start信号量来启动该线程, 即sem_post(&start)。针对不同应用场景以及功耗约束条件变动情况, 可对线程调度周期进行适当调整。本文设定调度周期为1 s, 该值取决于实验经验值。
2.2 核资源管理器核资源管理器负责根据调核策略实现功耗自适应调核, 利用CPU热插拔动态调整处理器核组合。
CPU在热移除时, 系统首先通过cpu_down()迫使处理器核执行idle进程, 并将进程的优先级设为最高; 其次将处理器核上所有进程以及处理器核上的中断、定时器、中断bottom half、tasklet都被迁移至其他处理器核, OS负责完成残留任务的迁移; 调用cpu_disable()、cpu_dead()清理体系结构相关工作, 从而使该处理器核不会运行其他进程。
若需要将编号为i的CPU热移除, 则具体实现方法是fputs(“0”, “/sys/ devices/ system/ cpu/ cpui/ online”)。
CPU热插入相对比较简单, 系统无需额外配置即可识别到新插入的处理器核, 由线程管理器唤醒相关线程并交由该处理器核运行, 从任务队列中获取新任务并执行。若需要将编号为j的CPU热插入, 则具体实现方法是fputs(“1”, “/sys/ devices/ system/ cpu/ cpuj/ online”)。
2.3 线程管理器线程管理器负责根据处理器核资源的变动情况, 动态控制每个工作者线程(Worker)的工作状态, 并结合OS进程迁移与线程亲和性管理处理器负荷。
在系统初始时为每个应用程序创建与实际处理器数量相一致的Worker, 并根据处理器核资源的初始状态, 控制Worker的工作状态。将处于活跃状态的处理器核相应的Worker设置线程亲和性, 依次从任务队列中获取任务并执行; 另外, 处于睡眠状态的处理器核相应的Worker不设置线程亲和性, 并且休眠该Worker。
当处理器核资源发生变化时, 基于以下规则管理Worker:当执行CPU热移除操作, 使某个处理器核由活跃状态转变为睡眠状态时, 则相应的Worker由OS迁移至其他活跃处理器核上继续运行, 以清空该Worker上正在执行的任务, 然后休眠该Worker, 使其不能够继续从任务队列中获取任务并执行; 当执行CPU热插入操作, 使某个处理器核由睡眠状态转变为活跃状态时, 则唤醒相应的Worker, 并调用函数sched_setaffinity()设置线程亲和性, Worker重新从任务队列中获取任务并执行,设置亲和性,减少工作者线程在处理器核之间频繁迁移, 提高CPU cache命中率, 使性能进一步提高。
另外, 在共享存储的多核系统架构下,多个线程同时操作同一个共享变量需加锁操作, Phoenix采用x86_64内联汇编的方式实现原子操作。因此, Phoenix仅支持x86_64多核架构, 不支持本文的ARM架构。针对该问题, 本文利用Linux下与架构无关的gcc内置原子操作函数sync_fetch_ and_add()来实现原子操作, gcc4.4及以上版本提供该函数。实验结果表明,对于x86_64多核架构, 采用Linux下gcc内置原子操作函数与采用的内联汇编方式相比, 程序运行结果相同, 并且运行时间和功耗也几乎相同。
3 实验结果与分析本文以64位四Cortex-A53小核和双Cortex-A72大核的RK3399作为实验平台, 并以Linux的命名习惯cpu0、cpu1、cpu2、cpu3代表 4个小核; cpu4、cpu5代表 2个大核。操作系统采用Ubuntu(Linux 4.4.52), gcc-4.8.5。
实验通过HP-9800功耗监测仪测量系统功耗, 并通过COM3串行接口获取外部功耗约束输入。在实验中所有功耗数据不包含处理器冷却风扇功耗, 每组实验执行20次并求平均值。
以共享存储MapReduce实现Phoenix[17]以及目标检测算法DPM[18-19]2个典型多核并行应用为实验示例。表 1以Phoenix提供的Word_count处理200 MB数据, 以及DPM对640像素×425像素的图像进行目标匹配为例, 列出不同处理器核组合下测试用例的执行时间、功耗和能耗。为方便分析, 按系统功耗“升序”排列。在表 1中, Ncurrent表示系统当前处理器核数, Tn、Pn和En分别表示第n组处理器组合下系统执行时间、功耗和能耗。根据RK3399特点, 系统启动处理器核组合共12种。
![]() |
下载CSV 表 1 不同处理器核组合情况下测试结果 |
通过分析表 1的数据可知, 采用Phoenix中的Word_ count, Pbase≈3.63 W、Plittle≈0.28 W、Pbig≈1.26 W。采用DPM用例, Pbase≈3.35 W、Plittle≈0.29 W、Pbig≈2.20 W。从高能效的角度出发, 当系统功耗递增时, 执行时间应呈递减趋势。显然, 测试用例为Word_count, 当处理器核组合“Ncurrent=Nlittle+Nbig”为“2=1+1”及“3=1+2”“4= 2+2”时, 不满足这一原则, 也即这3组处理器组合无意义。为了方便表述, 将表 1中有效处理器组合分别进行编号, 并将此作为后续调核标准。
为验证本文方法的有效性, 以能量收集方式供电功率波动为例, 模拟3种不同外部功耗约束条件, 并将性能优先作为调度目标验证功耗自适应方法的有效性。
约束条件A:假设约束功耗的初始值为P1, 且每隔1 s增加0.3 W, 持续13 s; 之后每隔1 s减少0.3 W, 持续13 s, 约束功耗依此循环变化。
约束条件B:假设约束功耗的初始值为P7, 且每隔2 s减少0.5 W, 持续8 s; 之后每隔2 s增加0.5 W, 持续8 s, 约束功耗依此循环变化。
约束条件C:假设约束功耗的初始值为P9, 且每隔1 s减少0.5 W, 持续4 s; 之后每隔3 s增加1 W, 持续6 s, 约束功耗依此循环变化。
上述P1、P7、P9具体数值见表 1。
由于传统多线程运行时系统未考虑外部功耗约束, 为满足功耗约束条件, 实验通过手动设定处理器的开启, 在系统运行之前初始化处理器核资源。下面为2种手动设定方式。
手动方式1:由于主核除非关机永远处于活跃状态, 约束功耗必须能够满足主核功耗需求, 因此只将主核初始化为活跃状态, 其他处理器核均设为睡眠状态。
手动方式2:从最大化利用资源的角度出发, 选择与最低约束功耗相匹配的处理器核组合初始化处理器。
在上述3种功耗约束条件下, 当测试用例为Word_count时, 最低约束功耗分别3.63 W、3.97 W及5.25 W, 按表 1处理器组合序号1、2、4初始化处理器核组合; 当测试用例为DPM时, 最低约束功耗分别为3.35 W、4.12 W及5.73 W, 按表 1处理器组合序号1、3、5初始化处理器核组合。然而, 由于功耗约束条件具有不确定性, 通常无法预测最低约束功耗, 因此该设定方式可行性不高, 一旦供电不足, 系统将会断电停机。
表 2列出Word_count数据集大小分别为10 MB、50 MB及100 MB时的系统执行时间及能耗。由表 2可知, 在功耗约束条件不确定情况下, 本文方法执行时间与能耗均小于手动方式1、手动方式2, 并且随数据量的增大, 其能效优势逐步体现。同样, 从表 2中DPM在不同调核方式下执行时间与能耗对比可知, 本文方法明显优于手动方式。
![]() |
下载CSV 表 2 不同调核方式执行时间与能耗对比 |
![]() |
Download:
|
图 3 3种方法执行时间对比结果 |
![]() |
Download:
|
图 4 3种方法能耗对比结果 |
由图 3、图 4可知, 当测试用例为Word_count时, 与手动方式1相比, 本文方法执行时间平均减少了65.77%, 能耗平均减少了56.63%;与手动方式2相比, 本文方法执行时间平均减少了42.80%, 能耗平均减少了31.81%。当测试用例为DPM时, 与手动方式1相比, 本文方法执行时间平均减少了78.02%, 能耗平均减少了65.56%;与手动方式2相比, 本文方法执行时间平均减少了57.05%, 能耗平均减少了40.18%。
实验结果表明, 本文提出的功耗自适应方法不仅能够满足处理器实时功耗约束条件, 具有比传统方法更优的安全性, 且由于能够及时感知外部功耗约束变化, 并能利用新增外部能量投入新的计算资源, 使典型应用执行时间与能耗在测试案例中平均减少60.91%和48.54%, 达到充分利用系统资源, 提高系统能效的目的。
4 结束语由于移动计算系统受用户主观性能需求或客观供电条件制约, 本文基于big.LITTLE架构, 提出一种多目标功耗自适应方法。该方法结合OS线程亲和性、进程迁移与处理器热插拔完成处理器核的开启、关闭及负荷管理, 以实现功耗自适应。实验结果表明, 本文方法在满足处理器实时功耗约束条件以及目标系统需求的同时, 能够有效减少执行时间, 降低系统能耗。但本文方法没有考虑电压对静态功耗的影响, 下一步对功耗管理进行研究, 并将big.LITTLE架构与当前最新的多核架构进行对比分析, 提高系统能效。
[1] |
MA Kai, LI Xue, CHEN Ming, et al. Scalable power control for many-core architectures running multi-threaded applications[J]. ACM SIGARCH Computer Architecture News, 2011, 39(3): 449-460. DOI:10.1145/2024723 ( ![]() |
[2] |
WINTER J A, ALBONESI H, SHOEMAKER C A.Scalable thread scheduling and global power management for heterogeneous many-core architectures[C]//Proceedings of the 19th International Conference on Parallel Architecture and Compilation Techniques.Vienna, Austria: [s.n.], 2010: 29-40.
( ![]() |
[3] |
WANG Zhuowei, ZHAO Wuqing, WANG Hao, et al. Three-level performance optimization for heterogeneous systems based on software prefetching under power constraints[J]. Future Generation Computer Systems, 2018, 86(1): 51-58. ( ![]() |
[4] |
王桂彬, 杜静, 唐滔. 一种面向异构并行系统的最大功耗管理方法[J]. 软件学报, 2013, 24(10): 2460-2472. ( ![]() |
[5] |
张冬松, 吴飞, 陈芳园, 等. 开销敏感的多处理器最优节能实时调度算法[J]. 计算机学报, 2012, 35(6): 1297-1312. ( ![]() |
[6] |
LU Jun, QIU Qinru.Scheduling and mapping of periodic tasks on multi-core embedded systems with energy harvesting[C]//Proceedings of Green Computing Conference & Workshops.Washington D.C., USA: IEEE Press, 2011: 1-6.
( ![]() |
[7] |
SALAMY H. Task scheduling on multi-core embedded systems under power and thermal constraints[J]. International Journal of Electronics, 2015, 102(12): 2075-2091. DOI:10.1080/00207217.2015.1020880 ( ![]() |
[8] |
徐雷钧, 白雪, 潘祎雯, 等. 传感器节点自主供电的环境混合能量收集系统设计[J]. 农业工程学报, 2017, 33(8): 147-152. ( ![]() |
[9] |
张慧妍, 李爽, 于家斌, 等. 基于模糊整数规划的水质浮标光伏/蓄电池动力源配置优化[J]. 农业工程学报, 2015, 31(19): 183-189. DOI:10.11975/j.issn.1002-6819.2015.19.025 ( ![]() |
[10] |
王俊, 蔡兴国, 季峰, 等. 考虑新能源发电不确定性的可用输电能力风险效益评估[J]. 电力系统自动化, 2012, 36(14): 108-112. ( ![]() |
[11] |
王静莲, 龚斌, 刘弘, 等. 支持绿色异构计算的能效感知调度模型与算法[J]. 软件学报, 2016, 27(9): 2414-2425. ( ![]() |
[12] |
LI Kong. Improving multi-core server performance and reducing energy consumption by workload dependent dynamic power management[J]. IEEE Transactions on Cloud Computing, 2016, 4(2): 122-137. ( ![]() |
[13] |
GREENHALGH P.big.LITTLE processing with ARM CortexA15 and Cortex-A7: improving energy efficiency in high performance mobile platforms[EB/OL].[2018-08-08]. http://www.arm.com/files/downloads/big_LITTLE_Final_Final.
( ![]() |
[14] |
MUTHUKARUPPAN T S, PATHANIA A, MITRA T. Price theory based power management for heterogeneous multi-cores[J]. ACM SIGPLAN Notices, 2014, 49(4): 161-176. ( ![]() |
[15] |
JEJURIKAR R, PEREIRA C, GUPTA R.Leakage aware dynamic voltage scaling for real-time embedded systems[C]//Proceedings of the 41st Design Automation Conference.San Diego, USA: [s.n.], 2004: 275-280.
( ![]() |
[16] |
林闯, 田源, 姚敏. 绿色网络和绿色评价:节能机制、模型和评价[J]. 计算机学报, 2011, 34(4): 593-612. ( ![]() |
[17] |
RANGER C, RAGHURAMAN R, PENMETSA A, et al.Evaluating MapReduce for multi-core and multiprocessor systems[C]//Proceedings of IEEE International Symposium on High Performance Computer Architecture.Washington D.C., USA: IEEE Press, 2007: 13-24.
( ![]() |
[18] |
FELZENSZWALB P, MCALLESTER D, RAMANAN D.A discriminatevely trained, multiscale, deformable part model[C]//Proceedings of 2008 IEEE Computer Society Conference on Computer Vision and Pattern Recognition.Anchorage, USA: [s.n.], 2008: 1-8.
( ![]() |
[19] |
俞先国.改进的可变形部件模型及其在行人检测中的应用[D].长沙: 国防科学技术大学, 2013. http://cdmd.cnki.com.cn/Article/CDMD-90002-1015958639.htm
( ![]() |