Hetzner専用サーバー上のECCメモリを確認する方法

Hetzner専用サーバー上のECCメモリを確認する方法

ヘッツナーHロゴ

最近、新しいVPSまたは専用サーバーを始めることについて話し合っています。具体的なトピックとしては、

本日の投稿では、ダイナミック・ランダム・アクセス・メモリ(「DRAM」または「RAM」)エラー訂正コード・メモリ(「ECC RAM」または「ECCメモリ」)の違いをご紹介します。Hetzner社製Ryzenマシンの中で最も安価なAX41-NVMeサーバーを使用し、オプションのECC RAMが搭載され、正常に動作するかどうかをテストします。

ECC RAM とは何ですか?

デスクトップ、ノートパソコン、サーバー、スマートフォンにはそれぞれ異なる種類のメモリが搭載されています。メモリの種類を区別する重要な点の一つは、電源を入れ直してもメモリが保持されるかどうかです。電源を入れ直しても保持されるメモリは「スタティック」メモリと呼ばれ、電源が切れると「記憶を失う」メモリは「ダイナミック」メモリと呼ばれます。データを保存するハードドライブはスタティックメモリです。デバイスの電源をオフにして再びオンにしても、ファイルは引き続き利用できます。

デバイス内のメモリをすべて静的メモリにするのは魅力的に思えるかもしれませんが、静的メモリは遅すぎます。デバイスが動作している間は、待ちたくありません。そのため、ほとんどのコンピュータ操作には、静的メモリよりもはるかに高速な動的メモリが使用されます。通常、デバイスにはダイナミック・ランダム・アクセス・メモリ(DRAM)モジュールが搭載されています。デバイス上で実行されるプログラムは、これらのDRAMモジュールに高速にアクセスできます。

DRAMは放射線などの影響を受けやすく、保存内容や「記憶」内容にランダムな変化が生じる可能性があります。こうした変化は「ビット反転」と呼ばれます。ビット反転が発生すると、メモリからデータを呼び出した際に記憶される内容は、元々保存されていた内容と異なります。意図した変化の結果は、具体的な状況によって異なります。しかし、その影響は、ほとんど影響がないものから壊滅的なものまで、多岐にわたります。

エラー訂正コード メモリ (ECC RAM) は、メモリ エラーを「監視」して報告したり、場合によっては修正したりする追加のメモリ モジュールを提供することで、この問題を解決します。

ECC RAM は必要ですか?

ECC RAMが必要かどうかは議論の余地があります。Linus Torvalds氏は「ECCは絶対に重要だ」と述べました。一方、ほとんどの人は非ECC DRAMを常に使用しており、目立った悪影響はほとんど、あるいは全くありません。非ECC RAMは安価ですし、たまにシステムクラッシュが発生しても気にする人はいないでしょう。安価なVPSやサーバーを、飛行機の制御など、同等の精度と可用性が求められるものに使うわけではありません。

しかし、プロフェッショナルなウェブサイトでは、ダウンタイムやデータ破損は深刻な問題となる可能性があります。そのため、「プロフェッショナル」なセットアップにはECC RAMが搭載されています。ECCはそれほど高価ではありません。

当社のサーバーには ECC RAM が搭載されていますか?

サーバーをレンタルしていて、プロバイダーがECC RAM搭載と謳っている場合、それが本当にECC RAM搭載かどうかをどのように確認すればよいでしょうか? 一つの方法は、ECCの特徴として挙げた追加のメモリモジュールを確認することです。ユーティリティdmidecodeを使えば、ECC RAMが搭載されているかどうかを確認できます。

root@hels ~# dmidecode -t memory
dmidecode 3.3
Getting SMBIOS data from sysfs.
SMBIOS 3.3.0 present.

ハンドル 0x000F、DMI タイプ 16、23 バイト
物理メモリアレイ
場所: システムボードまたはマザーボード
使用: システムメモリ
エラー訂正タイプ: マルチビットECC
最大容量: 128 GB
エラー情報ハンドル: 0x000E
デバイス数: 4

[、、、]

