将 CPU 频率指定为 Linux 启动时的内核 CMD_LINE 参数?

2024-04-07

我将笔记本电脑的i5 CPU更换为i7 CPU,这样它可以运行得更快。 但由于i7的功率更大,温度也比以前更高,所以我的笔记本经常死机。所以,我使用cpupower来指定CPU的最大频率,它起作用了。 现在,我的问题是“有没有办法在启动时将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

之后,以下命令可能会很有用。

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 性能扩展”的子系统的各层),应该对它们进行基本审查和讨论,以确保正确理解所有内容。

  • 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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

将 CPU 频率指定为 Linux 启动时的内核 CMD_LINE 参数? 的相关文章

随机推荐

  • 如何向 jfreechart 创建的图表添加缩放功能

    我使用 jfree 绘制了 XY 图表 现在我想为其添加缩放功能 这必须使用图表底部的滑块来完成 如何添加 Windows 照片查看器中提供的缩放功能 另外 当用户将鼠标悬停在绘制的线上时 我想将图表的当前 Y 值显示为工具提示 我没有得到
  • redirect_uri 不属于应用程序

    类似的问题和答案都没有解决我的问题 我有两个 Facebook 应用程序 一个是另一个的测试版本 因此它们几乎相同 我测试时没有任何问题 但在实时应用程序上 我收到 redirect uri 不属于应用程序 错误 这个申请就是一个很好的例子
  • 矢量化和尴尬并行之间有什么关系?

    这个问题说明了一切 在我看来 矢量化与令人尴尬的并行问题密切相关 换句话说 所有可矢量化的程序都必须是极其并行的程序 它是否正确 对令人尴尬的并行性的快速总结 一个代码是尴尬地平行如果代码可以毫不费力地并行化 特别是处理数据依赖性 请注意
  • 如何将焦点设置到 NSButton?

    I m writing a small menubar application for OS X Yosemite When clicking on the menubar icon a popover appears with a num
  • 类模板可以在没有成员的情况下实例化吗?

    The 维基百科文章 http en wikipedia org wiki Template metaprogramming说 实例化类模板不会导致其成员定义被实例化 我无法想象 C 中的任何类被实例化 无论是否从模板中 类成员也没有被实例
  • 将表单值附加到 Go 中的 GET/POST 请求

    我想定义一个http Client自动将表单值附加到所有 GET POST 请求 我天真地尝试实施http RoundTripper从另一个库复制 粘贴时使用此技术来修改每个请求的标头 type Transport struct Trans
  • 如何在 IntelliJ IDEA 中自动完成 lambda?

    I m using IntelliJ IDEA 13 with Java 8 and wonder how to autocomplete lambdas Before Java 8 I used anonymous inner class
  • 循环遍历模型并在视图中为每个属性创建文本框

    我有一个具有 5 6 个属性的模型 是否可以循环遍历模型中的所有属性 公共属性 并在每次迭代的视图中创建一个文本框 而不是繁琐地编写一行代码来在视图中创建文本框 Thanks 是的 你可以使用 Html EditorForModel 或者
  • Emacs:持续突出显示一个区域

    Emacs 扩展markerpen el 链接文本 http www emacswiki org emacs MarkerPens 允许您突出显示缓冲区中的任意区域 使用此扩展 一旦您终止缓冲区 添加的突出显示就会丢失 然而 如果能够以 持
  • 是否可以向我没有源代码的类添加断点?

    我想在 Eclipse 中的类中添加断点 但我没有它的源代码 是否可以在其中添加断点 就我而言 我实际上只需要知道何时调用方法 附带说明 有人有 j2ee api 1 3 jar 的源代码吗 如果打开大纲视图 您可以选择一种方法 右键单击并
  • IntelliJ 社区找不到 Web 应用程序 Artifact 来生成 WAR

    我在用着IntelliJ IDEA 社区版生成一个war来自 Maven 项目的文件 当谈到生成这个战争文件时 我在工件中找不到战争选项 我尝试过 1 前往文件 gt 项目结构 gt 工件 gt 类型 但是没有提到WAR 2 右键单击项目模
  • 绑定 Span 的内容

    我有一个显示文本的窗口 文本有两部分 第一部分是固定的 而第二部分需要是在窗口上声明的 DependencyProperty 的内容 我考虑使用包含两个 Span 的 TextBlock 第一个包含固定内容 第二个包含可变内容 但我在 Sp
  • SQL Server 2008存储过程结果作为列默认值

    首先 谢谢各位 当我什至找不到词语来解释我到底想做什么时 你总是知道如何指导我 我的几个表上的列的默认值需要等于其他表中其他列上的一些复杂计算的结果 我的第一个想法是简单地让列默认值等于存储过程的结果 我还会从调用表的列中提取一个或多个参数
  • 在 CakePHP 应用程序中启用 CORS

    我正在尝试为 CakePHP 中内置的 API 启用 CORS 以便可以通过 AppController 中的以下内容访问所有请求 public function beforeFilter header Access Control All
  • 尽管文件可访问,但“Lighthouse 无法下载 robots.txt 文件”

    我有一个NodeJS NextJS应用程序运行于http www schandilla com http www schandillia com 该项目有一个机器人 txt文件可访问于http www schandillia com rob
  • Spark 与 scala [关闭]

    Closed 这个问题需要调试细节 help minimal reproducible example 目前不接受答案 考虑 2 个数据框holiday df and everyday df有 3 列如下 假期 df 5 条记录 Count
  • 如何从sparkContext读取特定行

    您好 我正在尝试使用 Spark 从文本文件中读取特定行 SparkConf conf new SparkConf setAppName appName setMaster master sc new JavaSparkContext co
  • 如何允许仅从 VPC 内的 EC2 实例调用 AWS Lambda 函数

    我正在努力理解如何从 VPC 内的 EC2 实例轻松调用 lambda 函数 我认为我有一个很常见的问题 但奇怪的是我没有找到任何特定于这个 模式 的东西 我在 EC2 实例中有一个 Python 应用程序 我想使用 Lambda 函数并行
  • 通过类 AbstractAnnotationConfigDispatcherServletInitializer 设置“活动配置文件”?

    在扩展类 AbstractAnnotationConfigDispatcherServletInitializer 时 如何设置 活动配置文件 属性 根据您要设置的上下文的配置文件 一种方法是覆盖 AbstractAnnotationCon
  • 将 CPU 频率指定为 Linux 启动时的内核 CMD_LINE 参数?

    我将笔记本电脑的i5 CPU更换为i7 CPU 这样它可以运行得更快 但由于i7的功率更大 温度也比以前更高 所以我的笔记本经常死机 所以 我使用cpupower来指定CPU的最大频率 它起作用了 现在 我的问题是 有没有办法在启动时将CP