Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Machine Check Exception

Machine Check Exception

以下動画のスライドです。
https://youtu.be/iOiIrl_OEz4

Avatar for Satoru Takeuchi

Satoru Takeuchi PRO

July 12, 2026

More Decks by Satoru Takeuchi

Other Decks in Technology

Transcript

  1. • 頭文字をとってMCEと呼ばれることが多い • コンピュータのハードウェアで発生したエラー(machine check error)を通知する方 法 ◦ 📝 エラー通知方法だけでなくエラーそのものもMCEと呼ぶこともあるが、本動

    画ではエラーそのものはmachine check errorとする • machine check errorの例 ◦ 発生場所: CPU、メモリ、バスなど ◦ 理由: ビット化け、データ送受信失敗、送受信データがプロトコル違反 Machine Check Exceptionとは 2
  2. メモリのビットが化けた場合 • x86_64 Linuxのシステムでメモリ上の0x1000であるべきデータが化けて0x1001に なった! • これを放置すると… ◦ 誤ったデータを保存する ◦

    誤ったデータをもとにデータ処理して誤りを拡大させる • Error Correction Code(ECC, 誤り訂正符号)メモリなら検出、訂正可能 ◦ 基本はSECDED(Single Error Correct, Double Error Detect) ◦ 通常サーバはECCメモリを使うがパソコンはそうではない • 📝 宇宙船に搭載されているコンピュータは宇宙線によって当たり前のようにビット 化けが起きるらしい 3
  3. 検出後はどうなる? • メモリのビット化けを検出&修正済(correctable error) ◦ CPUは自身のModel Specific Register(MSR)に発生したことを記録する ◦ カーネルがMSRを呼んでカーネルログ

    (dmesg)に出力 • メモリのビット化けを検出したが修正はできず(uncorrectable error) ◦ CPUはMCEを発生させ、カーネルの MCEハンドラを実行する ◦ 可能であればカーネル側で対処を試みる。対処不能なら通常あきらめてパニックさせる • メモリのビット化けに限らずハードウェアエラーは「修正可能なら記録は残す」「修正 不可能なら速やかにシステムを停止させる」が基本 4
  4. 私が遭遇したことがあるmachine check error • AMDのRyzen 1800xで特定の負荷をかけるとCPUのキャッシュのビット化け&訂 正が発生することがあった • このときはCPUを交換した 5

    [ 627.958024] mce: [Hardware Error]: Machine check events logged [ 627.958027] [Hardware Error]: Corrected error, no action required. [ 627.958034] [Hardware Error]: CPU:13 (17:1:1) MC3_STATUS[-|CE|MiscV|-|-|-|-|SyndV|-]: 0x9820000000000150 [ 627.958037] [Hardware Error]: IPID: 0x000300b000000000, Syndrome: 0x000000002a000503 [ 627.958040] [Hardware Error]: Decode Unit Extended Error Code: 0 [ 627.958041] [Hardware Error]: Decode Unit Error: uop cache tag parity error. [ 627.958044] [Hardware Error]: cache level: RESV, tx: INSN, mem-tx: IRD
  5. まとめ • CPUが何らかのハードウェアエラーを検出するとシステムと協力して対処 ◦ 記録に残す ◦ MCEを使って通知、システム (カーネル)がエラーからの復旧を試みる ◦ どうにもならなければシステムを停止させる

    • MCEがたくさん発生したりdmesgにcorrectable errorがたくさん記録されているシ ステムは怖い ◦ どういうエラーかを確認して部品を交換すると治るかもしれない • コストをかけると、ある程度怖さが減らせる ◦ 例: ECCメモリ 6