高速運算的系統中,最怕的就是 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 能夠持續運算就好!大家都開心!