王益涵, 王凯林, 孙宪坤, 张冬松, 吴 飞
(1.上海工程技术大学 电子电气工程学院,上海 201620; 2.中国人民解放军 镇江船艇学院,江苏 镇江 212000)
基于CPUfreq的DVFS节能技术的研究与实现
王益涵1, 王凯林1, 孙宪坤1, 张冬松2, 吴飞1
(1.上海工程技术大学 电子电气工程学院,上海201620; 2.中国人民解放军 镇江船艇学院,江苏 镇江212000)
摘要:针对目前计算机系统普遍存在的功耗较大的问题,研究和实现了基于CPUfreq的DVFS节能软件;首先,分析和比较了计算机系统现有主要的功耗管理框架;然后,阐述了CPUfreq子系统及其框架结构,并基于CPUfreq子系统开发了DVFS节能软件,实现了对计算机CPU的动态电压频率调节(DVFS);最后,以720 p视频播放为应用实例,对使用DVFS节能软件后的计算机系统进行功耗测试;测试结果表明,DVFS节能软件可以实现对以PC为代表的计算机系统的初步节能。
关键词:节能; 功耗管理;动态电压频率调整
0引言
随着计算机系统的普及,计算机芯片的集成度和复杂度的不断提升。使得计算机的功耗,芯片温度问题越来越突出,具体体现在:1)计算机能耗问题:计算机系统消耗的电能以及由此导致的资源环境问题越来越严重,这与当前提倡的环境意识与环境行为相违背;2)手提电脑等移动设备的电池寿命和续航时间问题:计算系统配置的处理器基本都是由三星、高通的公司生产的高频处理器,然而这些处理器消耗的能耗是很大的。致使这些可移动设备的耗电能力不断增强,但是目前的电池续航时间,不能从根本上解决用户的需求;3)芯片的温度改变造成的芯片可靠性下降的问题:处理器复杂度和集成度不断提高,使得处理器的温度问题也越来越突出,温度问题在很大意义上影响着芯片的可靠性。研究资料表明,芯片的温度会提高十度,处理器的可靠性会降至原来的50%左右[1]。为了减少以上问题带来的影响,研究计算机的节能问题是十分必要的。
1计算机系统现有的功耗管理模块
计算机系统中,现有主要的功耗管理模块有:PM子系统和DPM子系统。
1.1PM子系统
PM子系统主要实现系统的管理和设备到低功耗状态的切换的功能[2]。PM子系统的结构如图1所示,由硬件不相关的PM核、设备功耗管理模块以及底层CPU低功耗管理BSP组成[2]。
图1 PM子系统结构说明
PM 核是PM子系统的重要组成部分,和具体硬件没有关联。它作为功耗管理主体与客体的接口,是整个系统节能的实现机制。PM核定义了pm_ops结构来对CPU功耗管理底层设备进行抽象来支持CPU功耗管理和保证PM核的硬件不相关性,在此结构中定义了一些与低功耗状态进行切换的相关回调函数[2],例如,.prepare函数是让CPU完成功耗状态切换前的准备工作,.enter函数是将CPU转换至低功耗工作状态等。这些回调函数会根据系统功耗状态的要求对 CPU实现实际的设置。
Linux设备驱动模型为Linux系统中设备提供依赖。
PM子系统的框架结构层次分明,可移植性强。但是它的缺点是在多核设备上的运行效能将大打折扣。因为在PM框架中某一个CPU功耗状态的变化不能够切换系统的功耗状态,只有系统中全部的CPU状态同步变化时才能将系统切换至相应的功耗状态。使得多核处理器的硬件特性没有被充分利用,以至于系统的电能资源没有被很好的分配给系统。另外,Linux PM框架在对设备进行功耗管理时对其设备驱动模型的依赖很严重,限制了PM子系统在其他操作系统中的应用。
1.2DPM子系统
DPM是以策略框架为核心的功耗管理框架[3]。它面向对象主要是装有嵌入式系统设备的节能,能够最大程度的利用这些设备的处理器特性进行功耗管理,并且提供一些机制来保证软件系统和硬件设备在功耗需求上的协调。DPM子系统的结构如图2所示。
图2 DPM子系统结构图
DPM子系统之所以能够以任务为基本单位进行系统功耗管理是因为它通过内核模块的方式来实现操作系统的电源管理。在这方式下使得系统中的每个任务都能够运行在一个满足自身需求的操作状态下,避免了不必要的功耗浪费,从而提高了系统功耗管理效率,实现了有效的设备电源管理,满足了Linux的需求[4]。但是,DPM框架也存在一些不足之处,例如,DPM框架存储策略库中的必要数据需要花费相当大的内存空间,如果数据相对较多,则会占用过多的内存。而且,该框架目前还不能对多核设备的功耗进行有效的管理,只能面向单核平台进行功耗管理。
2CPUfreq子系统
CPUfreq 面向不同的处理器提供了一个统一的设计架构,使得Linux内核更好地支持不同的CPU调频技术[5]。它负责在系统运行时动态地调整内核的运行频率和降低系统运行时功耗[6]。
CPUfreq子系统的体系架构如图3所示,它由内核调控器、体系结构无关的 CPUfreq 核和底层的CPU-specific Driver组成。
图3 CPUfreq子系统结构图sss
2.1CPU-Specific Driver
CPU-Specific Driver,位于CPUfreq子系统的最底层, 其功能是实现CPU的调频等一系列与之相关的操作的驱动程序。
2.2CPUfreq核
CPUfreq核,位于CPU-Specific Driver的上层,具有硬件不相关性。封装了变频技术以及根据工作负载选择合适的运行频率,为机制与策略提供了规范的通信接口。
2.3内核调控器
内核调控器,位于CPUfreq核的上层,是CPUfreq子系统的核心。它根据策略在必要的时间选择出一个CPU适合的工作频率。目前的Linux内核(自2.6.0以后)中提供了Performance、Powersave、Userspace、Ondemand和Conservative等5种调控器供用户选择使用[7],如图4所示。
图4 CPUfreq内核调控器
1)Performance:CPU工作在它所支持运行的最高频率上。
2)Powersave:CPU工作在它所支持运行的最低频率上。
3)Userspace:用户态应用程序通过它提供的接口按照需求调节CPU的运行频率[8]。
4)Ondemand:Ondemand只能在内核态下运行,能够以更加小的时间间隔对系统的负载采集并分析。
5)Conservative:Conservative是在Ondemand算法的基础上改进而来的,它在降低频率时会可供选择的频率中选出确保CPU运行在80%以上的负载频率。在这个前提下,Conservative选择CPU所支持运行的最低频率。大量测试数据表明Conservative能够在不影响系统性能的前提下实现更加高效的节能。
CPUfreq以上5个内核调控器,不能在同一时刻使用其中的两个或两个以上的调控器。但是,这些调控器可以在设备运行中根据运行的需要进行相应的切换。另外,CPUfreq的内核调控器也可以作为一个策略管理模型,能够根据CPUfreq现有的调控器模型派生出相应的自定义调控器来实现在DVFS算法下的CPU调频。
2.4用户接口
CPUfreq子系统在用户态为用户提供以下接口[9-10]:
cpuinfo_max_freq:CPU运行在最高频率。
cpuinfo_min_freq:CPU运行在最低频率。
cpuinfo_cur_freq:获取当前运行的CPU的工作频率。
governor:规定了运行频率在最高运行频率和最低运行频率所确定的区间内选择。
scaling_cur_freq:不会对CPU的硬件寄存器进行检查,仅返回当前CPUfreq缓存的内核的运行频率。
scaling_available_governors:通知用户当前状态下可以使用的调控器。
scaling_governor:显示当前的管理策略。
3基于CPUfreq的DVFS节能软件
针对目前PC功耗较大的问题,以Linux为操作系统平台,基于CPUfreq子系统,以C/C++语言为开发语言,以QT为图形界面开发工具,以MySQL为数据库管理系统,以功耗测试仪为测试工具,开发了DVFS节能软件。
3.1系统架构
图5基于CPUfreq的DVFS节能软件的架构
3.2系统功能
DVFS节能软件,面向不同的处理器和Linux操作系统,实现了CPU内核模式和频率读取、CPU内核模式和频率设置、PC有功功率读取、CPU频率功耗日志记录和显示等功能。
3.3模块划分
根据上述分析,DVFS节能软件,可划分为CPU内核模式读取和设置、CPU内核频率读取和设置、功耗测试仪驱动、CPU各核频率和功耗日志 、CPU各核频率和功耗显示等5个功能模块,如图6所示。
图6基于CPUfreq的DVFS节能软件的功能模块划分
3.4程序流程
DVFS节能软件的流程如图7所示。
(5)综合考虑式(4)~式(8),由式(10)和式(11)得到k+1时刻新的初始值估计值,又提出类似的优化问题,返回步骤(3)求出Δu(k+1|k+1),即滚动优化。
图7基于CPUfreq的DVFS节能软件的流程图
1)CPUfreq初始化配置。
2)用户根据实际需要选择是否调节内核CPU0-3的工作频率,例如,当负载较低时,可适度降低CPU0-3的工作频率,甚至关闭CPU1-3。
3)若有用户输入,根据用户指令改变CPU各内核的频率及其工作状态,同时通过功耗测试驱动读取PC当前的功耗,将这些数据写入MySQL数据库中,并绘制当前CPU各内核的频率和PC功耗曲线图。
4)若无用户输入,仅读取当前CPU各内核的频率及其工作状态,同时通过功耗测试驱动读取PC当前的功耗,将这些数据写入MySQL数据库中,并绘制当前CPU各内核的频率和PC功耗曲线图。
5)回到2),重新开始。
4测试环境、实例和结果
4.1测试环境
基于CPUfreq的DVFS节能软件的测试环境,由目标PC机和功耗测试仪构成,如图8所示。
图8DVFS节能软件的测试环境
1)目标PC机:目标PC机是基于CPUfreq的DVFS节能软件的运行主体,其软硬件配置如表1所示。
表1 测试用目标PC机的软硬件配置
2)测试工具:选用手持式用电检测仪HP-8713/2A作为运行DVFS节能软件的目标PC的功耗测试工具,该检测仪的工作范围如下:
负载电流:0.001~2 A;
输入电压:85~265 V;
电源频率:45~65 Hz;
有功功率:0.01~440 W.
3)测试条件:测试时环境温度为15~35℃,相对湿度为(25~75)%,大气压力为86~106 kPa。测试电源为交流220(±2.2)V,电源频率为50(±1)Hz,总谐波失真不超过2%[11]。
4.2测试实例和结果
将PC上常见的应用——视频播放作为测试实例:即在目标PC上播放同一影片(720 p),对比未使用和使用基于CPUfreq的DVFS节能软件的情况时目标PC的功耗。
1)未使用基于CPUfreq的DVFS节能软件的情况:
当目标PC机的CPU四核全速(即CPU0、CPU1、CPU2和CPU3均运行在最高频率2 600 MHz)播放720 p影片时,目标PC的功耗在26~29 W。
2)使用基于CPUfreq的DVFS节能软件的情况:
当运行基于CPUfreq的DVFS节能软件,通过调节频率使CPU处于节能状态(即CPU1、CPU2和CPU3均关闭,CPU0运行在最高频率2 600 MHz)播放同一部720p影片时,目标PC的功耗在22~24 W,相比未使用基于CPUfreq的DVFS节能软件,功耗降低了20~25%,如图9所示。
图9运行DVFS节能软件情况下播放720 p影片
PC功耗的测试结果
5结语
为解决计算机在使用过程中的能耗问题,本文在研究Linux各种功耗管理框架的基础上,基于CPUfreq子系统实现了对CPU各个内核频率的动态调节。测试结果表明,采用基于CPUfreq子系统的节能程序可以方便快速地实现DVFS,从而有效地降低功耗。下一步的工作,将其移植和应用到基于Linux的嵌入式移动设备中,延长其电池寿命和待机时间。
参考文献:
[1] 高旭宏. 操作系统级低功耗技术研究[D]. 合肥:中国科学技术大学,2012.
[2] 汪琳玫.多核环境下动态功耗管理框架的研究及在aComl中的应用[D].成都:电子科技大学,2012.
[3] 韩进. 嵌入式系统功耗管理研究与实现[D].济南:山东大学,2010.
[4] 黄武陵,宋莉,何小庆,等. 嵌入式Linux的动态电源管理技术[J]. 单片机与嵌入式系统应用,2005(9):30-33.
[5] 贺小川. 单芯片系统(SoC)中的实时任务调度算法研究[D]. 长沙:国防科学技术大学, 2008.
[6] 宋靖. SkyDPM动态电源管理模拟系统的研究与实现[D]. 长沙:国防科学技术大学, 2006.
[7] 范圆圆.基于资源监控的 Linux 电源管理系统的设计与实现[D].黑龙江:哈尔滨工业大学计算机科学与技术学院,2013.
[8] 张国琛. 基于Linux的低功耗手持设备系统的设计与实现[D]. 武汉: 武汉理工大学, 2011.
[9] Chen J.J. and Kuo. C.F. Energy-Efficient Scheduling for Real-Time Systems on Dynamic Voltage Scaling (DVS) Platforms [a].//RTCSA[C]. 2007:28-38.
[10] Isci C, Contreras G, Martonosi M. Live, runtime phase monitoring and prediction on real systems with application to dynamic power management[a]Proceedings of the 39th Annual IEEE/ACM International Symposium on Microarchitecture[C]. IEEE Computer Society, 2009: 359-370.
[11] CQC3114-2009, 中国质量认证中心认证技术规范[S].
Research and Implementation of DVFS Energy-Saving Technologies Based on CPUfreq
Wang Yihan1,Wang Kailin1,Sun Xiankun1,Zhang Dongsong2,Wu Fei1
(1.College of Electronic and Electrical Engineering, Shanghai University of Engineering Science,Shanghai201620, China; 2.Zhenjiang Watercraft College of PLA, Zhenjiang212000, China)
Abstract:Nowadays, computer system requires larger power consumption. In order to solve this problem, the DVFS energy-saving software based on CPUfreq was researched and implemented. Firstly, analyzes and compares the existing main power management frameworks. Secondly, describes CPUfreq subsystem and its frame structure. Furthermore, develops the DVFS energy-saving software based on the CPUfreq subsystem and implements Dynamic Voltage Frequency Scaling (DVFS). Finally, takes the video display of 720p as example and the power consumption testing has been conducted on the computer system where the DVFS energy-saving software runs. The test results show that the DVFS energy-saving software can relatively save the energy consumption of the computer system such as PC.
Keywords:energy-saving; power management; DVFS
文章编号:1671-4598(2016)02-0151-04
DOI:10.16526/j.cnki.11-4762/tp.2016.02.041
中图分类号:TP319
文献标识码:A
作者简介:王益涵(1981-),硕士讲师,主要从事嵌入式与实时系统方向的研究。
基金项目:国家自然科学基金(61272097);上海市大学生创新训练项目(cs1402012)。
收稿日期:2015-07-13;修回日期:2015-09-16。
吴飞(1968-),博士,教授,主要从事计算机并行处理与节能控制方向的研究。