特殊事件处理篇

CPU 温度过高的过渡解决方式

高速运算的系统中,最怕的就是 CPU 高温导致的热当机啊!

最近更新时间: 2024/09/24

问题发生的状况说明

在鸟哥的研究当中,我们经常用集群电脑或者是好多内核的系统来运行平行运算。平行运算运行过程中,会同时调用好多个内核同步运算, 而且 CPU 的使用率都超级高!现今的 CPU 都会具有自己内置超频 (boost) 的功能,为了达到自动超频的功能,一般来说,服务器或桌机等硬件, 都会自动帮 CPU 或者是整个平台进行加强电压的行为,而这个加压让 CPU 高速运作的过程,可能就会让 CPU 产生高热!如果你 CPU 上面的散热器来不及散热,那么你的 CPU 可能就会随时在高档温度!在鸟哥的工作当中,CPU 的热当真的很常发生...快气死了!

  • 操作问题发生

要让系统的负荷增加,其使用 bc 去算 pi 的数据就可以了!相当简单~鸟哥以自己的多内核系统来跑 bc 的计算, 然后使用 & 的方式,让 terminal 可以跑多只 bc 计算这样!如果是最小安装,请使用 yum 去安装 bc 以及 lm_sensors 软件即可!

[root@localhost ~]# yum install bc lm_sensors
[root@localhost ~]# echo "scale=100000; 4*a(1)" | bc -l &
[root@localhost ~]# echo "scale=100000; 4*a(1)" | bc -l &
[root@localhost ~]# sensors
coretemp-isa-0000
Adapter: ISA adapter
Package id 0:  +58.0°C  (high = +84.0°C, crit = +100.0°C)
Core 0:        +42.0°C  (high = +84.0°C, crit = +100.0°C)
Core 1:        +41.0°C  (high = +84.0°C, crit = +100.0°C)
Core 2:        +58.0°C  (high = +84.0°C, crit = +100.0°C)
....

只要重复上面的 echo 那一行,系统就会有好多好多的运算发生!之后运行 sensors 这个软件,你的 CPU 温度,应该就会展示出来! 如果你疯狂的丢 bc 指令,那么最终你的 CPU 负载就会达到 100%...如果你都不做任何事,过不多久,你的 CPU 温度就会缓慢的提升啦! 那么,我们能不能在同时去看一下 CPU 的时脉设置?可以的!这样做:

[root@localhost ~]# cpupower frequency-info
analyzing CPU 6:
  driver: intel_pstate
  CPUs which run at the same hardware frequency: 6
  CPUs which need to have their frequency coordinated by software: 6
  maximum transition latency:  Cannot determine or is not supported.
  hardware limits: 800 MHz - 4.50 GHz
  available cpufreq governors: performance powersave
  current policy: frequency should be within 800 MHz and 4.50 GHz.
                  The governor "performance" may decide which speed to use
                  within this range.
  current CPU frequency: Unable to call hardware
  current CPU frequency: 4.49 GHz (asserted by call to kernel)
  boost state support:
    Supported: yes
    Active: yes

[root@localhost ~]# cpupower monitor
    | Nehalem                   || Mperf              || RAPL                      || Idle_Stats
 CPU| C3   | C6   | PC3  | PC6   || C0   | Cx   | Freq  || pack | dram | core | unco  || POLL | C1_A | C2_A | C3_A
   0|  0.00|  0.00|  0.00|  0.00||  0.09| 99.91|  3611||3458609|1065976|2856927|     0||  0.00|  0.33|  2.14| 97.44
   6|  0.00|  0.00|  0.00|  0.00||  0.10| 99.90|  4251||3458609|1065976|2856927|     0||  0.00|  0.00|  0.00| 99.87
   1|  0.00|  0.00|  0.00|  0.00||  0.35| 99.65|  4091||3458609|1065976|2856927|     0||  0.00|  0.28|  1.31| 98.03
   7|  0.00|  0.00|  0.00|  0.00||  0.63| 99.37|  3057||3458609|1065976|2856927|     0||  0.00|  1.71|  3.40| 94.18
   2|  0.00|  0.00|  0.00|  0.00||  0.58| 99.42|  3736||3458609|1065976|2856927|     0||  0.00|  1.35|  3.56| 94.48
   8|  0.00|  0.00|  0.00|  0.00||  0.75| 99.25|  3310||3458609|1065976|2856927|     0||  0.00| 10.49|  1.66| 87.04
   3|  0.00|  0.00|  0.00|  0.00||  0.48| 99.52|  4011||3458609|1065976|2856927|     0||  0.00|  9.15|  2.29| 88.02
   9|  0.00|  0.00|  0.00|  0.00||  0.34| 99.66|  3986||3458609|1065976|2856927|     0||  0.01|  0.50|  9.40| 89.67
   4|  0.00|  0.00|  0.00|  0.00||  0.72| 99.28|  2434||3458609|1065976|2856927|     0||  0.00|  6.67|  2.80| 89.71
  10|  0.00|  0.00|  0.00|  0.00||  0.16| 99.84|  3977||3458609|1065976|2856927|     0||  0.00|  0.59|  0.30| 98.92
   5|  0.00|  0.00|  0.00|  0.00||  0.64| 99.36|  3113||3458609|1065976|2856927|     0||  0.00|  2.56|  3.84| 92.90
  11|  0.00|  0.00|  0.00|  0.00||  0.50| 99.50|  3500||3458609|1065976|2856927|     0||  0.00|  0.69| 10.54| 88.22