ハンドル 0x0019、DMI タイプ 17、92 バイト
メモリデバイス
配列ハンドル: 0x000F
エラー情報ハンドル: 0x0018
合計幅: 72 ビット
データ幅: 64ビット
サイズ: 32 GB
フォームファクター: DIMM
設定: なし
ロケーター: DIMM 1
銀行ロケーター: P0 チャネル A
タイプ: DDR4
タイプの詳細: 同期非バッファ (未登録)
速度: 2667 MT/s
メーカー: サムスン
シリアル番号: XXXXXXXX
資産タグ: 指定なし
部品番号: M391A4G43AB1-CWE
ランク: 2
構成されたメモリ速度: 2667 MT/s
最小電圧: 1.2 V
最大電圧: 1.2 V
設定電圧: 1.2 V
メモリ技術: DRAM
メモリ動作モード機能: 揮発性メモリ
ファームウェアバージョン: 不明
モジュール製造元ID: バンク1、16進数0xCE
モジュール製品ID: 不明
メモリサブシステムコントローラの製造元ID: 不明
メモリサブシステムコントローラ製品ID: 不明
不揮発性サイズ: なし
揮発性サイズ: 32 GB
キャッシュサイズ: なし
論理サイズ: なし

[、、、]

ルート@hels ~#

上記の出力から、システムボードが「エラー訂正タイプ:マルチビットECC」に対応するように設定されていることがわかります。また、「合計幅:72ビット」の行から、このモジュールにECCをサポートするために追加メモリが搭載されていることがわかります。合計幅72ビットは、「データ幅:64ビット」とは対照的です。そして、追加ビットはECC用です。

このサーバーにはメモリモジュールが2つ搭載されています。2つ目のモジュールも72ビット幅を示しています。したがって、このサーバーはECC対応であり、実際にECC RAMが搭載されていると結論付けることができます。

ECC RAM が動作しているかどうかはどうすればわかりますか?

Linuxカーネルは起動時にブートメッセージを出力します。`dmesg`コマンドで確認できます。カーネルでは、ECC用のモジュールは「エラー検出および訂正(EDAC)」と呼ばれます。カーネルがECCが正常に動作していると認識し、EDACを初期化しているかどうかを確認できます。

root@hels ~ # dmesg | grep EDAC
[ 0.466382] EDAC MC: Ver: 3.0.0
[ 4.176346] EDAC amd64: MCT channel count: 2
[ 4.176542] EDAC MC0: Giving out device to module amd64_edac controller F17h_M70h: DEV 0000:00:18.3 (INTERRUPT)
[ 4.176669] EDAC amd64: F17h_M70h detected (node 0).
[ 4.176752] EDAC MC: UMC0 chip selects:
[ 4.176754] EDAC amd64: MC: 0: 0MB 1: 0MB
[ 4.176832] EDAC amd64: MC: 2: 16384MB 3: 16384MB
[ 4.176835] EDAC MC: UMC1 chip selects:
[ 4.176836] EDAC amd64: MC: 0: 0MB 1: 0MB
[ 4.176836] EDAC amd64: MC: 2: 16384MB 3: 16384MB
[ 4.176837] EDAC amd64: using x16 syndromes.
[ 4.176844] EDAC PCI0: Giving out device to module amd64_edac controller EDAC PCI controller: DEV 0000:00:18.0 (POLLED)
[ 4.176845] AMD64 EDAC driver v3.5.0
root@hels ~ #

ECC はどの程度機能していますか?

これは少し難しい質問ですね!もちろんまだ発生していない可能性のある、ランダムで頻度の低いエラーをどうやって確認すればいいのでしょうか?これまでedac-utilsrasdaemonを使って監視を試みてきました。長期間の監視や大規模なシステムでの監視は行っていません。メモリに高負荷をかけたりオーバークロックしたりといったストレスをかけることもまだ試していません。問題が発生していないのは、単に何も問題が起きていないだけなのか、それとも私の監視手法に操作ミスがあるのか​​もしれません。

オファーリンク

購入を検討されている方のために、HetznerのAX41-NVMeページへのリンクを貼っておきます。なお、このサーバーではECC RAMは追加料金がかかります。



おすすめの記事