解説

メモリ診断ツールの有効性を確認する
――IT管理者にとって必携のツールか?――

1. なぜメモリ・エラーは生じるのか?


デジタルアドバンテージ
2002/09/26

解説タイトル


 
ウルトラエックスの「R.S.T.(Ram Stress Test)
PCに搭載されたメモリに対してさまざまなテストを実行して、エラーがないか診断するためのソフトウェア。パッケージ内容は、ブート可能なフロッピーディスク1枚と8ページのマニュアルと、シンプルだ。

 「メモリを増設したら、しばしばPCがハングアップするようになった」「あるPCで使っていたメモリ・モジュールを、別のPCに装着したら、どうもOSが不安定になった気がする」 このような経験はないだろうか? メモリ・モジュールの不良などによりメモリ・エラーが生じると、こうしたトラブルがPCに発生することがある。しかし、メモリ・モジュールの着脱直後にこうしたトラブルが生じたならともかく、前触れもなかった場合は、なかなかメモリ・エラーがトラブルの原因だと把握できないものだ。メモリの読み書きでエラーが生じた結果、PCがハングアップしても、多くのPCではエラーの記録が残らないため、その原因が分からないからだ。こうした障害は、なかなか原因が特定できず、管理者の悩みの種となることが多い。

 メモリ・エラーはデータの損失やシステムのハングアップに直結する重大なエラーである。その点では、クライアントPCよりミッション・クリティカルなサーバの方が、メモリ・エラーによる影響は深刻だ。サーバは、クライアントPCよりもエラー検出機能が充実しているとはいえ、運用中にメモリ・エラーが発生するような事態は避けたいものである。

 このようなメモリ・エラーの問題に対して、メモリの動作テストを行う「メモリ診断ツール」というソフトウェアの分野が、古くから存在する。今回はその中から「R.S.T.(Ram Stress Test)」という製品を取り上げ、メモリ・エラーの原因やR.S.T.の機能を解説しながら、その有効性を探ってみる。

標準規格が存在していても、メモリ・エラーは発生してしまう?

 R.S.T.を紹介する前に、なぜメモリ診断ツールが必要になるのか、考察してみよう。そもそも、メモリを含むPCのハードウェアが正しく設計されており、かつ意図されたとおりの品質を保っていれば、メモリ・エラーなど生じないように思える。しかし悲しいことに現実はそうではない。

 PCのメイン・メモリ(コントローラとメモリ・チップ)は、JEDECやRambusなどが策定した標準規格(仕様)に沿って設計・製造されている。ここでいう標準規格とは、PC133PC2100PC800といったものだ。となれば、同じ規格に合致していれば、どのようなPCとメモリ・モジュールの組み合わせであっても、正しく動作しそうだ。しかし実際には、規格に正しく準拠していない製品が市販されていたり、あるいは規格の範囲内で仕様が微妙に異なっていたり、単純にテストが足りなくて不良個所を内包したままメモリ・チップが出荷されたりすることにより、メモリ・エラーを生じる場合がある。

把握しにくい「相性問題」によるメモリ・エラー

 特に厄介なのは、いわゆる「相性問題」の範疇にあるメモリ・エラーだ。相性問題とは、特定のパーツの組み合わせだけでトラブルが生じることを表す俗称で、微妙な仕様の違いが原因とされる。0と1で情報を扱うデジタル機器に「相性」など、ばかげていると思えるかもしれない。しかし、標準規格を満たすように設計され、個別のテストもパスしたパーツ同士でも、規格で定められなかった部分や、規格内容の解釈の微妙な違いなどにより、それぞれの仕様に差異が生じてエラーの原因となってしまった例は過去にもある。メモリ・モジュールの相性問題は、あるPCに装着すると正常に動作するのに、別のPCではメモリ・エラーが発生してハングアップを引き起こしたりする、というパターンだ。

 1枚だけメモリ・モジュールをPCに装着した場合は正常に動作するが、2枚以上搭載するとエラーが発生する、というパターンもある。これは、メモリ・モジュールの枚数が増えるほど、メモリ・バスの信号線にかかる負荷も高くなり、電気信号の遅延が長くなっていくことによる。電気信号のタイミングのマージン(余裕)が小さい製品同士を組み合わせると、こうしたトラブルを生じることがある。これも相性問題といってよいだろう。

相性問題によるメモリ・エラーを防ぐ方法は?

 相性問題における最大の問題点は、トラブルを抱えているパーツが果たしてどれなのか判然としないことだ。前述の例では、一見すると追加したメモリ・モジュールが原因のように思えるが、実は最初から装着されていたメモリ・モジュールのタイミング・マージンが足りないのが原因、という場合もある。こうしたトラブルを確認する手法の1つとして、PCのパーツを1つずつ入れ換えていって動作を確認し、正常なパーツと「あやしい」パーツに分類する、という方法がある。しかし相性問題の場合は、この分類自体が困難なことがあるし、テストに時間もかかる。パーツの交換作業中に、パーツの損傷など新たなトラブルを引き起こす可能性すらある。

 こうした相性問題を防ぐには、実装するPCやサーバで、テストを行ったメモリ・モジュールを選択するのが有効である。つまり、PCベンダがラインアップしている純正オプションや、あるいはサードパーティが実際にテストして市販しているメモリ・モジュールを選ぶのだ。程度の差はあれ、どちらもテストされているのだから、相性問題が生じる可能性は極めて低いことが期待できる。しかし、PCの場合はそれでも完璧ではない。大手ベンダ製のPCであっても、マザーボードBIOSのバージョンの違いによって、メモリ・チップを制御する電気信号のタイミングなども微妙に異なることがあり、相性問題を引き起こす可能性があるからだ。となると、相性問題の有無などを確認するテストは、自前で行わざるを得ない。

