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メモリを入手、さっそく自作してみた。
左はCPUとマザーボードのケースの写真、右は組み立て後のマザーボードの写真、右の写真下部に装着したIPMIカードが見える。
OS(Ubuntu)をインストールし、正常に動作することを確認した。
疑問点
- BIOSでECCメモリが認識できない。
UbuntuでECCメモリのエラー検出ソフトをインストールしてみたが、動作しなかった。
dmidecodeコマンドでECCメモリが認識されているようであったが、コントローラーがないと表示された。
BIOSレベルで単なるメモリとしか認識していない様子。 - 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メモリが十分出揃ってからになる。辛抱辛抱。
作成日: 更新日: