gpt4 book ai didi

linux - 将CPU频率指定为引导时Linux的内核CMD_LINE参数?

转载 作者:行者123 更新时间:2023-12-01 22:15:40 25 4
gpt4 key购买 nike

我将笔记本电脑的i5 CPU替换为i7 CPU,以使其运行速度更快。
但是由于i7的功能更大,并且温度也比以前更高,所以笔记本电脑经常崩溃。因此,我使用cpupower来指定CPU的最大频率,它可以正常工作。
现在,我的问题是“在启动时是否可以将CPU频率指定为linux内核的cmd_line参数?”,因此,我可以确保系统已稳定且正确地启动。

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

多谢!

最佳答案

更新-2018-11-25

另外,我想提及的是,以下命令不使用任何工具即可使用CpuFreq子系统(如用于实现相同目的的cpufrequtils)。有时,这些工具缺少功能,或者根本无法按我们期望的那样工作。因为CpuFreq核心在/sys/devices/system/cpu/下创建了sysfs目录,所以某些属性可以读写的形式在内核级别进行更改。这些属性更改称为策略,因为CpuFreq在sysfs中具有策略接口(interface)。以下命令应在引导时起作用,并在引导之间保持不变。

如果选择了比例调节器作为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: Limits the maximum P-State that will be requested by the driver. It states it as a percentage of the available performance.



因为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

在禁用按需之后,可以通过考虑上述配置来设置和使用其他缩放调节器(如用户空间,性能)。

这些都是基本命令(上下两部分),它们应该有助于解决CPU频率缩放问题,因为我也想提供这些信息以供将来引用。

首先,我想提供一些有关CPU Frequency Scaling的信息。

三个术语与此过程相关(它们是子系统的各个层,称为“CPU性能缩放”),应对其进行基本审查和讨论,以确保正确理解所有内容。
  • CPUFreq核心
  • 缩放驱动程序
  • 标度调节器

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

    CPU频率驱动器更改由比例调节器管理的CPU P状态,并与硬件通信。
    (与C状态相反,P状态表示它们是可操作的,C状态是除C0状态之外的空闲状态。C0状态也处于忙碌和 Activity 状态。)

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

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

    首先,我认为 intel_pstate 现在已在笔记本电脑中用作缩放驱动程序。因此,禁用它可以为我们提供更高级的设置和更多的调控器(intel_pstate有两个调控器,分别为 powersave performance )。我认为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)。因此,接下来的事情是将调节器设置为 用户空间以按所需的频率运行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:

    # Select a CPU frequency scaling governor: # ondemand, powersave, performance, conservative # Intel Core i processor with intel_pstate driver: # powersave, performance # Important: # You must disable your distribution's governor settings or conflicts will #
    occur. ondemand is sufficient for almost all workloads, you should know # what you're doing! CPU_SCALING_GOVERNOR_ON_AC=ondemand
    CPU_SCALING_GOVERNOR_ON_BAT=ondemand

    # Set the min/max frequency available for the scaling governor. # Possible values strongly depend on your CPU. For available frequencies see # tlp-stat output, Section "+++ Processor". 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

    关于linux - 将CPU频率指定为引导时Linux的内核CMD_LINE参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53349933/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com