我安装了 kubuntu 14.04,但 CPU 睿频出现了一些问题。我阅读了很多相关资料,但找不到正确的答案。
我的联想 Y580 笔记本中有一个 i7-3630QM CPU @ 2.40GHz,带有 3.20GHz 涡轮增压。如果我让 CPU 满负荷运行(在 8 个线程的 Blender 中进行渲染),所有核心的频率都会跳升到 3.2GHz 左右,但几秒钟后,当温度升高时,频率会降至 2.4GHz,并在渲染期间保持在该频率(风扇不会以最大速度运转)。
当我使用 ubuntu 12.10 时没有出现此问题,但在 13.10 和 14.04 中出现了此问题。
我的笔记本电脑的散热器非常好,因此全速涡轮增压不会出现过热问题(在 ubuntu 12.10 中,CPU 温度在 3.2GHz 时为 85-90°C),所以我想全速使用它。如何在 ubuntu 14.04 中以 3.2GHz 的速度使用涡轮增压 CPU,而不受此(温度?)限制?
(与 terdon 讨论后)我认为问题在于 CPU 频率在风扇能够响应高温之前就被降低了。CPU 从 3.2GHz 降到 2.4GHz 后,风扇会旋转一会儿,但由于 cpufreq 已经降低,它产生的热量较少,因此风扇的转速会回落。如果 CPU 冷却后,频率再次升至 3.2GHz,但保持在 2.4GHz,那就没问题了。
一些测量结果:
渲染刚开始时,i7z 程序的输出:
Cpu speed from cpuinfo 2394.00Mhz
cpuinfo might be wrong if cpufreq is enabled. To guess correctly try estimating via tsc
Linux's inbuilt cpu_khz code emulated now
True Frequency (without accounting Turbo) 2394 MHz
CPU Multiplier 24x || Bus clock frequency (BCLK) 99.75 MHz
Socket [0] - [physical cores=4, logical cores=8, max online cores ever=4]
TURBO ENABLED on 4 Cores, Hyper Threading ON
Max Frequency without considering Turbo 2493.75 MHz (99.75 x [25])
Max TURBO Multiplier (if Enabled) with 1/2/3/4 Cores is 34x/33x/32x/32x
Real Current Frequency 3192.01 MHz [99.75 x 32.00] (Max of below)
Core [core-id] :Actual Freq (Mult.) C0% Halt(C1)% C3 % C6 % C7 % Temp
Core 1 [0]: 3191.98 (32.00x) 100 0 0 0 0 83
Core 2 [2]: 3192.01 (32.00x) 99.8 0 0 0 1 92
Core 3 [4]: 3192.00 (32.00x) 100 0 0 0 0 88
Core 4 [6]: 3192.00 (32.00x) 100 0 0 0 0 76
...
5-10秒后(同样满载):
Cpu speed from cpuinfo 2394.00Mhz
cpuinfo might be wrong if cpufreq is enabled. To guess correctly try estimating via tsc
Linux's inbuilt cpu_khz code emulated now
True Frequency (without accounting Turbo) 2394 MHz
CPU Multiplier 24x || Bus clock frequency (BCLK) 99.75 MHz
Socket [0] - [physical cores=4, logical cores=8, max online cores ever=4]
TURBO ENABLED on 4 Cores, Hyper Threading ON
Max Frequency without considering Turbo 2493.75 MHz (99.75 x [25])
Max TURBO Multiplier (if Enabled) with 1/2/3/4 Cores is 34x/33x/32x/32x
Real Current Frequency 2462.52 MHz [99.75 x 24.69] (Max of below)
Core [core-id] :Actual Freq (Mult.) C0% Halt(C1)% C3 % C6 % C7 % Temp
Core 1 [0]: 2394.01 (24.00x) 100 0 0 0 0 65
Core 2 [2]: 2394.00 (24.00x) 100 0 0 0 0 74
Core 3 [4]: 2462.43 (24.69x) 100 0 0 0 0 71
Core 4 [6]: 2462.52 (24.69x) 99.9 0 0 0 0 61
...
提前感谢您的回答。
答案1
那不是错误,而是一项功能!检查您的温度,CPU 速度降低的唯一原因是您过热。查看您显示的第一个输出,您的一个核心以 92°C 运行!这一开始就相当热,而且在您的时钟速度降低之前,温度可能更高。
您可以通过以下方式检查 CPU 可以处理的最高温度跑步sensors
。例如,对于我的 Intel i7:
$ sensors
coretemp-isa-0000
Adapter: ISA adapter
Core 0: +77.0°C (high = +95.0°C, crit = +105.0°C)
Core 2: +79.0°C (high = +95.0°C, crit = +105.0°C)
因此,在我的机器上,95.0°C 被认为是高温,而 105°C 是机器关闭的临界温度。您的规格可能略有不同,但 92.0°C 绝对算高。
现在轮到你能强制您的 CPU 保持相同的时钟速度。这由 CPU 调节器控制。您可能已将其设置为ondemand
,但以下选项可用:
- 表现使 CPU 保持最高频率
- 节能将 CPU 保持在尽可能低的频率
- 用户空间将可用的频率信息导出到用户级(通过 /sys 文件系统),并允许用户空间控制 CPU 频率
- 一经请求根据 CPU 使用率调整 CPU 频率(类似用户空间频率调整守护进程,但在内核中)
- 保守的作用类似于按需,但逐步增加频率
例如,要将您的调节器更改为“性能”,请运行以下命令:
echo "performance" | sudo tee /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
然而,可能的结果只是你的电脑在达到高温时会关机。它也可能仍然会降低温度,我不确定安全功能是如何实现的。无论如何,重点是你不想这样做,因为它会严重损害你的硬件。
您的计算机不允许超过特定温度是有充分理由的,您不想破坏这一点。我不知道有什么方法可以真正禁用温度限制,即使我知道也不会告诉您。有更简单的方法,但禁用温度安全限制肯定是毁掉您的计算机的好方法。
答案2
经过长时间的搜索,我在这个页面上找到了我的问题的答案: http://www.webupd8.org/2014/04/prevent-your-laptop-from-overheating.html
旧版acpi-cpufreq
无法很好地控制涡轮增压,但intel_pstate
驱动程序和thermald
可以。我已经启用intel_pstate
并安装了thermald
。现在 CPU 可以在涡轮增压模式下运行,几乎连续以 3.2GHz 运行。这意味着在 Blender 中渲染时性能增加约 25-30%。
不幸的是,这也意味着更多的热量,所以我的 CPU 核心温度在 90-100°C 左右,有时会自动节流。所以 tredon 你说得对,我应该清洁风扇。:)
在英特尔页面上,105°C 是我的 CPU 的最大结温,超过此温度时会激活热节流,因此我不必担心 CPU 过热。
不幸的是,我找不到任何有用的例子来配置和使用thermald
,所以我保留默认选项,但正如我所读到的,它可以在冷却方面提供很大帮助。