CPU Turbo boost:修改温度限制在14.04以下

lis*_*szi 4 cpu-load intel cpufreq temperature turbo-boost

我安装了 kubuntu 14.04,CPU turbo 频率有问题。我已经阅读了很多关于它的内容,但找不到正确的答案。

我的联想 Y580 笔记本中有一个 i7-3630QM CPU @ 2.40GHz 和 3.20GHz Turbo。如果我将 CPU 置于满载状态(在 8 个线程的搅拌机中进行渲染),所有内核的频率都会跃升至 3.2GHz 左右,但是几秒钟后,当温度升高时,频率会降低至 2.4GHz,并保持不变在渲染过程中,(风扇不以最大速度运行)。

当我使用 ubuntu 12.10 时没有出现这个问题,但它在 13.10 和 14.04 中出现。

我的笔记本散热器非常好,所以全速涡轮增压没有过热问题(在 ubuntu 12.10 中,3.2GHz 下的 CPU 温度为 85-90°C),所以我想全速使用它。我如何在 ubuntu 14.04 中以 3.2GHz 的全速使用带有涡轮增压的 CPU,而没有这个(温度?)限制?

(与terdon讨论后)我认为问题在于cpu freq在风扇响应高温之前按比例降低。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                                                                      
...
Run Code Online (Sandbox Code Playgroud)

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        
...
Run Code Online (Sandbox Code Playgroud)

预先感谢您的回答。

ter*_*don 5

这不是错误,这是一个功能!检查您的温度,CPU 速度降低的唯一原因是您过热。看看你显示的第一个输出,你的一个内核在 92°C 下运行!一开始就很热,而且在您的时钟速度降低之前它可能会变得更高。

您可以通过运行sensors来检查 CPU 可以处理的最高温度。例如,对于我的英特尔 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)
Run Code Online (Sandbox Code Playgroud)

因此,在我的机器上,95.0°C 被认为是高温度,而 105°C 是机器将关闭的临界温度。您的规格可能略有不同,但 92.0°C 绝对高。

现在,您可以强制您的 CPU 保持相同的时钟速度。这是由 CPU 调控器控制的。您可能已将其设置为ondemand,但可以使用以下选项:

  • 性能使 CPU 保持在尽可能高的频率
  • Powersave使 CPU 保持在尽可能低的频率
  • 用户空间将可用频率信息导出到用户级别(通过 /sys 文件系统)并允许用户空间控制 CPU 频率
  • On demand根据 CPU 使用率调整 CPU 频率(就像用户空间频率调整守护进程一样,但在内核中)
  • 保守的行为类似于按需但逐步增加频率

例如,要将您的调控器更改为“性能”,请运行以下命令:

echo "performance" | sudo tee /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
Run Code Online (Sandbox Code Playgroud)

但是,可能的结果只是在达到高温时您的计算机将关闭。它也可能仍然缩小规模,我不确定安全功能是如何实现的。无论如何,重点是您不想这样做,因为它会严重损害您的硬件

您的计算机不会让您超过特定温度并且您不想搞砸的原因有很多。我不知道有什么方法可以实际禁用温度限制,如果我这样做了我也不会告诉你。有更简单的方法,但禁用温度安全限制无疑是破坏计算机的好方法。


lis*_*szi 5

经过长时间的搜索,我在 tis 页面上找到了我的问题的答案:http : //www.webupd8.org/2014/04/prevent-your-laptop-from-overheating.html

旧的acpi-cpufreq不能很好地控制涡轮增压,但intel_pstate驾驶员thermald可以。我已经启用intel_pstate并安装了thermald. 现在 cpu 可以在 turbo boost 模式下运行,几乎连续地在 3.2GHz 上运行。这意味着在 Blender 中渲染期间大约有 25-30% 的额外性能。

不幸的是,这也意味着更多的热量,所以我的 CPU 核心温度在 90-100°C 左右移动,有时会自行调节。所以 tredon 你是对的,我应该清洁风扇。:)

在 Intel 的页面上,105 °C 是我的 CPU 的最高结温,在它上面激活了热节流,所以我不必担心 CPU 过热。

不幸的是,我找不到任何有用的示例来配置和使用thermald,所以我保留了默认选项,但正如我所读到的那样,它对冷却有很大帮助。