插入/拔出电源时自动在性能和省电模式之间切换

插入/拔出电源时自动在性能和省电模式之间切换

最近我一直在研究我的笔记本电脑为什么这么慢。我发现它运行在 ~600Mhz 左右,无论是否插入电源。请注意,它是 Intel i5-2540M,名义上运行在 2.60GHz。所以我觉得一直以 ~600Mhz 运行非常奇怪,即使它加载了一些计算。这甚至影响了网页浏览,所以这很烦人。

我进一步调查了这个问题,结果发现时钟与所谓的 CPU 调节模式有关。在我的系统上,powersave无论电源是否插入,它始终设置为。我认为performance在插入电源时应该将其切换到模式(或如果可能的话,切换到两者之间的某个模式)。请注意,手动切换到performance模式可以解决问题 - 笔记本电脑的响应速度会更快。

Ubuntu 是否支持这种 CPU 调节器模式的自动切换?是否有任何我应该安装的软件包或需要编辑的配置文件?

我知道这个pm-utils软件包提供了一些与电源相关的通知,所以我可以将其用作一个简单脚本的基础,该脚本可以完全自动切换 CPU 调节器。但我可能还不知道这种方法的一些限制或陷阱。所以我想知道这是否是正确的方法。

提前致谢!

顺便说一下,我的设置是 Ubuntu 14.10

$ uname -a
Linux aromanek-laptop 3.16.0-34-generic #47-Ubuntu SMP Fri Apr 10 18:02:58 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux

$ cat /proc/cpuinfo 
processor   : 0
vendor_id   : GenuineIntel
cpu family  : 6
model       : 42
model name  : Intel(R) Core(TM) i5-2540M CPU @ 2.60GHz
stepping    : 7
microcode   : 0x12
cpu MHz     : 633.242
cache size  : 3072 KB
physical id : 0
siblings    : 4
core id     : 0
cpu cores   : 2
apicid      : 0
initial apicid  : 0
fpu     : yes
fpu_exception   : yes
cpuid level : 13
wp      : yes
flags       : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx rdtscp lm constant_tsc arch_perfmon pebs bts rep_good nopl xtopology nonstop_tsc aperfmperf eagerfpu pni pclmulqdq dtes64 monitor ds_cpl vmx smx est tm2 ssse3 cx16 xtpr pdcm pcid sse4_1 sse4_2 x2apic popcnt tsc_deadline_timer aes xsave avx lahf_lm ida arat epb xsaveopt pln pts dtherm tpr_shadow vnmi flexpriority ept vpid
bogomips    : 5188.00
clflush size    : 64
cache_alignment : 64
address sizes   : 36 bits physical, 48 bits virtual
power management:

更新:

$ cat /sys/devices/system/cpu/cpu*/cpufreq/scaling_driver
intel_pstate
intel_pstate
intel_pstate
intel_pstate

$ sudo cat /sys/kernel/debug/pstate_snb/d_gain_pct
0
$ sudo cat /sys/kernel/debug/pstate_snb/p_gain_pct
20
$ sudo cat /sys/kernel/debug/pstate_snb/i_gain_pct
0

答案1

您应该尝试强制使用 acpi-cpufreq 缩放驱动程序。为此,请编辑(以 sudo 方式)文件/etc/default/grub并更改“GRUB_CMDLINE_LINUX_DEFAULT”行,添加以下内容(我的示例还包含一些之前已有的内容):

GRUB_CMDLINE_LINUX_DEFAULT="ipv6.disable=1 intel_pstate=disable crashkernel=384M-:128M"

然后运行:

sudo update-grub

然后重新启动。您应该发现您的 Ubuntu 系统将ondemand在启动后约 1 分钟默认使用该调节器。

我有兴趣了解为什么您在使用 intel-pstate 驱动程序时似乎遇到了问题。

要回答您的实际问题,请查看laptop-mode-tools 软件包并且它配置

答案2

我的笔记本电脑似乎没有配备“按需”调度程序,原因我也不清楚,但我的解决方案是根据交流电源的状态在省电和性能之间切换。我添加了一个 udev 规则,内容如下:

/etc/udev/rules.d/50-scaling-govoner.rules

    SUBSYSTEM=="power_supply", ATTR{type}=="Mains", ATTR{online}=="1", RUN+="/usr/bin/cpufreq-set -g performance -r"
    SUBSYSTEM=="power_supply", ATTR{type}=="Mains", ATTR{online}=="0", RUN+="/usr/bin/cpufreq-set -g powersave -r"

Br,马丁

相关内容