启用 Intel SpeedStep 时 Ubuntu 非常慢(CPU 未全速使用)

启用 Intel SpeedStep 时 Ubuntu 非常慢(CPU 未全速使用)

我有一台戴尔笔记本,配备 i7 处理器和 Ubuntu 14.10。当我在 BIOS 中禁用 SpeedStep 时,我的电脑运行非常快,但风扇转得太频繁,电池很快就没电了。

当我激活 SpeedStep 时,Ubuntu 变得非常慢。我尝试将调节器切换到性能,但没有效果。

以下是 cpufreq-info 显示的所有 7 个 CPU 的信息:

analyzing CPU 7:
driver: intel_pstate
CPUs which run at the same hardware frequency: 7
CPUs which need to have their frequency coordinated by software: 7
maximum transition latency: 0.97 ms.
hardware limits: 800 MHz - 3.70 GHz
available cpufreq governors: performance, powersave
current policy: frequency should be within 3.70 GHz and 3.70 GHz.
              The governor "performance" may decide which speed to use
              within this range.
current CPU frequency is 1.17 GHz.

奇怪的是频率从未超过 1.2 GHz。我曾尝试启动 Firefox 或编译一个大项目。

这是与 CPU 相关的输出lshw

 *-cpu
      description: CPU
      product: Intel(R) Core(TM) i7-4800MQ CPU @ 2.70GHz
      vendor: Intel Corp.
      physical id: 43
      bus info: cpu@0
      version: Intel(R) Core(TM) i7-4800MQ CPU @ 2.70GHz
      slot: SOCKET 0
      size: 3581MHz
      capacity: 3581MHz
      width: 64 bits
      clock: 100MHz
      capabilities: x86-64 fpu fpu_exception wp 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 pdpe1gb rdtscp 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 fma cx16 xtpr pdcm pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand lahf_lm abm ida arat epb xsaveopt pln pts dtherm tpr_shadow vnmi flexpriority ept vpid fsgsbase tsc_adjust bmi1 hle avx2 smep bmi2 erms invpcid rtm cpufreq
      configuration: cores=4 enabledcores=4 threads=8

从 Ubuntu 14.04 升级到 14.10 后遇到了这个问题。

那么如何让 Ubuntu 14.10 在需要时全速使用我的 CPU?

更新:禁用后,intel_pstate无论我做什么,所有 CPU 都会以 800 MHz 运行。通过小程序或命令行切换调速器没有效果。

更新:安装后cpufreqd/var/log/syslog循环获取这些消息:

Mar  3 13:00:03 scala cpufreqd: cpufreqd_set_profile     : Couldn't set profile "Performance High" set for cpu0 (2700000-2700000-performance)
Mar  3 13:00:03 scala cpufreqd: cpufreqd_loop            : Cannot set policy, Rule unchanged ("none").

更新: cat /sys/devices/system/cpu/cpu*/cpufreq/bios_limit打印800000所有 CPU 的 (800 MHz)。这个限制从何而来?如何增加它?

答案1

此回答适用于新发现的BIOS限制CPU频率的原因。

请检查电源适配器和电池的状况。它们是否正常工作?电池是否正常充电?笔记本电脑仅靠电池工作正常吗?

通常,当电源出现故障和/或不再识别电源适配器时,Dell BIOS 会强制降低 CPU 频率。

有一种方法可以绕过 /sys/devices/system/cpu/cpu*/cpufreq/bios_limit 的包含,但这只能作为最后的手段,并且必须清楚最低级别的保护已被禁用。所以我们先不要这么做。

答案2

对于 CPU 时钟频率控制,14.04 默认使用 acpi-cpufreq 驱动程序,而 14.10 默认使用 intel_pstate 驱动程序。有报告称您遇到的问题与此类似。

作为测试,请尝试切换回 acpi-cpufreq 驱动程序。保存一份 /etc/default/grub 文件的副本,以防万一:

sudo cp /etc/default/grub /etc/default/grub.original

以 sudo 身份编辑 /etc/default/grub 文件并将此参数添加到 GRUB_CMDLINE_LINUX_DEFAULT 行:

GRUB_CMDLINE_LINUX_DEFAULT="intel_pstate=disable"

如果该行上已经有其他参数,则添加新参数。例如:

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

保存文件后,更新 grub:

sudo update-grub

重新启动计算机。

您还可以检查 thermald 是否正在运行:

sudo service thermald status

如果是,只需进行快速测试,请禁用它(请注意,禁用 thermald 时应监视温度):

sudo service thermald stop

如果您发现在显著负载下 CPU 频率能够增加,那么您的 /etc/thermald/thermal-conf.xml 文件可能有问题。

相关内容