更新 - 2018-11-25
另外,我想提一下,有以下命令可以使用 CpuFreq 子系统,而无需使用任何工具(例如 cpufrequtils,因为它用于实现相同的目的)。有时这些工具缺乏功能,或者根本无法按照我们的要求工作。由于 CpuFreq 核心在 /sys/devices/system/cpu/ 下创建了一个 sysfs 目录,因此某些属性可在内核级别以读写方式进行更改。这些属性更改称为策略,因为 CpuFreq 在 sysfs 中有一个策略接口。下面的命令应该在启动时工作,并且在启动期间保持不变。
如果缩放调控器选择为 intel_pstate; (如果决定使用 intel_pstate,这部分可能有助于避免更高的频率)
由于想要防止更高的频率,也可以禁用涡轮增压。
echo "1" | sudo tee /sys/devices/system/cpu/intel_pstate/no_turbo
之后,以下命令可能会很有用。
echo "70" | sudo tee /sys/devices/system/cpu/intel_pstate/max_perf_pct (70 can be changed by another percentage if clock speed and turbo speed is higher numbers. 70-80 should be enough to not reaching above 2.5 GHz)
该属性的解释如下https://www.kernel.org/doc/Documentation/cpu-freq/intel-pstate.txt https://www.kernel.org/doc/Documentation/cpu-freq/intel-pstate.txt并且可能有助于降低更高的 CPU 频率。
max_perf_pct:限制将请求的最大 P-State
司机。它将其表示为可用性能的百分比。
因为 P 状态是操作状态,并且通过从 Pn 变为 P0,频率会增加。因此,将最大 P 状态限制为最大支持性能水平的百分比可能会很有用。检查此链接:https://software.intel.com/en-us/blogs/2008/05/29/what-exactly-is-a-p-state-pt-1 https://software.intel.com/en-us/blogs/2008/05/29/what-exactly-is-a-p-state-pt-1
此外,在 intel_pstate 中,CPU 共享相同的属性。使用 intel_pstate 作为缩放调节器时,可以通过添加以下内核参数来使用每个 CPU 性能限制作为 cpufreq 属性(例如scaling_max_freq);
intel_pstate=per_cpu_perf_limits
否则,可以单独设置CPU;
echo -n 2457600 > /sys/devices/system/cpu/cpu0/cpufreq/scaling_max_freq
echo -n 2457600 > /sys/devices/system/cpu/cpu1/cpufreq/scaling_max_freq
echo -n 2457600 > /sys/devices/system/cpu/cpu2/cpufreq/scaling_max_freq
echo -n 2457600 > /sys/devices/system/cpu/cpu3/cpufreq/scaling_max_freq
但是,有一个重要的部分是Linux中的内置脚本(/etc/init.d/ondemand)。如果将 ondemand 或 powersave 用作缩放调节器,那么我们设置的配置(如上面)可能会与此脚本发生冲突。应通过以下命令禁用该脚本;
sudo /usr/sbin/update-rc.d ondemand disable
更多信息在这里:https://help.ubuntu.com/community/UbuntuStudio/Setting_CPU_Governor https://help.ubuntu.com/community/UbuntuStudio/Setting_CPU_Governor
禁用 ondemand 后,可以通过上述配置来设置和使用其他扩展调节器(如用户空间、性能)。
这些都是基本命令(下面和上面的部分),它们应该有助于解决 CPU 频率缩放问题,因为我也想提供这些信息以供将来参考。
首先,我想提供一些有关CPU频率调整的信息。
三个术语与此过程相关(它们是称为“CPU 性能扩展”的子系统的各层),应该对它们进行基本审查和讨论,以确保正确理解所有内容。
CPUFreq 核心是一个基本框架,包含支持此功能的所有平台的通用代码基础结构。
CPU 频率驱动程序更改由缩放调速器管理的 CPU P 状态,并与硬件通信。
(P-State 表示它们是可操作的,与 C-State 相比,C-State 是除 C0 状态之外的空闲状态。C0 状态也是忙碌和活动状态。)
缩放调节器实现缩放算法。
顺便说一下,CPU 性能扩展是一个很深的话题,有很多事情需要考虑。基本上,有了上面的信息,下面的命令应该可以满足您的需求。
首先,我认为英特尔_pstate目前在您的笔记本电脑中用作缩放驱动程序。因此,禁用它可能会为我们提供更高级的设置和更多的调控器(intel_pstate 有两个调控器,分别是节能 and 表现)。我认为 powersave 是 intel_pstate 的默认调控器。
sudo vi /etc/default/grub
将 intel_pstate=disable 添加到 GRUB_CMDLINE_LINUX_DEFAULT 参数。
GRUB_CMDLINE_LINUX_DEFAULT="intel_pstate=disable"
添加参数后执行以下命令。
modprobe acpi-cpufreq
sudo update-grub
您可以通过以下命令在启动时检查内核参数
cat /proc/cmdline
通过这种方式,ACPI CPU频率将作为缩放驱动程序启用(因为禁用 intel_pstate)。所以,下一步可以将州长设置为用户空间以所需频率运行 CPU 或将其设为默认频率(ondemand应该是 acpi-cpufreq 的默认设置)。
第一种调速器设定方式及最大频率设定
如果您想更改缩放调节器(例如用户空间):
sudo update-rc.d ondemand disable (This command prevents above commands to be reset after reboot)
sudo apt install cpufrequtils (To control the CPU frequency scaling deamon)
echo 'GOVERNOR="userspace"' | sudo tee /etc/default/cpufrequtils
完成这些步骤后,我们应该有ACPI CPU频率作为缩放驱动器和ondemand(如果您没有更改调控器)作为缩放调控器。所以,最后一件事似乎是设置 CPU 的最大频率。
像下面这样编辑 /etc/default/cpufrequtils 应该设置 CPU 频率。如果该文件不存在,请创建它。
MAX_SPEED="2457600"
MIN_SPEED="1536000"
另请检查同一文件中的以下行。
ENABLE="true"
GOVERNOR="ondemand" (or userspace)
但是,通过这种方式,我认为无法保证将所有 CPU 核心设置为相同的频率值。我看到有人说下面的方法(第二种方法)将所有CPU核心设置为他们想要的值,但不是第一种方法。
第二种调速器设定方式及最高频率设定
安装tlp(Linux电源管理工具)
sudo apt install tlp
安装后,编辑 /etc/default/tlp 如下:
# 选择 CPU 频率调节调节器:# ondemand、powersave、
性能,保守 # 带有 intel_pstate 的 Intel Core i 处理器
驱动程序:#省电,性能#重要:#你must禁用您的发行版的调控器设置,否则会发生冲突#
发生。按需就足够了几乎全部工作负载,你应该
知道#你在做什么! CPU_SCALING_GOVERNOR_ON_AC=按需
CPU_SCALING_GOVERNOR_ON_BAT=按需
# 设置缩放调节器可用的最小/最大频率。 #
可能的值很大程度上取决于您的 CPU。对于可用频率
请参阅 # tlp-stat 输出,“+++ 处理器”部分。
CPU_SCALING_MIN_FREQ_ON_AC=0
CPU_SCALING_MAX_FREQ_ON_AC=0
CPU_SCALING_MIN_FREQ_ON_BAT=1536000
CPU_SCALING_MAX_FREQ_ON_BAT=2457600
重启或暂停设备后应保留以上设置。
我试图提供并解释设置 CPU 频率的方法(也是为了保持设置持久性),但我可能忘记了一些东西。所以,请检查以上信息并尝试这些是否满足您的需求。另外,您可以使用以下命令来确保一切正确。
cpufreq-info
注意:请查看以下页面以获取更多信息。
州长名单
https://www.kernel.org/doc/Documentation/cpu-freq/governors.txt https://www.kernel.org/doc/Documentation/cpu-freq/governors.txt
https://www.kernel.org/doc/html/v4.14/admin-guide/pm/cpufreq.html https://www.kernel.org/doc/html/v4.14/admin-guide/pm/cpufreq.html
https://www.kernel.org/doc/html/v4.12/admin-guide/pm/intel_pstate.html https://www.kernel.org/doc/html/v4.12/admin-guide/pm/intel_pstate.html