AMD EPYC”Rome”處理器的Bug使其在34個月的正常運行後出現計劃外休眠
AMD最近為他們代號”Rome”的基於Zen 2的第二代EPYC處理器發布了一個勘誤表,其中指出:”在最後一次系統重置後約1044天后,一個核心將無法退出CC6。”1044天大約是34個月,或接近3年的總運行時間,根據Reddit和Twitter上一些系統管理員的計算,這是一個過高的估計,實際時間是1042天12小時。
問題的出現是因為CPU的REFCLK以54位有符號的整數計算10ns的刻度,如果計算超過9萬億的這些刻度,會得到1042.4999天的溢出結果。一旦溢出發生,內核就會永遠停留在凍結狀態,並且不會接受任何外部中斷請求,直到關閉電源開關並再次打開,這以一操作將重置上述計數器。
這個問題被發現令人印象深刻,它表明不止一個基於EPYC的系統已經連續運行了近三年而沒有一次重啟。這使EPYC”羅馬”處理器無緣角逐任何最長運行事件系統的排名,這一Bug也提醒我們即便是處理器也需要實施更新或修補其他漏洞,這些漏洞在該代處理器首次推出後的四年裡被發現。
AMD不打算對CC6漏洞進行任何修復,而是建議管理員禁用CC6以避免內核進入凍結狀態,或者在時間限製到期前偶爾啟動一次重啟。