linux下cpu锁定频率以及频率设置
环境如下
- ubuntu22.04
- cpu为5700g
前期准备
-
使用工具为:cpufrequtils
sudo apt-get install cpufrequtils
-
查询cpu相关信息
cpufreq-info
# 部分信息如下 analyzing CPU 0:driver: amd-pstateCPUs which run at the same hardware frequency: 0CPUs which need to have their frequency coordinated by software: 0maximum transition latency: 131 us.hardware limits: 400 MHz - 4.67 GHzavailable cpufreq governors: conservative, ondemand, userspace, powersave, performance, schedutilcurrent policy: frequency should be within 400 MHz and 4.67 GHz.The governor "ondemand" may decide which speed to usewithin 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 userspacegovernor to be available and loaded-r, --related Switches all hardware-related CPUs-h, --help Prints out this screenNotes: 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 parameterexcept the -c CPU, --cpu CPU parameter 3. FREQuencies can be passed in Hz, kHz (default), MHz, GHz, or THzby 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