通过动态改变CPU电压,可以调整CPU主频。
通过改变时钟倍数可以动态改变CPU时钟频率。
一些具有CPU主频率时钟倍数可调能力的处理器,能够在不同的主频率和工作电压之间动态切换;而不需要内核或者用户介入。
术语定义
策略 (Policy) : 在系统中,用户只能选择主频上限和下限,以及是否希望激进的省功耗模式或者更好的处理器性能模式。
管理器(Governor): 在所有的其他cpufreq实现中, 仍然需要设置主频率边界。Governor决定了处理器以何种速度运行在频率限制之内。
如何调整CPU主频策略或速度
sysfs文件系统是缺省控制接口。
一般第一个处理器核的cpufreq控制结点位于 /sys/devices/system/cpu/cpu0/cpufreq/
cpuinfo_min_freq: 该文件指定了处理器能够运行的最低工作频率 (单位: 千赫兹)
cpuinfo_max_freq: 该文件指定了处理器能够运行的最高工作频率 (单位: 千赫兹)
cpuinfo_transition_latency: 该文件定义了处理器在两个不同频率之间切换时所需要的时间 (单位: 纳秒)
scaling_driver: 该文件显示该CPU正在使用何种cpufreq driver
scaling_available_governors: 该文件显示当前内核中支持的所有cpufreq governor类型
scaling_governor: 通过echo命令,能够改变当前处理器的governor类型
cpuinfo_cur_freq: 当前cpu正在运行的工作频率
scaling_available_frequencies: 所有支持的主频率列表 (单位: 千赫兹)
scaling_min_freq/scaling_max_freq: 显示当前policy的上下限 (单位: 千赫兹)
需要注意的是,当改变cpu policy时,需要首先设置scaling_max_freq, 然后才是scaling_min_freq
affected_cpus: 需要软件协调频率的CPU列表
related_cpus: 需要软件或者硬件来协调频率的CPU列表
scaling_driver: cpufreq控制的硬件驱动
scaling_cur_freq: 被governor和cpufreq核决定的当前CPU工作频率。该频率是内核认为该CPU当前运行的主频率
bios_limit: 如果BIOS告知操作系统限制某一cpu到一个低频率,用户能够从此文件中读取其所支持的最大频率。
scaling_setspeed: 如果用户选择了“userspace” governor, 那么可以设置cpu工作主频率到某一个指定值。
只需要这个值在scaling_min_freq 和 scaling_max_freq之间即可。