在引导时将CPU频率指定为Linux的内核CMD_行参数?

在引导时将CPU频率指定为Linux的内核CMD_行参数?,linux,kernel,cpu,frequency,Linux,Kernel,Cpu,Frequency,我用i7 CPU替换了笔记本电脑的i5 CPU,这样它可以运行得更快。 但是因为i7的功率更大,温度也比以前更高,我的笔记本经常崩溃。所以,我使用cpupower来指定CPU的最大频率,它可以工作。 现在,我的问题是“有没有办法在引导时将CPU频率指定为linux内核的cmd_line参数?”这样我就可以确保系统已经稳定正确地引导 顺便说一句,如果新的cpu在最多2.5GHz的频率下运行,一切正常,性能是旧cpu的两倍。所以我认为更换我的CPU是值得的 非常感谢 更新-2018-11-25 另

我用i7 CPU替换了笔记本电脑的i5 CPU,这样它可以运行得更快。 但是因为i7的功率更大,温度也比以前更高,我的笔记本经常崩溃。所以,我使用cpupower来指定CPU的最大频率,它可以工作。 现在,我的问题是“有没有办法在引导时将CPU频率指定为linux内核的cmd_line参数?”这样我就可以确保系统已经稳定正确地引导

顺便说一句,如果新的cpu在最多2.5GHz的频率下运行,一切正常,性能是旧cpu的两倍。所以我认为更换我的CPU是值得的

非常感谢


更新-2018-11-25

另外,我想提到的是,下面有一些命令可以在不使用任何工具的情况下使用CpuFreq子系统(如用于实现相同目的的cpufrequtils)。有时,这些工具缺乏功能,或者根本不能像我们所希望的那样工作。因为CpuFreq core在/sys/devices/system/cpu/下创建了一个sysfs目录,所以一些属性可以作为读写属性在内核级别进行更改。这些属性更改称为策略,因为CpuFreq在sysfs中有一个策略接口。下面的命令应该在引导时工作,并且在引导期间是持久的

如果缩放调控器被选择为英特尔&pstate;(如果决定使用“英特尔&pstate”,本部分可能有助于避免更高的频率)

此外,由于想要阻止更高的频率,turbo可能会被禁用

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)
此属性的解释如下所示,可能有助于降低较高的CPU频率

echo "1" | sudo tee /sys/devices/system/cpu/intel_pstate/no_turbo
max_perf_pct:限制将由 司机。它以可用性能的百分比表示

因为p态是工作态,通过Pn到P0,频率在增加。因此,将最大P状态限制为支持的最大性能级别的百分比可能是有用的。检查此链接:

此外,在“英特尔即时通讯”中,CPU共享相同的属性。当使用Intelpstate作为缩放调节器时,可以通过添加以下内核参数来使用每CPU性能限制作为cpufreq属性(例如缩放_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
更多信息请参见此处:

禁用ondemand后,可以设置其他缩放调控器(如用户空间、性能),并根据上述配置使用它们

这些都是基本的命令(包括下面和上面的部分),它们应该有助于解决CPU频率缩放问题,因为我也想提供这些信息供将来参考


首先,我想给出一些关于CPU频率调整的信息

有三个术语与此过程相关(它们是称为“CPU性能扩展”的子系统的层),应该对它们进行基本审查和讨论,以确保正确理解所有内容

  • CPUFreq核

  • 缩放驱动器

  • 比例调节器

CPUFreq核心是一个基本框架,包含支持此功能的所有平台的通用代码基础结构

CPU频率驱动程序更改由缩放调控器管理的CPU p状态,并与硬件通信。 (P状态意味着它们是可操作的,而C状态则是除C0状态外的空闲状态。C0状态也是忙碌和活动状态。)

缩放调控器实现缩放算法

顺便说一下,CPU性能扩展是一个很深的话题,有很多事情需要考虑。基本上,根据上面的信息,下面的命令应该满足您的需要

首先,我认为英特尔<;英特尔>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>。因此,禁用它可能会为我们提供更高级的设置和更多的调控器(intel_pstate有两个调控器,分别为省电性能)。我认为powersave是intel®的默认管理器

sudo vi /etc/default/grub
将Intelpstate=disable添加到GRUB_CMDLINE_LINUX_默认参数

GRUB_CMDLINE_LINUX_DEFAULT="intel_pstate=disable"
添加参数后,执行以下命令

modprobe acpi-cpufreq

sudo update-grub
您可以通过下面的命令在引导时检查内核参数

cat /proc/cmdline
通过这种方式,acpi cpufreq将作为缩放驱动程序启用(因为禁用了“英特尔&pstate”)。因此,下一步可以将调控器设置为userspace,以按所需频率运行CPU,或者将其作为默认值(ondemand应该是acpi cpufreq的默认设置)

调速器和最大频率设置的第一种方式

如果要更改缩放调控器(例如,更改为用户空间):

在这些步骤之后,我们应该将acpi cpufreq作为缩放驱动程序,将ondemand(如果您没有更改调控器)作为缩放调控器。所以,最后一件事似乎是设置CPU的最大频率

编辑下面的/etc/default/cpufrequtils应该设置CPU频率。如果文件不存在,请创建它

MAX_SPEED="2457600"
MIN_SPEED="1536000"
同时检查同一文件中的以下行

ENABLE="true"
GOVERNOR="ondemand" (or userspace)
但是,通过这种方式,我认为无法保证将所有CPU核心设置为相同的频率值。我看到一些人说下面的方法(第二种方法)将所有CPU核心设置为他们想要的值,但不是第一种方法

第二种方式设置调速器和最大频率设置

安装tlp(Linux电源管理工具)

安装后,编辑/etc/default/tlp,如下所示:

#硒
sudo apt install tlp
cpufreq-info