围城
分类: LINUX
2018-01-31 18:43:35
从Ubuntu15的某个版本开始,在使用intel某些cpu的pc上默认使用intel_pstate cpufreq driver。后果就是只有performance和powersave两个governor可用。可通过下面命令确认:
cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_available_governor
powersave performance
可看到可选的governor很少,只有两种(对于非intel_pstate cpufreq driver而言,常见的governor有ondemand powersave performance conservative userspace等,有些android设备还有叫interactive的governor)。
或者用 cpufreq-info
$ cpufreq-info
cpufrequtils 008: cpufreq-info (C) DominikBrodowski 2004-2009
Report errors and bugs tocpufreq@vger.kernel.org, please.
analyzing CPU 0:
driver: intel_pstate
CPUs which run at the same hardware frequency: 0
CPUs which need to have their frequency coordinated by software: 0
maximum transition latency: 0.97 ms.
hardware limits: 1.20 GHz - 2.80 GHz
available cpufreq governors: performance, powersave
current policy: frequency should be within 1.20 GHz and 2.80 GHz.
The governor"powersave" may decide which speed to use
within this range.
current CPU frequency is 1.21 GHz.
…
注: 要使用cpufreq-info和后面要提到的cpufreq-set,请先安装cpufrequtils,后面会提到。
在使用intel_pstate cpufreq driver的情况下,即使governor是powersave或者performance,但观测发现scaling_cur_freq是一直变化的,而不是像它们的含义一样,使用最低或者最高频率。
如果要测试系统或者软件的性能,我们需要固定cpu频率。本文讲述如何在这种的pc上固定cpu频率。
1. 安装cpufrequtils
sudo apt-get install cpufrequtils
2. Disable intel_pstate driver
in /etc/default/grub, change
GRUB_CMDLINE_LINUX_DEFAULT="quietsplash"
to
GRUB_CMDLINE_LINUX_DEFAULT="quietsplash intel_pstate=disable"
sudo update-grub
after reboot, then acpi-cpufreq driver willbe used.
3. 固定频率
这时sysfs下cpufreq相关的节点就是我们熟悉的文件了。
可使用powersave来使用固定的最低频率,
sudo cpufreq-set -g performance
也可使用performance governor来使用固定的最高频率
sudo cpufreq-set -g powersave
推荐使用userspace governor,然后设置我们期望的频率(这里假设我们要设置cpu频率为2GHz).
sudo cpufreq-set -g userspace
sudo cpufreq-set -f 2000000