Core i9でECC対応にしてみた

個人で単にWebを作って公開するだけなら、デスクトップPCで十分だろう。わざわざECC(Error Checking and Correcting)対応にする必要性を感じない。 しかし、信頼性を重要視する商用目的ならば、話は変わってくる。また、メモリエラーを悪用したハッキングも存在するらしい。 信頼性のあるWebサーバを安価に構築できればと思い、デスクトップPC用のCPUとECCメモリを使ったPCを自作してみた。

IPMIカードが付属するLGA1700向けWSマザーボード、ASUS「Pro WS W680-ACE IPMI」 などの記事が最近の話題としてあり、第13世代CPU Intel Core i9 13900KとASUS Pro WS W680-ACE IPMIおよびECCメモリを入手、さっそく自作してみた。

motherboard case view motherboard view

左はCPUとマザーボードのケースの写真、右は組み立て後のマザーボードの写真、右の写真下部に装着したIPMIカードが見える。

OS(Ubuntu)をインストールし、正常に動作することを確認した。

疑問点

  1. BIOSでECCメモリが認識できない。
    UbuntuでECCメモリのエラー検出ソフトをインストールしてみたが、動作しなかった。
    dmidecodeコマンドでECCメモリが認識されているようであったが、コントローラーがないと表示された。
    BIOSレベルで単なるメモリとしか認識していない様子。
  2. IPMIカードはECC検知ができない。
    CPUと独立して動作するIPMIコントローラでECCのエラー検知と修正が可能と期待したが、その期待はかなわなかった。
    ECCを制御する機能がどうもないようだ。(私の知識不足が原因かもしれないが、…)

ECCメモリ自体でシングルビットエラーは自動修復するので、信頼度の高いサーバ構築はできただろうと考えている。
しかし、エラー検知機能がないと、いつサーバの再起動をしたらよいのかわからないという問題がある。定期的に再起動するしかない。

再起動せずに放置すると、シングルビットエラーが重なりマルチビットエラーに変化する確率が上昇する。そうなると修復は不可能になる。

総論

私自身の知識不足もあるのかもしれないので、間違っていたならごめんなさい。

個人的見解として、一般のサーバではECCチェック機能が一般的と思われるが、その機能が不足しているのは不安が残る。 また、再起動せずに、ECCメモリの検査と修正ができればそちらのほうが良い。

総論として、ECCメモリ対応で、ある程度信頼度の高いサーバ構築はできたと思うが、検査ができていないのでECCが正常動作しているのかさえ確認できない。

あとがき

少し古いCPUとワークステーション用マザーボードで試してみた。CPUはAMD Ryzen9 5950X、マザーボードはASUS Pro WS X570-ACE、メモリはDDR4 3200MHz ECC-DIMM 32GB×2を使った。
BIOSを最新バージョンにして、Memtest86でメモリ情報を入手すると「ECC Enabled: Yes」となり、ECCが正常に動作していることが確認できた。
さらに、dmidecodeコマンドでもECCをMulti-bit ECCとして認識し、ECCエラー検出ソフトrasdaemonもしっかりと動作した。

最新のCPUと最新のマザーボードがあっても、対応するECCメモリがないことが原因だったのではないかと考えられる。 もしくは、BIOSが最新のECCメモリを認識できていないないのかもしれない。
Core iシリーズのCPUはECC対応と書いてあっても動作しないような噂もあり、Ryzenに切り替えたためにうまくいったのかもしれない。

Core i9でうまくいかなかった原因は十分にわかっていないが、新しいものにすぐに飛びついてもろくなことがない。今回はいい勉強になった。

また、対応するECCメモリは発売時期が遅れるので、ECC対応サーバの製作はECCメモリが十分出揃ってからになる。辛抱辛抱。

作成日: 更新日: