代码之家  ›  专栏  ›  技术社区  ›  Leon

指定CPU频率作为Linux引导时的内核命令行参数?

  •  1
  • Leon  · 技术社区  · 7 年前

    但由于i7的功率更大,温度也比以前高,我的笔记本电脑经常死机。所以,我用cpupower来指定CPU的最大频率,它可以工作。 现在,我的问题是“有没有办法在引导时将CPU频率指定为linux内核的cmd\u行参数?”,这样我就可以确保系统已经稳定正确地引导。

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

    2 回复  |  直到 7 年前
        1
  •  6
  •   Erdem Savasci    7 年前

    更新-2018-11-25

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

    ; (如果决定使用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 并可能有助于降低更高的CPU频率。

    max\u perf\u 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=per_cpu_perf_limits
    

    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等

    sudo /usr/sbin/update-rc.d ondemand disable
    

    https://help.ubuntu.com/community/UbuntuStudio/Setting_CPU_Governor

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

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


    有三个术语与这个过程有关(它们是子系统的一个层次,称为“CPU性能伸缩”),应该对它们进行基本的检查和讨论,以确保所有内容都得到正确的理解。

    • CPUFreq核心

    • 缩放驱动程序

    • 比例调节器

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

    (P-状态意味着它们是可操作的,与C-状态相反,C-状态是除C0状态之外的空闲状态。C0状态也是忙碌和活动状态。)

    首先,我认为 目前在你的笔记本电脑中用作缩放驱动程序。因此,禁用它可能会为我们提供更高级的设置和更多的调控器(intel有两个不同的调控器) 省电 演出 ). 我认为powersave是intel\pstate的默认调控器。

    sudo vi /etc/default/grub
    

    将intel\u pstate=disable添加到GRUB\u CMDLINE\u LINUX\u默认参数。

    GRUB_CMDLINE_LINUX_DEFAULT="intel_pstate=disable"
    

    modprobe acpi-cpufreq
    
    sudo update-grub
    

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

    cat /proc/cmdline
    

    将作为缩放驱动程序启用(因为禁用“英特尔&u pstate”)。所以,下一件事就是把州长设为 用户空间 按所需频率运行CPU,或将其设为默认频率( 按需 应该是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公司 作为缩放驱动程序和 按需

    像下面这样编辑/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,如下所示:

    性能,保守的#Intel Core i处理器与Intel#U pstate 必须
    几乎所有 工作量,你应该 知道你在做什么!CPU\u缩放\u调节器\u开启\u AC=ondemand
    CPU\u SCALING\u GOVERNOR\u ON\u BAT=ondemand

    #设置缩放调节器可用的最小/最大频率# 参见#tlp stat output,章节“+++Processor”。 CPU\u缩放\u最小\u频率\u AC=0
    CPU\u缩放\u最大\u频率\u AC=0
    CPU\u缩放\u MIN\u FREQ\u ON \u BAT=1536000
    CPU最大频率=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

        2
  •  0
  •   Leon    5 年前

    最终我有时间回答这个问题,因为我正忙着做其他事情。 我尝试了以上所有的解决方案,并选择了“tlp+lm传感器+psensor”。 以下是我的看法:

    1. CPU电源 是一个简单但功能相对较差的工具,它只能设置CPU和调速器的最大/最小频率。
    2. CpufRequitils公司 与cpupower基本相同,只是它基于 acpi驱动程序,而不是Intel genuin驱动程序。我猜是个情报员 对于Intel CPU来说,支持p\ U状态的驱动程序应该是更好的选择。
    3. tlp公司 是我最后的选择,它有更多的功能来监视/控制 CPU的温度和频率,以及更多可配置选项。

    此外,我还安装了lm传感器和psensor。前者可以作为查询温度/频率/风扇转速的驱动程序,后者是显示上述信息的GUI面板。 但是“确保CPU在启动时稳定运行”的解决方案还没有找到。 以上都是开机后开始的,是吗?

    再次感谢!

    推荐文章