POST時のメモリ・テストは、エラーの診断には役に立たない?

 
「多くのPCやサーバは、電源投入直後のPOST時にメモリをテストするから、相性問題だろうが何だろうが、メモリ・エラーはPOST時に確認できるのでは」と考える人も多いだろう。POST時のメモリ・テストとは、PCの電源投入直後、ファームウェア(システムBIOS)に組み込まれたPOSTプログラムがメイン・メモリの容量をカウントするのと同時に行うメモリ・テストのことだ。筆者の経験からいわせてもらえば、このPOST時のメモリ・テストは、メモリ・エラーの有無を調べる診断テストとしては、ほとんど役に立たない。たとえ本稿で紹介しているようなメモリ診断ツールで「不良(エラー個所あり)」と診断されるようなメモリ・モジュールをPCに装着しても、POST時のメモリ・テストを通過してしまうことがよくあるのだ。当然、POST時のメモリ・テストを通過しても、その後のOS起動時にメモリ・エラーが発生してハングアップする、といった事態に陥ることもある。

 このようにPOST時のメモリ・テストがエラー診断に役立たない理由は単純で、ごく簡単なテストしか実行していないからだ。後述するようにメモリ・エラーをあぶり出すには、何分あるいは何十分という時間をかけて、異なるパターンで何回もメモリを読み書きする必要がある。しかし現在、PCの開発に携わるベンダは、PCの使い勝手を高めるべく、電源投入からなるべく短い時間でWindowsなどのOSが立ち上がるよう努力している。そうした状況の中、PCの起動途中にメモリ・テストだけで何分などという時間を割くというのはナンセンスだ。そのためPOST時には、時間のかからない簡素なテストしか実行されない場合が多い。クライアントPCは特にその傾向が強く、デフォルトのBIOS設定では、たとえ数百Mbytesのメモリを実装していても、わずか数秒でメモリ・テストが完了してしまうほど、テスト時間は短い。クライアントPCにおけるPOST時のメモリ・テストは、もはやメモリ・エラーの有無を調べるという役目を果たしていないのだ。

 サーバだと、数分という時間をかけてPOST時にメモリ・テストを実行する製品も見かける。とはいえ、どのようなメモリ・テストを実行しているのか、公開されていることはほとんどない。その点でも、メモリ診断ツールを利用してメモリ・エラーを確認するほうが確実であり、より安心できるように筆者は感じる。

 
メモリ・チップの故障によるエラーも無視できなくなりつつある!?

 ハードディスクなどの稼働部品を持つデバイスに比べて、半導体であるメモリ・チップの故障率は非常に低い。しかし大容量のメイン・メモリを搭載するサーバでは、大量のメモリ・チップを搭載することから、メモリ・チップの故障によりエラーが生じる可能性もある。例えば現在主流の256Mbitsメモリ・チップの場合、64Gbytesの容量を実現するには、データ用だけでも2048個のメモリ・チップを実装する必要がある。1チップが故障する確率が極めて低くても、それが2000個も実装されると、全体として故障する確率は無視できなくなってくる。

 とはいえ、サーバの場合はECCなどメモリ・サブシステムの耐障害機能が充実しており、ハードウェア面でメモリ・エラーを検出できる*1だけ、まだ安心できる(たとえ万全ではなくても)。その点ではむしろ、耐障害機能が実装されていないクライアントPCの方が危険性は高い。たとえメモリ・エラーが生じてシステムがハングアップしても、「メモリ・エラー」が原因であることが把握できず、トラブル・シューティングが難しいからだからだ。またメモリ・エラーによりメモリ上のデータが化けてしまっても、それが検出されないままハードディスクに保存されてしまい、結果としてデータの損失につながることも考えられる。最近ではクライアントPCでも1Gbytesという大容量のメイン・メモリを実装することも現実的になってきているから、危険性はなおさらだ。

*1 本来ECCは、宇宙線によるDRAMのソフト・エラーを検出するためのものだ。しかし、最近のサーバに実装されているECCはメモリ・チップごと故障するといったハードウェア・エラーを検出できるようになってきている。

 以上のような事情から、ユーザー・レベルでメモリをテストして、エラーがないかどうか確認するためのツールが必要となるわけだ。次ページでは、メモリ診断ツールの1つであるウルトラエックスの「R.S.T.(Ram Stress Test)」を実際に使用し、本当に役立つものなのか探ってみる。

 
 
 INDEX
  メモリ診断ツールの有効性を確認する
  1.なぜメモリ・エラーは生じるのか?
    2.「R.S.T.」に見るメモリ診断ツールの実体
 
目次ページへ  「System Insiderの解説」


System Insider フォーラム 新着記事
  • Intelと互換プロセッサとの戦いの歴史を振り返る (2017/6/28)
     Intelのx86が誕生して約40年たつという。x86プロセッサは、互換プロセッサとの戦いでもあった。その歴史を簡単に振り返ってみよう
  • 第204回 人工知能がFPGAに恋する理由 (2017/5/25)
     最近、人工知能(AI)のアクセラレータとしてFPGAを活用する動きがある。なぜCPUやGPUに加えて、FPGAが人工知能に活用されるのだろうか。その理由は?
  • IoT実用化への号砲は鳴った (2017/4/27)
     スタートの号砲が鳴ったようだ。多くのベンダーからIoTを使った実証実験の発表が相次いでいる。あと半年もすれば、実用化へのゴールも見えてくるのだろうか?
  • スパコンの新しい潮流は人工知能にあり? (2017/3/29)
     スパコン関連の発表が続いている。多くが「人工知能」をターゲットにしているようだ。人工知能向けのスパコンとはどのようなものなのか、最近の発表から見ていこう
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

注目のテーマ

System Insider 記事ランキング

本日 月間