如何在性能模式与省电模式之间自动切换?

如何在性能模式与省电模式之间自动切换?

我在 Thinkpad T430(Core i7 双核,标称 2.9 GHz 时钟,8 GB RAM,9 芯内置电池和 9 芯 Slice 电池)上运行双启动 Ubuntu MATE 16.04.3 LTS 和 Windows。我的电池寿命非常好,充满电后正常使用时间长达 10 小时。

我最近在使用交流电源玩游戏(Kerbal Space Program)时遇到了性能问题,我发现电脑一直处于省电模式,导致 CPU 的时钟速度低于我不需要大幅节省能源时所需的速度。这可能是在我购买扩展电池之前发生的,当时我正试图用原装 6 芯电池大幅延长电池寿命。

我可以使用系统栏中安装的 CPU 频率缩放监视器小部件(分别控制真实核心和虚拟核心的时钟管理)轻松将 CPU 切换回性能模式。我检查了系统设置的电源窗口,没有看到任何方法可以告诉操作系统自动在省电模式(使用电池供电时我想要的)和性能模式(使用交流电时我想要的)之间切换。

这个类似的问题提到 Ubuntu 14.10 的寿命终止可能不适合我的硬件。我不知道我是否有 Sandy Bridge CPU。

答案1

  1. 使用 sudo 创建文件 /opt/system_cupmode.sh

  2. 运行以下命令赋予其所需的权限

    sudo chmod +x /opt/system_cupmode.sh
    
  3. 打开文件并添加以下代码:

    #!/bin/bash
    # This script will switch cpu mode to performance on charging automatically
    # Author: @saleh_awal
    
    tFile=/sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
    if on_ac_power; then
      # charging on
      if grep -qi "powersave" $tFile; then
        echo performance | tee /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
      else
        echo "already updated to performance"
      fi
    else
      # charging off
      if grep -qi "performance" $tFile; then
        echo powersave | tee /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor
      else
        echo "already updated to powersave"
      fi
    fi
    
  4. 向您的 root 用户添加一个 cronjob,如下所示:

    sudo crontab -e
    

    然后在文件底部添加此行,每 10 秒运行一次代码

    */10 * * * * /opt/system_cupmode.sh
    

答案2

我做了一些研究。其结果如下。

我在用着常春藤桥 i7-3537U使用相同的小部件在 MATE 上。我的另一个 CPU 是Haswell i7-4790根据 sysfs,他们只有两个调控器

$ cat /sys/devices/system/cpu/cpufreq/policy0/scaling_available_g‌​overnors
performance powersave

它使用新的英特尔_pstate司机。

较旧的 CPU,例如我的克拉克斯菲尔德 i7-740QM由司机驾驶acpi-cpufreq,有5个调速器(conservative ondemand userspace powersave performance)。

cpufreq-info -d可以通过(从包中)检查当前驱动程序cpufrequtils

您可以使用 检查您的 CPU lscpu。我认为您可以使用i7zi7z_GUI(可安装sudo apt-get install i7z i7z-gui)或powertopsudo apt-get install powertop,请参阅频率统计标签)。

其他主题解释了如何关闭intel_pstate驱动程序。我尝试过使用 Haswell 和 Ivy Bridge CPU,但我得到了非常接近的结果英特尔的 LINPACK 测试

我可以得出以下结论:

  • intel_pstate 节能州长相当于旧的acpi-cpufreq 一经请求一;
  • 看起来你的 CPU 已经达到了最佳性能。

相关内容