Leo*_*eon 4 linux cpu kernel frequency
我用 i7 CPU 替换了我笔记本电脑的 i5 CPU,以便它可以运行得更快。但是因为i7的功率更大,温度也比以前高,所以我的笔记本经常死机。所以,我用 cpupower 来指定 CPU 的 MAX 频率,它起作用了。现在,我的问题是“有没有办法在启动时将 CPU 频率指定为 linux 内核的 cmd_line 参数?”,这样我就可以确保系统稳定正确地启动。
顺便说一句,如果新的cpu最多在2.5GHz的频率下运行,一切都好,性能比旧的高一倍。所以我觉得换我的CPU是值得的。
多谢!
更新 - 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
Run Code Online (Sandbox Code Playgroud)
在此之后,下面的命令会很有用。
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)
Run Code Online (Sandbox Code Playgroud)
此属性在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-ap-state-pt-1
此外,在 intel_pstate 中,CPU 共享相同的属性。使用 intel_pstate 作为缩放调节器时,可以通过添加以下内核参数来使用 per-CPU 性能限制作为 cpufreq 属性(例如 scaling_max_freq);
intel_pstate=per_cpu_perf_limits
Run Code Online (Sandbox Code Playgroud)
否则,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
Run Code Online (Sandbox Code Playgroud)
但是,Linux 中有一个重要的部分是内置脚本(/etc/init.d/ondemand)。如果将 ondemand 或 powersave 用作缩放调节器,那么我们设置的配置(如上)可能会与此脚本发生冲突。应通过以下命令禁用该脚本;
sudo /usr/sbin/update-rc.d ondemand disable
Run Code Online (Sandbox Code Playgroud)
更多信息在这里:https : //help.ubuntu.com/community/UbuntuStudio/Setting_CPU_Governor
禁用 on demand 后,可以根据上述配置设置和使用其他缩放调控器(如用户空间、性能)。
这些都是基本命令(下面和上面的部分),它们应该有助于解决 CPU 频率缩放问题,因为我也想提供这些信息以供将来参考。
首先,我想提供一些关于 CPU Frequency Scaling 的信息。
三个术语与此过程相关(它们是称为“CPU 性能缩放”的子系统的层),并且应该对它们进行基本审查和讨论,以确保正确理解所有内容。
CPU频率核心
缩放驱动程序
缩放调节器
CPUFreq 核心是一个基本框架,包含支持此功能的所有平台的通用代码基础结构。
CPU 频率驱动程序更改由缩放调节器管理的 CPU P 状态,并与硬件进行通信。(P-States 意味着它们是可操作的,与 C-States 相反,它们是除 C0 状态之外的空闲状态。C0 状态也是忙碌和活动状态。)
缩放调节器实现缩放算法。
顺便说一下,CPU Performance Scaling 是一个很深的话题,应该考虑很多事情。基本上,有了上面的信息,下面的命令应该可以满足您的需求。
首先,我认为intel_pstate目前在您的笔记本电脑中用作缩放驱动程序。因此,禁用它可能会为我们提供更高级的设置和更多的调控器(intel_pstate 有两个调控器,即powersave和performance)。我认为 powersave 是 intel_pstate 的默认调控器。
sudo vi /etc/default/grub
Run Code Online (Sandbox Code Playgroud)
将 intel_pstate=disable 添加到 GRUB_CMDLINE_LINUX_DEFAULT 参数。
GRUB_CMDLINE_LINUX_DEFAULT="intel_pstate=disable"
Run Code Online (Sandbox Code Playgroud)
添加参数后执行以下命令。
modprobe acpi-cpufreq
sudo update-grub
Run Code Online (Sandbox Code Playgroud)
您可以通过以下命令在启动时检查内核参数
cat /proc/cmdline
Run Code Online (Sandbox Code Playgroud)
通过这种方式,将启用acpi-cpufreq作为缩放驱动程序(因为禁用 intel_pstate)。因此,接下来可以将调控器设置为用户空间以按所需频率运行 CPU 或将其设为默认值(ondemand应该是 acpi-cpufreq 的默认设置)。
第一种设置调速器和最大频率设置的方法
如果您想更改缩放调节器(例如更改为userspace):
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
Run Code Online (Sandbox Code Playgroud)
在这些步骤之后,我们应该将acpi-cpufreq作为缩放驱动程序,并将ondemand(如果您没有更改调控器)作为缩放调控器。所以,最后一件事似乎是设置 CPU 的最大频率。
像下面这样编辑 /etc/default/cpufrequtils 应该设置 CPU 频率。如果文件不存在,请创建它。
MAX_SPEED="2457600"
MIN_SPEED="1536000"
Run Code Online (Sandbox Code Playgroud)
还要检查同一文件中的以下几行。
ENABLE="true"
GOVERNOR="ondemand" (or userspace)
Run Code Online (Sandbox Code Playgroud)
但是,通过这种方式,我认为无法保证将所有 CPU 内核设置为相同的频率值。我看到有人说下面的方式(第二种方式)将所有 CPU 内核设置为他们想要的值,但不是第一种方式。
调速器和最大频率设置的第二种设置方式
安装 tlp(Linux 电源管理工具)
sudo apt install tlp
Run Code Online (Sandbox Code Playgroud)
安装后,编辑 /etc/default/tlp 如下:
# 选择一个 CPU 频率调节调节器:# on demand、powersave、performance、conservative # 带有 intel_pstate 驱动程序的英特尔酷睿 i 处理器:#powersave、性能 # 重要提示:# 您必须 禁用发行版的调节器设置,否则会
发生冲突。ondemand几乎可以满足所有工作负载,您应该知道#您在做什么!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
Run Code Online (Sandbox Code Playgroud)
注意:请查看以下页面以获取更多信息。
州长列表
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.12/admin-guide/pm/intel_pstate.html