PC ケース、ファンを換装して冷やしてもなお、ランダムに再起動してしまう仮想化サーバ。原因はメモリにあると疑ってみることにして、Memtest86 を走らせてみることにしました。Memtest86 と Memtest86+ って何をするツールなのか、2つの違いは何か、という話。

ブルースクリーン、勝手に再起動ときたら Memtest86

Memtest86 というツールは Nire.com でも何回か出てきますが、メモリの動作をチェックするツールです。メモリ購入時、トラブルの切り分け時に重要なツールと言えるでしょう。

TWOTOP のサポートセンターいわく、PC のメモリ故障で持ち込んだときに Memtest86 でテストしているらしく。(先日の電源ユニット故障ではなく、その前の故障時) 私的な利用から業務まで広く使われているようです。

マザーボード BIOS の起動時にもメモリチェックを行うオプションがありますが、あれよりもずっと詳細に何種類かのテストを行うことができます。

  • Test 0 [Address test, walking ones, no cache]
  • Test 1 [Address test, own address]
  • Test 2 [Moving inversions, ones&zeros]
  • Test 3 [Moving inversions, 8 bit pat]
  • Test 4 [Moving inversions, random pattern]
  • Test 5 [Block move, 64 moves]
  • Test 6 [Moving inversions, 32 bit pat]
  • Test 7 [Random number sequence]
  • Test 8 [Modulo 20, ones&zeros]
  • Test 9 [Bit fade test, 90 min, 2 patterns]

各テストの内容は Memtest86 の公式サイトに書いてありますが、若いアドレスから順に 0 や 1 を書いてみて正しく読み出せるか、といった単純なチェックから始まって、何種類かのより複雑なパターンで書き込み / 移動 / 読み出しを繰り返してみて、動作を確認します。

Memtest86 と Memtest86+ の共通点と違い

Memtest86Memtest86+ の 2種類があります。どちらも手軽に ISO イメージをダウンロードし、CD に焼いて起動するだけで、今現在 HDD に入っている OS に何も手を加えることなくメモリテストすることができます。

Memtest86 の方が元祖なのですが、2002年に Memtest86 の更新が止まってしまい、AMD64 アーキテクチャのサポートがされなかったのをきっかけに、より多くのチップセットをサポートするべく派生してできたのが Memtest86+ のようです。

チップセットの種類だけでなく、Memtest86+ の方が、同様なテストを流しても処理が速いと言われています。

私の場合は、両方用意していますが、Memtest86+ の方を愛用しています。

青ければ正常、赤ければ異常

Memtest86+ の実行中は、ブルーの背景にいろいろ表示されていますが、単純な話、次の 2点がもっとも重要です。

  • Pass が今いくつかなのか … 0 なら 1周目実行中。1 なら 2周目
  • 画面が青いか赤いか

Pass は上記の Test 0 から 9 まで一通り終われば 1周完了なので、1増えます。

画面が青い状態は正常。以前テストしたときはこの PC、一晩実行させても何のエラーも出なかったのですが…

Memtest86+: Pass 5 までエラー無し

今回テストすると、真っ赤でした。

Memtest86+: エラー多発

エラーの出たアドレスを見ていくと 0-1024MB の範囲になっていることから、まずは下位アドレスを担当しているメモリが怪しいのではないかと仮説が立てられますが、これだけでいきなり「分かった! 異常があるのは 1枚目だ!」と決めつけるのは短絡的というもの。メモリのエラーではない場合もあります。

次回は、じゃあどうやって切り分けていくのさという話。

つづく。