linux下cpu锁定频率以及频率设置
环境如下
- ubuntu22.04
- cpu为5700g
前期准备
-
使用工具为:cpufrequtils
sudo apt-get install cpufrequtils
-
查询cpu相关信息
cpufreq-info
# 部分信息如下 analyzing CPU 0: driver: amd-pstate CPUs which run at the same hardware frequency: 0 CPUs which need to have their frequency coordinated by software: 0 maximum transition latency: 131 us. hardware limits: 400 MHz - 4.67 GHz available cpufreq governors: conservative, ondemand, userspace, powersave, performance, schedutil current policy: frequency should be within 400 MHz and 4.67 GHz. The governor "ondemand" may decide which speed to use within this range. current CPU frequency is 2.12 GHz.
available cpufreq governors为模式选择,其意义分别如下:
策略 作用 conservative 保守的,会自动在频率上下限调整,相对于ondemand调度不是很激进 ondemand 一有cpu计算量的任务,就会立即达到最大频率运行,等执行完毕就立即回到最低频率 powersave 以最低频率运行 performance 以最高频率运行 userspace 以用户自定义频率运行 schedual 基于scheduler负载数据的调频 -
使用命令查询cpu各线程的频率
cat /proc/cpuinfo | grep MHz ######################### cpu MHz : 1137.544 cpu MHz : 528.190 cpu MHz : 400.000 cpu MHz : 1587.075 cpu MHz : 442.730 cpu MHz : 1554.973 cpu MHz : 400.000 cpu MHz : 1609.307 cpu MHz : 400.000 cpu MHz : 570.920 cpu MHz : 400.000 cpu MHz : 784.570 cpu MHz : 1684.389 cpu MHz : 570.920 cpu MHz : 442.730 cpu MHz : 613.650
设置如下
-
对cpu锁定频率的话,可以两个步骤,首先是将cpu的调度策略换成userspace, 再指定频率
-
使用cpufreq-set 进行设置,其相关的参数如下:
jing@jing:~$ cpufreq-set -help cpufrequtils 008: cpufreq-set (C) Dominik Brodowski 2004-2009 Report errors and bugs to cpufreq@vger.kernel.org, please. Usage: cpufreq-set [options] Options: -c CPU, --cpu CPU number of CPU where cpufreq settings shall be modified -d FREQ, --min FREQ new minimum CPU frequency the governor may select -u FREQ, --max FREQ new maximum CPU frequency the governor may select -g GOV, --governor GOV new cpufreq governor -f FREQ, --freq FREQ specific frequency to be set. Requires userspace governor to be available and loaded -r, --related Switches all hardware-related CPUs -h, --help Prints out this screen Notes: 1. Omitting the -c or --cpu argument is equivalent to setting it to zero 2. The -f FREQ, --freq FREQ parameter cannot be combined with any other parameter except the -c CPU, --cpu CPU parameter 3. FREQuencies can be passed in Hz, kHz (default), MHz, GHz, or THz by postfixing the value with the wanted unit name, without any space (FREQuency in kHz =^ Hz * 0.001 =^ MHz * 1000 =^ GHz * 1000000).
-
例如指定所有cpu线程以3GHz的频率运行
- 可以编写以下脚本cpu_test.sh(我的cpu有16个线程)
sudo cpufreq-set -g userspace -c 0 sudo cpufreq-set -f 3GHz -c 0 sudo cpufreq-set -g userspace -c 1 sudo cpufreq-set -f 3GHz -c 1 sudo cpufreq-set -g userspace -c 2 sudo cpufreq-set -f 3GHz -c 2 sudo cpufreq-set -g userspace -c 3 sudo cpufreq-set -f 3GHz -c 3 sudo cpufreq-set -g userspace -c 4 sudo cpufreq-set -f 3GHz -c 4 sudo cpufreq-set -g userspace -c 5 sudo cpufreq-set -f 3GHz -c 5 sudo cpufreq-set -g userspace -c 6 sudo cpufreq-set -f 3GHz -c 6 sudo cpufreq-set -g userspace -c 7 sudo cpufreq-set -f 3GHz -c 7 sudo cpufreq-set -g userspace -c 8 sudo cpufreq-set -f 3GHz -c 8 sudo cpufreq-set -g userspace -c 9 sudo cpufreq-set -f 3GHz -c 9 sudo cpufreq-set -g userspace -c 10 sudo cpufreq-set -f 3GHz -c 10 sudo cpufreq-set -g userspace -c 11 sudo cpufreq-set -f 3GHz -c 11 sudo cpufreq-set -g userspace -c 12 sudo cpufreq-set -f 3GHz -c 12 sudo cpufreq-set -g userspace -c 13 sudo cpufreq-set -f 3GHz -c 13 sudo cpufreq-set -g userspace -c 14 sudo cpufreq-set -f 3GHz -c 14 sudo cpufreq-set -g userspace -c 15 sudo cpufreq-set -f 3GHz -c 15 exit 0
- 执行cpu_test.sh,再查看cpu运行频率
jing@jing:~$ cat /proc/cpuinfo | grep MHz cpu MHz : 3000.000 cpu MHz : 3000.000 cpu MHz : 3000.000 cpu MHz : 3000.000 cpu MHz : 3000.000 cpu MHz : 3000.000 cpu MHz : 3000.000 cpu MHz : 3000.000 cpu MHz : 2969.117 cpu MHz : 3000.000 cpu MHz : 3000.000 cpu MHz : 3000.000 cpu MHz : 3000.000 cpu MHz : 3000.000 cpu MHz : 3000.000 cpu MHz : 3000.000
- 可以发现cpu的线程基本稳定在3GHz上下
- 也可以尝试另一种锁定频率的方法将最小频率和最大频率都设置成3GHz
-
设置成保守模式,可执行以下脚本内容
sudo cpufreq-set -g conservative -c 0 sudo cpufreq-set -g conservative -c 1 sudo cpufreq-set -g conservative -c 2 sudo cpufreq-set -g conservative -c 3 sudo cpufreq-set -g conservative -c 4 sudo cpufreq-set -g conservative -c 5 sudo cpufreq-set -g conservative -c 6 sudo cpufreq-set -g conservative -c 7 sudo cpufreq-set -g conservative -c 8 sudo cpufreq-set -g conservative -c 9 sudo cpufreq-set -g conservative -c 10 sudo cpufreq-set -g conservative -c 11 sudo cpufreq-set -g conservative -c 12 sudo cpufreq-set -g conservative -c 13 sudo cpufreq-set -g conservative -c 14 sudo cpufreq-set -g conservative -c 15 exit 0