高速运算的系统中,最怕的就是 CPU 高温导致的热当机啊!
在鸟哥的研究当中,我们经常用集群电脑或者是好多内核的系统来运行平行运算。平行运算运行过程中,会同时调用好多个内核同步运算, 而且 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 温度太高,最终就...你知道的~
中高端主板,大部分都有自动超频设置,在 AMD 的系统中,缺省的超频设计都会偷偷加压 (增加电压),鸟哥不清楚是否真的如此, 不过,网友们大多认同这样的说法...如果能够将这个 CPU 的供电做个设计,那就搞定。不过,详细的设置其实颇麻烦, 对于鸟哥这种只是需要让 CPU 降温的人来说,好像不用去做这样的调整...太过麻烦!AMD 芯片的主板当中,有个有趣的设置项目, 称为 AMD PBO (Precision Boost Overdrive),在该设置中,有个名为『Platform Thermal Throttle Limit』的设置值,这个设置值可以指定 CPU 的最高温度喔!鸟哥将这个设置值限制在 70 度C,鸟哥以 ASUS UEFI BIOS 的环境来示意,如下图:
下次重新开机,绝了! 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 能够持续运算就好!大家都开心!