Ubuntu lm-sensors:英特尔酷睿 i7 上的瞬时温度大幅跃升

Ubuntu lm-sensors: large instantaneous temperature jumps on Intel core i7

我正在尝试用 CPU 核心温度做一些数据科学。我需要监控 CPU 核心温度如何随时间变化。我正在尝试使用两种工具来执行此操作:

  1. 用于测量核心和封装温度的流明传感器
  2. 产生负荷的压力

我看到的问题是,一旦压力开始,温度就会飙升,而一旦停止,温度就会直线下降。这不可能是对的!

这里有一些 shell 脚本和输出来演示问题:

脚本:

sensors | grep Core
stress -c 8 -t 1
sensors | grep Core
str=$'Sleeping for 1s \n' 
read -t 1 -p "$str"
sensors | grep Core

输出:

Core 0:        +49.0°C  (high = +100.0°C, crit = +100.0°C)
Core 1:        +51.0°C  (high = +100.0°C, crit = +100.0°C)
Core 2:        +49.0°C  (high = +100.0°C, crit = +100.0°C)
Core 3:        +47.0°C  (high = +100.0°C, crit = +100.0°C)
stress: info: [6956] dispatching hogs: 8 cpu, 0 io, 0 vm, 0 hdd
stress: info: [6956] successful run completed in 1s
Core 0:        +81.0°C  (high = +100.0°C, crit = +100.0°C)
Core 1:        +73.0°C  (high = +100.0°C, crit = +100.0°C)
Core 2:        +73.0°C  (high = +100.0°C, crit = +100.0°C)
Core 3:        +68.0°C  (high = +100.0°C, crit = +100.0°C)
Sleeping for 1s 
Core 0:        +51.0°C  (high = +100.0°C, crit = +100.0°C)
Core 1:        +53.0°C  (high = +100.0°C, crit = +100.0°C)
Core 2:        +51.0°C  (high = +100.0°C, crit = +100.0°C)
Core 3:        +48.0°C  (high = +100.0°C, crit = +100.0°C)
       +51.0°C  (high = +100.0°C, crit = +100.0°C)

这是预期的行为吗?温度传感器在物理上有可能这么快地看到这么大的变化吗?如果是这样,我在表征温度变化方面遇到了麻烦。我没有时间收集数据。温度基本上是瞬时上升,在工作 运行 时不会改变,工作完成后温度会立即消失。

我 运行 在 RPi 上进行了相同的实验,在频率缩放设置之前,满载的四核需要大约 60 秒,所以我不知道现在发生了什么,我正在尝试将项目到更复杂的架构。

这是在 Intel Core i7 Skylake 架构上。如果能帮助理解这一点,我们将不胜感激。

这很正常。 与环境温度高于 50C 时流经它的功率相比,芯片 + 散热器中的热质量不多,所以它很快达到平衡。

在我的 i7-6700k(Skylake 四核台式机)上,启动视频编码(x264 或 x265)等高功率进程会将内核从 ~25C 空闲(室温)提升到 ~50 或 60C在一秒钟内,然后它们迅速稳定在 70C 左右,这取决于通过 energy_performance_preference 的 3.9 或 4.0GHz 的最大全核睿频。 (英特尔因为 Skylake 具有硬件电源管理,所以它可以在微秒内从空闲时钟加速,而不是毫秒。时钟速度决策由硬件决定)

I mean that once it reaches its high performance speed it stays there (3.1GHz). There is no frequency scaling to drop the frequency (like DVFS)

如果您指的是节流(如果高于额定/“保证”持续频率,则从最大全核涡轮增压器降低),这取决于工作量。要产生足够的热量以使涡轮增压器不可持续,您需要 运行 SIMD FMA 或类似高功率的东西,而不仅仅是虚拟循环。 (例如 Prime95 或视频编码。)

即使是英特尔的备用冷却器通常也有足够的冷却能力来维持一些涡轮增压,所有内核都忙于处理大量工作负载,保持低于持续的 TDP。或者,您的 CPU 的最大全核涡轮增压可能并不高于其额定速度。 i7-6700k 不是:两者都是 4.0GHz。只有 1 或 2 个核心 Turbo 是 4.2GHz。 (而且这并没有真正受到整体热量的限制,更多的是晶体管的速度有多快和/或没有在一个活跃的内核上产生热点。)

当然,“k”型号是可以超频的,所以常用的涡轮增压设置是保守的,但我喜欢让我的粉丝保持安静,而不是在加载笨重的网页时突然发出风扇旋转的声音。

我的冷却器是 CoolerMaster Gemini II,笨重的大东西,有热管和一个大风扇(在室温下)几乎不转,所以我的冷却器比普通冷却器有更多的热质量。当 CPU / 主板温度低于 ~40C 时,后壳风扇会真正停止,正如我在 BIOS 中配置的那样。

I don't see what prevents the temperature from continuing to rise.

物理。更高的温差(芯片和散热器之间,以及散热器和空气之间)意味着每次传热更多(也就是功率)。芯片+散热片的热质量就像一个电容,芯片到空气的热连接就像一个电阻,恒定的热功率输入就像电流。

所以温度逐渐接近平衡,就像在 RC 电路中一样。 平衡点(高于环境)与总功率呈线性关系。

(热传导(和风扇强制对流)与温差呈线性关系,就像电导率/电阻一样。它是这里的主导因素,而不是与绝对 T^4 成比例的辐射传递)

此外,根据 CPU 温度提高的动态风扇速度。

顺便说一句,我认为我的冷却器上的热管解释了快速升温至 ~60C,然后逐渐升温的原因:CPU 本身会很快变热,并开始将热量传递到热管中(热管进入冷却器底部,因此只有一些导热膏和铜)。它可以通过蒸发其工作流体直接吸收热量。但是随着持续的热量输入,热量必须流向某个地方:进入大量的鳍片,然后从那里流到空气中。因此逐渐渐近增加可能是因为散热片本身变热,必须将热量散发到空气中,而不仅仅是将其从热管中导出。


系统没有足够的持续冷却来处理持续的最大涡轮增压。对于 x86 系统,您会在笔记本电脑中找到它们,尤其是轻型和 尤其是 带有 Core-Y CPUs 的超便携笔记本电脑(TDP 大约 7.5W,但仍然是带有 AVX2 的完整 Skylake 核心,可以非常高地涡轮增压)。

有一些数据显示时钟速度下降,我在那里的回答解释了为什么他们以这种方式构建系统:突发性能是交互式使用所需要的,轻量级的组合(风扇 /散热器)+ 高爆发不可避免地意味着他们无法维持他们的最大涡轮。

但台式机可能很重,人们 确实 想要机器能够以尽可能高的时钟速度长时间处理 运行ch 数字。