Linux内核dvfs之cpufreq配置

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux内核dvfs之cpufreq配置相关的知识,希望对你有一定的参考价值。

参考技术A

本文基于 RockPi 4A 单板 Linux4.4 内核介绍 OPP Table 。

内核中将频率、电压的相关配置放在 DTSI 文件中,这些配置信息组成的节点被称为 OPP Table(Operating Performance Points) 。

定义文件: arch/arm64/boot/dts/rockchip/rk3399-opp.dtsi ,内容如下:

上面节点中的相关属性含义如下:

1、 opp-shared :表示 opp-table1 是小核的各 CPU 共用。

2、 rockchip,temp-hysteresis :迟滞参数,防止频繁进入高温或低温,单位:毫摄氏度。

3、 rockchip,low-temp :低温阈值。小于该值时,进入低温,大于‘该值+迟滞参数’时,恢复常温。

4、 rockchip,low-temp-min-volt :低温下最低电压,单位:微伏。

5、 nvmem-cells :从 eFUSE 中读取相关信息值(小核漏电流)。

6、 rockchip,pvtm-voltage-sel :min-pvtm(单位KHz)、max-pvtm(单位KHz)和 voltage-selector (用于匹配 opp 节点中 opp-microvolt-L* 属性的序列号)。例:pvtm值为:0 ~ 143500 使用 opp-microvolt-L0 ,143501 ~ 148500使用 opp-microvolt-L1

7、 rockchip,pvtm-freq :时钟频率(KHz),在获取 pvtm 的频率前,先设置 CPU 频率。

8、 rockchip,pvtm-volt :电压(微伏),在获取 pvtm 的频率前,先设置 CPU 电压。

9、 rockchip,pvtm-ch : PVTM 通道,格式<通道号 sel的序号>

10、 rockchip,pvtm-sample-time : PVTM 采样时间,单位:毫秒。

11、 rockchip,pvtm-number : PVTM 采样个数。

12、 rockchip,pvtm-error :允许采样数据之间的误差。

13、 rockchip,pvtm-ref-temp :参考温度。

14、 rockchip,pvtm-temp-prop : PVTM 随温度变化的比例系数,格式<小于参考温度的比例系数 大于参考温度的比例系数>。

15、 rockchip,thermal-zone :获取温度的 thermal-zone 。

16、 opp-microvolt-L* :电压(微伏),格式<target min max>

17、 clock-latency-ns :完成变频需要的时间,单位:纳秒。

在 RK3399 中,除了配置上述小核的 opp table 外,还设置了大核( cluster1_opp )、 gpu(gpu_opp_table) 等的相关值。查看命令如下:

注:

CPU PVTM(Process Voltage Temperature Monitor) 是一个位于 CPU 附近,能反应出不同芯片之间性能差异的模块,受工艺,电压和温度 的影响。

参考:

Documentation/devicetree/bindings/cpufreq/cpufreq-rockchip.txt

Documentation/devicetree/bindings/cpufreq/cpufreq-rockchip.txt

Linux(debian7)操作基础之CPU频率调整 Linux系统CPU频率调整工具使用

在Linux中,内核的开发者定义了一套框架模型来完成CPU频率动态调整这一目的,它就是CPU Freq系统。如下为CPU的几种模式(governor参数):

ondemand:系统默认的超频模式,按需调节,内核提供的功能,不是很强大,但有效实现了动态频率调节,平时以低速方式运行,当系统负载提高时候自动提高频率。以这种模式运行不会因为降频造成性能降低,同时也能节约电能和降低温度。一般官方内核默认的方式都是ondemand。

interactive:交互模式,直接上最高频率,然后看CPU负荷慢慢降低,比较耗电。Interactive 是以 CPU 排程数量而调整频率,从而实现省电。InteractiveX 是以 CPU 负载来调整 CPU 频率,不会过度把频率调低。所以比 Interactive 反应好些,但是省电的效果一般。

conservative:保守模式,类似于ondemand,但调整相对较缓,想省电就用他吧。Google官方内核,kang内核默认模式。

smartass:聪明模式,是I和C模式的升级,该模式在比interactive 模式不差的响应的前提下会做到了更加省电。

performance:性能模式!只有最高频率,从来不考虑消耗的电量,性能没得说,但是耗电量。

powersave 省电模式,通常以最低频率运行。

userspace:用户自定义模式,系统将变频策略的决策权交给了用户态应用程序,并提供了相应的接口供用户态应用程序调节CPU 运行频率使用。也就是长期以来都在用的那个模式。可以通过手动编辑配置文件进行配置

Hotplug:类似于ondemand, 但是cpu会在关屏下尝试关掉一个cpu,并且带有deep sleep,比较省电。

在进行CPU频率优化之前,我们首先需要使用命令:

lsmod | grep "acpi_cpufreq"

查看内核是否加载了acpi_cpufreq模块,如果加载了此模块,按照一般情况发行版都会将CPU默认设置为 “ondemand”模式。

之后可以通过命令:

cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_available_frequencies

来进一步确认CPU节能模式,但此时用户无法进行修改,需要进行修改必须使用命令安装cpufreq管理软件,在Debian Gnu/Linux下使用如下命令:

apt-get install cpufrequtils

之后我们就可以通过修改相应系统所在配置文件,Debian Gnu/Linux 8

/etc/init.d/cpufrequtils

修改Debian Gnu/Linux 8配置文件中:

GOVERNOR="ondemand"
为:

GOVERNOR="performance"

执行命令:/etc/init.d/cpufrequtils restart即可重启相关cpufreq管理软件。

————————————————

从 kernel 3.9 开始,名为 pstate 的新的功率驱动程序将会在以下的驱动程序之前自动为现代的 Intel CPU 启用。该驱动会优先于其他的驱动程序,因为它是内置驱动,而不是作为一个模块来加载。

该驱动自动作用于 Sandy Bridge 和 Ivy Bridge 这两个类型的 CPU,在该模式下CPU只能被设置成performance或者powersave模式。如果您在使用这个驱动的时候遇到问题,建议您在 Grub 的内核参数中对其禁用(即修改 /etc/default/grub 文件,在 GRUB_CMDLINE_LINUX_DEFAULT= 后添加 intel_pstate=disable)


————————————————

原文链接:https://www.cnblogs.com/276815076/p/5434295.html

 

以上是关于Linux内核dvfs之cpufreq配置的主要内容,如果未能解决你的问题,请参考以下文章

原创Linux cpufreq framework

CPUFreq驱动

Linu之linux系统基础优化和基本命令

Linux(debian7)操作基础之CPU频率调整 Linux系统CPU频率调整工具使用

从基本理解到深入探究 Linux动态频率调节系统cpufreq

Linux动态频率调节系统CPUFreq之三:governor