Contents ...
udn網路城邦
AMD Ryzen 2700X + CentOS7 隨機鎖死問題
2018/10/26 16:32
瀏覽2,060
迴響0
推薦0
引用0
最近購買了AMD Ryzen2700X 8核16緒CPU,看上他的高效能與多核,拿來開虛擬機做交易、做測試、做程式開發,效能真的頗令人滿意的。
我把它裝上CentOS 7,用了約一兩個星期都很順,直到某天(竟然就是10/11台灣跌6~700點的那天下午12點)無預警整台當機鎖死,後來也在凌晨鎖死兩次,就像熱當那樣要按按鈕關掉再開才行。但是我用燒CPU工具去測,燒他個兩三個小時風扇狂鳴呼呼叫,也都很正常沒發生熱當死機等狀況。

於是開始找資料,似乎真的有找到解法(起碼徵狀跟我的幾乎一樣),也因為這個問題都查不到中文資訊,因此筆記給大家參考,希望他真的能解決我無預警鎖死的問題。



大意是說,AMD RYZEN 系列CPU存在一個隨機發生系統冰凍鎖死(freezn、lockup)的BUG,其徵狀是在低CPU使用率時(通常是半夜晚上等低CPU使用率)發生,一發生系統就會鎖死什麼都不動無法做任何操作,只能按著實體POWER鍵關機後再開才行。且這個問題只會發生在LINUX上,WINDOWS都不會發生,且也不同於2017年25周以前的segfaults bug(這個Bug是高負載時發生)。根本的原因還未知,AMD原廠也好像也沒有個官方解釋,只是從解法回推,可能是CPU進入C6-State節能狀態後就死掉了,而Windows作業系統不會讓CPU進入C6-State節能,所以Windows不會發生。


解法有二:

1. 調整BIOS中 Advanced Mode -> Advanced -> AMD CBS -> Power Supply Idle Control: Typical Current Idle, 這樣就是關閉C6 (我的主機板原廠預設是AUTO)

2. 使用 https://github.com/r4m0n/ZenStates-Linux 的python腳本,在開機後,執行python zenstates.py --c6-disable,將C6功能關掉。
*討論區上是寫建議兩個都使用
=========================================
2019-1-14 更新
今天問題又發生了,看起來上面的方法也只是減低發作的機會。
這篇裡面多了一個步驟:在Kernel 啟動選項增加idle=nomwait,試試看吧。
1. 編輯 vi /etc/default/grub ,在GRUB_CMDLINE_LINUX 中增加 idle=nomwait
2. 執行 
    grub2-mkconfig -o /boot/grub2/grub.cfg   <==傳統
    grub2-mkconfig -o /boot/efi/EFI/centos/grub.cfg  <==uefi開機 div="">
3. 開機後執行 cat /proc/cmdline 看看有沒有吃進去。
=========================================
2019-6-14 更新
五個月過去了,沒有發生鎖死問題,希望能持續下去。(四月時因UPS電池壞掉跳電兩次,現在想來有沒有可能因UPS異常而讓AC供電異常,引發主機Power DC供電異常,再引起CPU隨機鎖死? 未知,持續觀察。)
發表迴響

會員登入