鸟哥用手边简单的 i5 14500 做说明~你可以从你的系统去找到相关的结果~如果 CPU 温度居高不下...久了, 可能就会 CPU 温度太高,最终就...你知道的~

问题解决的方针

  • 使用 BIOS/UEFI 环境的设置

中高端主板,大部分都有自动超频设置,在 AMD 的系统中,缺省的超频设计都会偷偷加压 (增加电压),鸟哥不清楚是否真的如此, 不过,网友们大多认同这样的说法...如果能够将这个 CPU 的供电做个设计,那就搞定。不过,详细的设置其实颇麻烦, 对于鸟哥这种只是需要让 CPU 降温的人来说,好像不用去做这样的调整...太过麻烦!AMD 芯片的主板当中,有个有趣的设置项目, 称为 AMD PBO (Precision Boost Overdrive),在该设置中,有个名为『Platform Thermal Throttle Limit』的设置值,这个设置值可以指定 CPU 的最高温度喔!鸟哥将这个设置值限制在 70 度C,鸟哥以 ASUS UEFI BIOS 的环境来示意,如下图:

AM4 Asus ProArt X670E-CREATOR 主板
AM4 Asus ProArt X670E-CREATOR 主板
AM4 Asus ProArt X670E-CREATOR 主板

下次重新开机,绝了! CPU 的温度就会被限制在 70 度啰!相当简单!

那么系统运作的结果,性能的情况如何?鸟哥跑同样的模式去测试,没有限制温度时,AMD 7590x 温度大多在 88 度左右,运作的时间大约是 184 秒, 而有限制温度到 70 度时,运作的时间大约是 188 秒~误差非常小!不过,温度差异非常大!而且,如果之前的当机确认是 CPU 温度过高, 那么加上这个设置之后,鸟哥的系统应该不会再次当机了!

鸟哥持续做了个测试,鸟哥有一部 AMD 3990x 系统,这个系统现在也设计 CPU 温度限制在 70 度,这部系统比较有趣的地方, 在于之前没有进行限制时,温度会乱飘,明明是 64 内核的 CPU,随便丢一只 bc 去运算,其 CPU 温度总体来说,可能会冲到 80 度以上! 然后...就当机了!检查过水冷系统,没问题~在系统刚买的前 3 年也没问题~是去年开始发生疯狂当机的问题!鸟哥的处理方式非常蠢! 使用 cpupower 软件,将 CPU 的机制设置为 powersave 之外,还限制时脉无论如何只能跑 2.2G....所以,系统性能变很差! 不过,至少不会当机了...只是,操作任何模式...都好慢~

今日发现这个主板的设置值 (不要笑鸟哥!鸟哥确实是不知道可以这样做...我不是高手...),将温度限制在 70 度, 然后我丢了 64 个 bc 计算 pi 的指令,让 CPU 满载 100% !以前不敢这样做测试,因为大概 10 个 bc 运算,系统就会热当... 今天没有喔~系统温度还是只有 70 度!只是 CPU 的时脉,会从 2.6G 慢慢往下降...最后降到大约 2.4G 左右! 当然,还是比 powersave 的 2.2G 好!而且 CPU 温度更凉快!

所以,你的系统散热方式越好,让你的 CPU 可以维持在比较低的温度时,那么使用 CPU 温度限制,你的 CPU 运作时脉当然就会比较高! 鸟哥因为没有钱,我的主机放置的地点并没有全天空调,晚上只能通过抽风扇去散热...因此晚上的时间点,非常容易当机... 现在通过这个机制,我主机运算时,晚上时脉慢一点没有关系!CPU 能够持续运算就好!大家都开心!

其他链接
环境工程模式篇
鸟园讨论区
鸟哥旧站

今日 人数统计
昨日 人数统计
本月 人数统计
上月 人数统计