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