是否在引导时将CPU频率指定为Linux的内核CMD_LINE参数? [英] Specify CPU frequency as a kernel CMD_LINE parameter of Linux on boot?

查看:20
本文介绍了是否在引导时将CPU频率指定为Linux的内核CMD_LINE参数?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我将笔记本电脑的i5CPU换成了i7CPU,这样它就可以运行得更快。 但是因为i7的功率更大了,温度也比以前高了,所以我的笔记本电脑经常死机。所以,我使用cpupower来指定CPU的最高频率,它是有效的。 现在,我的问题是"有没有办法在引导时将CPU频率指定为Linux内核的cmd_line参数?",这样我就可以确保系统稳定而正确地引导了。

顺便说一句,如果新的CPU运行在2.5 GHz的最高频率下,一切都可以,性能比旧的高出一倍。因此,我认为更换CPU是值得的。

非常感谢!

推荐答案


更新-2018-11-25

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

如果选择缩放调控器为intel_pstate;(如果决定使用intel_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)

此属性在https://www.kernel.org/doc/Documentation/cpu-freq/intel-pstate.txt中进行了说明,可能有助于降低较高的CPU频率。

max_perf_pct:限制将由 司机。它以可用性能的百分比表示。

因为P状态是操作状态,并且通过将PN转到P0,频率在增加。因此,将最大P状态限制为最大支持性能级别的百分比可能会很有用。检查此链接: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

关闭onDemand后,可以根据上述配置设置和使用其他伸缩调控器(如用户空间、性能)。

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


首先,我想提供一些关于CPU频率缩放的信息。

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

  • CPU频率核心

  • 伸缩驱动因素

  • 缩放调控器

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

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

缩放调控器实现缩放算法。

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

首先,我认为intel_pstate目前在您的笔记本电脑中用作缩放驱动程序。因此,禁用它可以为我们提供更高级的设置和更多的调控器(intel_pstate有两个调控器,分别是powersaveperformance)。我认为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-cpufreq将作为伸缩驱动启用(因为禁用了intel_pstate)。因此,下一步可以将调控器设置为userspace以按照所需的频率运行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-cpufreq作为伸缩驱动,并将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, 性能保守,采用英特尔_pstate的#英特尔酷睿i处理器 驱动程序:#powersave,performance#重要信息:#您必须 禁用您的分发的调控器设置,否则冲突将#
发生。onDemand对于几乎所有工作负载都足够了,您应该 知道#你在做什么!CPU_SCALING_PROGOR_ON_AC=ONDEMAND
CPU_SCALING_PROGOR_ON_BAT=onDemand

#设置缩放调控器可用的最小/最大频率。# 可能的值在很大程度上取决于您的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/html/v4.14/admin-guide/pm/cpufreq.html

https://www.kernel.org/doc/html/v4.12/admin-guide/pm/intel_pstate.html

这篇关于是否在引导时将CPU频率指定为Linux的内核CMD_LINE参数?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