iT邦幫忙

2024 iThome 鐵人賽

DAY 18
0
IT 管理

Troubleshooting - 隔空抓藥的日常與實務技巧系列 第 18

Day 18 - Hardware 不穩,PSOD/BSOD頻發,CPU一直壞?你有聽過Microcode嗎?[下集]

  • 分享至 

  • xImage
  •  

拿個最近最紅的問題來舉例好了,Intel的第13和14代桌上型CPU的穩定度問題(Vmin Shift Instability issue),目前的發現是CPU Microcode在幾種情況套用了不正確的Vmin導致這些用戶在進行遊戲時頻繁的當機。

Intel從2024的六月、八月分別出了兩版Microcode(0x125, 0x129)來改善這個情況,而且目前打算再釋出0x12B做進一步的修補。

https://community.intel.com/t5/Blogs/Tech-Innovation/Client/Intel-Core-13th-and-14th-Gen-Desktop-Instability-Root-Cause/post/1633446#M40

看到這裡,不會覺得以往那些被要求換CPU的例子,有多少的比例其實是更新Microcode就能解決的呢?

特別是當換了CPU,當機的問題又再度發生時,廠商給你的答案再來想必是換主機板,或是換另一個CPU吧(多個CPU同時存在的情況)?

Microcode簡介

一個了解microcode很好的例子就是從vendor的BIOS release note,這也是一般使用者通常獲得microcode更新的其中一個途徑。

我們從Intel BIOS的release note可以快速的識別一些CPU與microcode的細節。

================================================================================
                    BIOS COMPONENTS/CONTENTS
================================================================================
Processors supported: 
        Xeon Scalable Family Processor

Microcode versions:
        CPUID           Version        Status
        0x50654        0x02007006    (SKX H0) 
        0x50656        0x04003604    (CLX B0)
        0x50657        0x05003604    (CLX B1)

由上面的資料可以得知對一般使用者來說你可以從廠商那邊取得的microcode資訊有以下三點

    1. CPUID

    BIOS下載頁面的下方有列出介紹:

    0x50654 (1st Generation Intel(R) Xeon(R) Scalable H0,M0,U0)

    0x50656 (2nd Generation Intel(R) Xeon(R) Scalable B0,L0,R0)

    0x50657 (2nd Generation Intel(R) Xeon(R) Scalable B1,L1,R1)

    你也可以在Intel的網站找到更完整的CPUID的對應。但是相同的CPUID在不同的CPU產品線會有共用的情況,需要自己判斷。
    https://www.intel.com/content/www/us/en/support/articles/000022396/processors.html

    1. version
      這裡指的就是microcode的版本
    1. stepping
      SKX, CLX這裡是CPU的code name縮寫。SKY代表的是skylake,CLX代表的是cascadelake。
      H0/B0/B1則是CPU的更詳細的版本代號。

從上述資料可以了解到,microcode的更新是以CPU的CPUID和stepping來做對應,並有各自的版本號碼。

因此比較版本號碼的新舊需要先了解自己的CPU目前是什麼CPUID,以及獲得目前的版本號碼,才能確定拿到的microcode是新還是舊,並且是否適用於自己的CPU。

Windows 的Microcode處理方式

一般來說windows update其實會默默的幫你更新CPU microcode,就是那些你平常收到的KB通知,有時裡頭就包含了windows覺得你需要更新的CPU microcode。

像之前幾個知名的Intel安全性更新(Spectre, L1TF),都是透過microcode來修補。Windows也有發佈對應的KB號碼以及他們修補的內容。

https://support.microsoft.com/en-us/topic/kb4093836-summary-of-intel-microcode-updates-08c99af2-075a-4e16-1ef1-5f6e4d8637c4

Intel在網站上有一份針對windows用戶如果想更新microcode的best practices,我覺得寫的非常詳盡。

有些比較敏感的機關以及風險較高的公司,往往在OS vendor還沒apply那些patch之前,就已經透過手動的方式取得microcode並套用在系統上了。

https://www.intel.com/content/www/us/en/developer/articles/technical/software-security-guidance/best-practices/microcode-update-guidance.html

此外Intel也有for windows的CPUID識別工具(Intel® Processor Identification Utility)
https://www.intel.com/content/www/us/en/support/articles/000005495/processors.html

Linux的Microcode處理方式

Linux的部分關於如何確認CPUID以及取得和更新microcode的步驟都有詳細的寫在以下的網站上

https://github.com/intel/Intel-Linux-Processor-Microcode-Data-Files

建議與總結

了解完CPU的microcode以及處理方式後,最重要的是管理者想怎麼管理這些microcode帶來的風險。

有的管理者偏好,沒出問題就都不要更新;有的管理者則偏好,一發現新的就立馬更新,越新越好。

這裡我自己的經驗則是依機器目前運作的狀況來判斷,從風險與穩定性兩個面向進行考慮。

已經運作一陣子的機器,除非是安全性更新並且這台機器的風險與重要性很高,才建議以犧牲它的穩定性為前提(因為有可能更新後變的不穩定)做更新。

剛準備上線的機器則務必是更新到最新版,就算遇到問題了起碼廠商也會比較願意處理,或是有機會在之後獲得解決方案。

而那些不穩定的機器或是已經有發現問題的機器,則是抱著死馬當活馬醫的心態,立馬更新了。

不只是CPU,在現今的市場上,HW不管是先天還是後天的問題,大家都會試著以可更新的方式來解決。

因此如果懷疑HW有問題的話,下次也可以先試試從FW或是driver下手。但是如今伺服器的各元件的FW之間溝通頻繁。考慮到相互間的影響,有時不見得最新的FW或是driver就是最好的。除非你已經確定發生的問題能在FW或是driver的release note中提到,再做更新會比較合適。


上一篇
Day 17 - Hardware 不穩,PSOD/BSOD頻發,CPU一直壞?你有聽過Microcode嗎?[上集]
下一篇
Day 19 - BMC event log 自學不求人[上] (BMC SEL LOG 重點提示)
系列文
Troubleshooting - 隔空抓藥的日常與實務技巧30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言