功耗与性能系列之DVFS功能特性介绍

功耗与性能系列之DVFS功能特性介绍
前⾔
在云计算领域,服务器作为云服务的基⽯,其重要性不⾔⽽喻,当今,云数据中⼼部署服务器规模达到百万级,单机的功耗成功优化可以产⽣较⼤的经济效益,⽽操作系统在节电和功耗优化对云数据中⼼的节能有着重要的影响。
本⽂正是出于这个初衷,基于linux内核中现成的DVFS技术,进⾏了⼀次功耗与性能⽅⾯的探索。
什么是DVFS
DVFS全称Dynamic Voltage and Frequency Scaling,即动态电压频率调整。这项技术可以根据芯⽚运⾏的应⽤程序的计算需求,动态调整电压和频率,在不需要⾼性能时,降低电压和频率,以降低功耗;在需要⾼性能时,提⾼电压和频率,以提⾼性能,从⽽达到兼顾性能⽽⼜节能的⽬的。
DVFS⽀持的策略
⽬前DVFS⽀持调频调压策略主要包含如下⼏种:
3.performance cpu按照⽀持的最⾼频率运⾏
4.powersave cpu以⽀持的最低频率运⾏
5.userspace 使⽤⽤户在/sys 节点scaling_setspeed设置的频率运⾏。
DVFS实现情况
软件实现
内核⽬前有⼀套完整的代码⽀持DVFS,具体可参考内核下drivers/cpufreq/。
1.提供⽤户态/sys接⼝,⽀持不同DVFS策略的配置
2.cpufreq driver驱动实现不同的频率、电压配置的硬件接⼝
3.cpufreq_policy⽀持不同策略的实现
4.cpufreq_governor不同策略具体实现⽅式
5.cpufreq_core 将上层调⽤、driver以及各governor融合在⼀起。
注:上图中kernel中箭头⽅向并⾮⼀定正确,只是为了表⽰cpufreq各⼦模块错综复杂的关系罢了。
⽤户态⼯具
cpufrequtils是⼀种可查看、可配置、可测试的DVFS⼯具,其主要包含cpufreq-info, cpufreq-set,cpufreq-bench三个部分,其中cpufreq-info是查看功能,⽤于查看cpu DVFS相关信息,cpufreq-set是配置⼯具,⽤于对cpu进⾏dvfs设
置,cpufreq-bench是benchmark测试⼯具,⽤于不同策略下的性能测试。⽬前cpufrequtils已合⼊内核,可在
tools/power/cpupower/下获取。
DVFS⽤户态接⼝介绍
cpufreq相关驱动模块加载后,会在各cpu下创建:/sys/devices/system/cpu/cpuX/cpufreq接⼝,cpufreq该接⼝是通过软链接:/sys/devices/system/cpu/cpufreq⽽来。
cpufreq接⼝
在该接⼝下存在如下通⽤性⽂件,按表格的形式整理如下:
id means
affected_cpus关联的CPU,表⽰其中任何cpu频率变化都跟着变化
cpuinfo_cur_freq当前cpu使⽤频率
cpuinfo_max_freq当前cpu⽀持的最⼤频率
cpuinfo_min_freq当前cpu⽀持的最⼩频率
cpuinfo_transition_latency频率切换时,⽀持的时延
related_cpus相关联的cpu,仅显⽰online
scaling_available_governors可⽤的调频策略
scaling_cur_freq当前频率
scaling_driver采⽤的驱动升频
scaling_governor当前调频策略
scaling_max_freq⽀持的最⼤频率,不包含cpu turbo情况
scaling_min_freq⽀持的最⼩频率
scaling_setspeed设置频率,仅在userspace下使⽤
ondemand接⼝
ondemand接⼝
当配置 echo ondemand > /sys/devices/system/cpu/cpu0/scaling_governor下后,在/sys/devices/system/cpu/cpufreq/⽬录下会增加⼀个ondemand⽬录。
id means
ignore_nice_load是否忽略nice的load影响
io_is_busy io_is_busy:这个参数决定是否根据设备的存储有关的 I/Obusy情况修改频率
powersave_bias考虑功耗情况下,增加的频率打个折
sampling_down_factor控制cpu降频的频率,当设置成1(缺省值),则根据每个采样间隔决定,如果值⼤于1,作为cpu调频间隔的乘积因⼦。
sampling_rate采样频率
up_threshold load上限值
conservative接⼝
当配置 echo conservative > /sys/devices/system/cpu/cpu0/scaling_governor 下后,在/sys/devices/system/cpu/cpufreq/⽬录下会增加⼀个conservative⽬录。
id means
down_threshold下限值
freq_step频率增加步进值
ignore_nice_load是否忽略nice的load影响
sampling_down_factor控制cpu降频的频率,当设置成1(缺省值),则根据每个采样间隔决定,如果值⼤于1,作为cpu调频间隔的乘积因⼦。
sampling_rate采样频率设置
up_threshold上限值
DVFS之ondmand调频算法实现
相⽐conservative调频⽅式较为“激进”,所以在调频过程中,性能恢复快速,在不考虑性能抖动等问题时,追求低时延场景,ondemand降频相⽐conservative调频,更具有优势。
实现原理
算法实现: load =100 (time_elapsed - idle_time) / time_elapsed; freq_next = min_f + load (max_f - min_f) / 100; if load <= up_threshold freq_next = max_f if load > up_threshold
•time_elapsed: 此处可以理解为总的时间
•idle_time:time_elapsed时间内cpu idle时长。
•up_threshold:load上限阈值,若load > up_threshold则表⽰需要升频,则直接升频到所⽀持的最⼤频率,若load <= up_threshold,则按照第三⾏公式,增加或减少频率。
此外还增加了ignore_nice_load、io_is_busy、powersave_bias、sampling_down_factor四个辅助参数调
频,ignore_nice_load表⽰是否忽略nice变化对load造成的影响,io_is_busy表⽰是否idle中考虑io wait的影响;
sampling_down_factor表⽰弥补采样过程中对造成的load测量值偏差,powersave_bias表⽰在考虑节能的情况下,load > up_threshold时,不直接升频到最⼤频率。
DVFS之conservative调频算法实现
相⽐ondemand,conservative调频⽅式较为“柔和”,采⽤这种降频特性的⽬的就在尽量减少降频过程中对系统性能的影响,例如性能抖动问题,从⽽不影响程序对⽤户造成的不良体验。
实现原理
算法实现: load =100 (time_elapsed - idle_time) / time_elapsed; freq_step’ = freq_step * max_freq / 100 freq_next =
cur_freq - freq_step’ if load < down_threshold freq_next = cur_freq + freq_step’ if load > up_threshold time_elapsed: 此处可以理解为总的时间 idle_time:time_elapsed时间内cpu idle时长。 freq_step:频率增加步长。 down_threshold:load下限阈值,若load⼩于down_threshold,则表⽰需要降频。 up_threshold:load上限阈值,若load > up_threshold 则表⽰需要升频。从算法实现来看,conservative不受采样频率的影响,主要可调参数是down_threshold、
up_threshold、freq_step三个参数,此外增加了ignore_nice_load、sampling_down_factor两个辅助调频参
数,ignore_nice_load表⽰忽略nice对load造成的影响,sampling_down_factor可以理解为弥补采样过程中对造成的load测量值偏差。DVFS benchmark测试情况采⽤cpufrequtils⼯具中的cpufreq-bench进⾏性能测试,通过调节不同load情况下,conservative、ondmand、userspace三种调频策略下的性能情况。图⼀:横坐标:load时间纵坐标:对⽐perfmance模式下性能百分占⽐。从图中可以看出: powersave性能下降最为明显,并且不随load的变化⽽变化,虽然该策略下功耗节省最⼤但是明显⽆法满⾜需要⾼性能的场景。 conservative性能下降区间较⼤,降幅相对平稳,不易引起性能抖动,正
好体现其'柔和'之意,但其缺点也很明显,由于是频率是逐步提升的,对于突发要求⾼性能的场景,是⽆法做到及时响应的。受调参的影响,ondemand测试的性能下降区间不够明显,但是从曲线可以看出,其降幅迅速,适⽤于对于快速响应、低时延的场景。 performance情况,不论load怎么变化,相⽐其他调频测试,性能肯定是最优的,但是若需要考虑功耗的场景,performance调频测试也是满⾜不了要求的。功耗对⽐测试采⽤stress测试⼯具,指定cpu数⽬为128,通过ipmi获取整机功率,此处默认整机除stress外并⽆跑其他业务程序,stress测试时设置load从5到100,step为5,分别测试performance、ondemand、conservative、powersave四种调频策略下的功耗情况。图中横坐标表⽰负载load,纵坐标表⽰功率watt。结论从图中可以看出:1、功耗performance > ondemand > conservative
>powersave,其中ondemand、conservative功耗相⽐performance下降并不明显,个⼈认为是受可调参数的影响,若优化可调参数,肯定会有更低的降幅。此外本次测试,cpufreq policy并⾮单cpu控制,⽽是die⽅式,即⼀组cpu共⽤policy, 这就可能导致在dvfs调频时,会出现因单个cpu load增加过⼤,DVFS将其die所相关的cpu的频率均升⾼的现象,从⽽功耗下降不明显。2、设置powersave调频策略时,可以看出功率有明显的降幅,最⾼降幅达到-8%,笔者在没有执⾏stress测试前,功率降幅达到-10%以上,说明在功耗这块,通过DVFS⽅式,是有潜⼒达到兼顾性能⼜能节省功耗的⽬的。后记从本⽂的测试情况,DVFS对于功耗和性能平衡把控并⾮那么完善,要达到兼顾性能⽽⼜降低功耗的⽬
的,需要根据实际的应⽤场景,去做更多的适配和优化,但是怎样定义⽬前处于⾼性能需求或低性能阶段,以及不同阶段,需要调节的频率和电压范围是多少,在实际⽣产应⽤中,这些都有待去研究和分析,所以DVFS这块后续还有很多功能点去挖掘、待实现,任重⽽道远。欢迎钉钉扫码⼊流:

本文发布于:2024-09-23 08:19:35,感谢您对本站的认可!

本文链接:https://www.17tex.com/tex/2/356415.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

上一篇:和利时指令
标签:性能   频率   调频
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议