Linux系统中的dvfs功能

本文详细介绍了动态电压/频率调整(DVFS)的概念及其在CPU功耗与性能之间的平衡作用。通过具体实例展示了如何在系统运行过程中动态调整CPU频率,并解释了开机脚本中设置的不同调频策略对频率变化的影响。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言

最近硬件的同事需要我们提供的版本能动态调频,何为动态调频呢?对于CPU来讲,功耗和性能是一对不可调和的矛盾,通过调整CPU的电压和频率,可以在功耗和性能之间找一个平衡点。由于调整是在系统运行的过程中,因此这种功能也称作动态电压/频率调整(Dynamic Voltage/Frequency Scaling,DVFS)。说白了,就是在不需要高性能时,降低电压和频率,以降低功耗;在需要高性能时,提高电压和频率,以提高性能。

正文

在开机过程中,我们可以用下面的命令来读取目前CPU运行的频率:

# cat /sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_cur_freq
1488000

可以看到,我板子的运行频率为1488000 KHz。如果将命令封装在脚本中并开机自动,那么就能读取到开机过程中的运行频率变化了,如果开启了DVFS功能的话,读取到的值肯定是否变化的。
一开始,我手上的板子运行频率并没有变化,后来查阅了一些资料后,原来是脚本中设置了关闭,在我板子的inittab脚本中有这么几个命令:

null::sysinit:echo 1488000 > /sys/devices/system/cpu/cpu0/cpufreq/scaling_max_freq
null::sysinit:echo 96000 > /sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq
null::sysinit:echo performance > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor

前两条命令的含义是,动态频率的变化范围在96000 KHz~1488000 KHz,但是performance的含义是将CPU频率固定工作在其支持的最高运行频率上,而不动态调节。如果想设置为动态调频,则应该设置如下:

echo interactive > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor

其实在/sys/devices/system/cpu/cpu0/cpufreq目录下还有很多的节点,比如:

1、scaling_available_frequencies

# cat scaling_available_frequencies
96000 192000 312000 408000 504000 600000 696000 816000 912000 1008000 1104000 1200000 1296000 1416000 1488000

支持的所有频率,动态调频就是在这几个值中变化

2、scaling_available_governors

# cat scaling_available_governors
hotplug interactive conservative ondemand performance

除了一开始我们看到的几个调频策略,还有其他的策略可以通过这个节点获取

3、affected_cpus

# cat affected_cpus
0 1 2 3

我们只是设置了CPU0的策略,但是在一些平台,其他的CPU会跟随主CPU的变化而变化,这个节点就可以看出来哪些online的CPU使用相同的策略

参考链接:https://blog.youkuaiyun.com/melody157398/article/details/7948101

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值