web-dev-qa-db-ja.com

memtestの実行統計をどうやって解釈しますか?

ここに私は故障したメモリモジュールがあると思うノートを持っています。そこで私は Memtest86 + をダウンロードして実行させました。

スクリーンショットは私の実際のものではないことに注意してください、それはmemtest86 +によって提供されます

memtest

画面上の数字をどうやって解釈するのですか?私はそれを約4時間走らせましたそして今私はパス7にいます。

特に何が

  • テスト番号
  • エラー数
  • eCCエラー数

示す?メモリエラーの正しい値は何ですか?どの時点でメモリの交換を検討しますか?

63
slhck

TL、DR

最初に最も重要な数字:正常なメモリのエラー数は0です。 0より上の数字は、損傷したセクタや不良セクタを示している可能性があります。


画面の説明

     Memtest86+ v1.00      | Progress of the entire pass (test series)
CPU MODEL and clock speed  | Progress of individual, current test
Level 1 cache size & speed | Test type that is currently running
Level 2 cache size & speed | Part of the RAM (sector) that is being tested
RAM size and testing speed | Pattern that is being written to the sector
Information about the chipset that your mainboard uses
Information about your RAM set-up, clock speed, channel settings, etc.

WallTime   Cached  RsvdMem   MemMap   Cache  ECC  Test  Pass  Errors  ECC Errs
---------  ------  -------  --------  -----  ---  ----  ----  ------  --------
Elapsed    Amount  Amount    Mapping  on     on   Test  # of  # of    # of ECC
time       of RAM  of        used     or     or   type  pass  errors  errors
           cached  reserved           off    off        done  found   found
                   RAM, not
                   tested

データ/テスト説明

MemTestは多くのテストを実行し、それはメモリのすべてのセクタに特定のパターンを書き込み、それを取得します。検索されたデータが元々格納されていたデータと異なる場合、MemTestはエラーを登録し、エラーカウントを1増やします。エラーは通常RAMストリップの不良の兆候です。

メモリは単なる情報を保持するメモ帳ではなく、キャッシュのような高度な機能を持っているので、いくつかの異なるテストが行​​われます。これがTest #の意味です。 MemTestは、エラーが発生したかどうかを確認するためにさまざまなテストを実行します。

いくつかの(単純化された)テスト例

  • この順序でテストセクタ:A、B、C、D、E、F(シリアル)
  • この順序でテストセクタ:A、C、E、B、D、F(移動)
  • すべてのセクターをaaaaaaaaというパターンで埋めます。
  • すべてのセクターをランダムなパターンで埋めます。

https://www.memtest86.com/technical.htm#detailed からのすべてのテストの詳細な説明

テスト0 [住所テスト、歩行テスト、キャッシュなし]

ウォーキング1アドレスパターンを使用して、すべてのメモリバンクのすべてのアドレスビットをテストします。

テスト1 [アドレステスト、自アドレス、連番]

各アドレスはそれ自身のアドレスで書かれ、そして次に整合性についてチェックされる。理論的には、以前のテストでメモリアドレス指定の問題が検出されたはずです。このテストでは、以前には検出されなかったアドレス指定エラーをすべて検出するはずです。このテストは、利用可能な各CPUで順番に行われます。

テスト2 [住所テスト、自分住所、パラレル]

テスト1と同じですが、テストはすべてのCPUと重複するアドレスを使用して並行して行われます。

テスト3 [移動反転、1と0、順次]

この検定では、すべて1と0のパターンを使用した移動反転アルゴリズムを使用します。テストアルゴリズムにある程度干渉していても、キャッシュは有効になっています。キャッシュが有効になっていると、このテストには時間がかからず、すべての「ハード」エラーといくつかのより微妙なエラーがすぐに見つかるはずです。このテストは簡単なチェックにすぎません。このテストは、利用可能な各CPUで順番に行われます。

テスト4 [移動反転、1と0、並列]

テスト3と同じですが、テストはすべてのCPUを使用して並行して行われます。

テスト5 [移動反転、8ビットpat]

これはテスト4と同じですが、「ウォーキング」の1と0の8ビット幅パターンを使用します。このテストは、 "ワイド"メモリチップのわずかなエラーをよりよく検出します。

テスト6 [移動反転、ランダムパターン]

テスト6はテスト4と同じアルゴリズムを使用しますが、データパターンは乱数であり、それは補数です。このテストは、データに敏感なエラーを検出するのが困難な場合に特に効果的です。乱数列は各パスごとに異なるので、複数回パスすると効果が高まります。

テスト7 [ブロック移動、64移動]

このテストは、ブロック移動(movsl)命令を使用してメモリを強調し、Robert RedelmeierのburnBXテストに基づいています。メモリは、8バイトごとに反転するシフトパターンで初期化されます。その後、movsl命令を使用して4MBのメモリブロックを移動します。移動が完了した後、データパターンがチェックされます。データはメモリの移動が完了した後にのみチェックされるため、エラーが発生した場所を知ることはできません。報告されたアドレスは、悪いパターンが見つかった場所のものだけです。移動はメモリの8MBセグメントに制限されているので、失敗したアドレスは報告されたアドレスから常に8MB以内になります。このテストからのエラーは、BadRAMパターンの計算には使用されません。

テスト8 [移動反転、32ビットpat]

これは、連続するアドレスごとにデータパターンを1ビット左にシフトする移動反転アルゴリズムの変形です。開始ビット位置は、パスごとに左にシフトされます。考えられるすべてのデータパターンを使用するには、32パスが必要です。このテストは、データに敏感なエラーを検出するのに非常に効果的ですが、実行時間は長くなります。

テスト9 [乱数列]

このテストは一連の乱数をメモリに書き込みます。乱数のシードをリセットすることで、参照用に同じ数列を作成できます。初期パターンがチェックされ、次に補完されて次のパスで再度チェックされます。ただし、移動反転とは異なり、テストの書き込みと確認は順方向でしか行えません。

テスト10 [モジュロ20、1とゼロ]

Modulo-Xアルゴリズムを使用することは、キャッシュとアルゴリズムとのバッファリングの干渉による移動反転によって検出されないエラーを発見するはずです。テストと同様に、データパターンには1と0のみが使用されます。

テスト11 [ビットフェードテスト、90分、2パターン]

ビットフェードテストでは、すべてのメモリをパターンで初期化してから5分間スリープします。次に、メモリを調べて、メモリビットが変更されたかどうかを確認します。すべて1とすべてゼロのパターンが使用されます。

不良セクタは時々機能し、別の時には機能しない可能性があるので、MemTestに数回実行させることをお勧めします。フル合格は合格した一連のテストです。 (上記の一連のテスト1-11)エラーなしでより多くのパスを取得するほど、MemTestの実行はより正確になります。念のため5回くらい走ります。

正常なメモリのエラーカウントは0である必要があります。0を超える数字は、破損したセクタまたは不良セクタを示している可能性があります。

ECCエラー数は、ECCoffに設定されている場合にのみ考慮されるべきです。 ECCは、エラー訂正コードメモリの略で、メモリ状態の誤ったビットを検出して訂正するためのメカニズムです。 RAIDや光メディアで行われたパリティチェックと少し比較することができます。この技術はかなり高価であり、おそらくサーバーのセットアップでしか遭遇しないでしょう。 ECCカウントは、メモリのECCメカニズムによって訂正されたエラー数をカウントします。正常なRAMに対してECCを呼び出す必要はないため、0を超えるECCエラー数は不良メモリを示している可能性もあります。


エラー説明

エラーが発生したMemtestの例それはどのセクター/アドレスが失敗したかを示します。

Memtest screen with errors

最初の列(Tst)は、どのテストが失敗したかを示しています。この番号は、すでに説明したリストのテスト番号に対応しています。 2番目の列(合格)は、そのテストに合格したかどうかを示します。この例の場合、テスト7にパスはありません。

3列目(障害アドレス)は、メモリーのどの部分にエラーがあるかを正確に示しています。そのような部分には、IPアドレスとよく似たアドレスがあります。これは、その部分のデータストレージに固有のものです。それはどのアドレスが失敗したか、そしてデータチャンクがどれくらい大きいかを示します。 (例では0.8MB)

4番目(良い)と5番目(悪い)の列は、それぞれ書き込まれたデータと取得されたデータを示しています。両方の列は、(明らかに)欠陥のないメモリでは等しいはずです。

6番目の列(Err-Bits)は、失敗している正確なビットの位置を示しています。

7番目の列(カウント)は、同じアドレスおよび失敗したビットを持つ連続エラーの数を示します。

最後に、最後の7列目(Chan)は、メモリーストリップが入っているチャネル(システムで複数のチャネルが使用されている場合)を示します。


エラーが見つかった場合

MemTestがエラーを発見した場合、どのモジュールに問題があるかを判断する最善の方法は、 このスーパーユーザーの質問 およびその一般的な回答で説明されています。

除去のプロセスを使用してください - モジュールの半分を取り除いて、もう一度テストを実行してください...

失敗がない場合は、これら2つのモジュールが適切であることがわかりますので、それらを脇に置いてもう一度テストします。

障害がある場合は、もう一度半分に(今は4つのメモリモジュールのうちの1つに)カットしてから、もう一度テストします。

しかし、片方がテストに失敗したからといって、もう片方が失敗に終わらないと仮定しないでください(2つのメモリモジュールに障害がある可能性があります)。 。

重要な注意:メモリインターリーブ、および一部のマザーボードベンダによる貧弱なメモリモジュールソケット番号付けスキームなどの機能では、どのモジュールが特定のアドレスで表されるかを知るのは難しい場合があります。

82
BloodPhilia

テスト番号:memtestが現在実行している特定のテストの番号。たくさんあります。

エラー数:発生したメモリエラーの数

ECCエラー:ECCによって訂正されたエラーの数。あなたのチップセット/メモリはECCを持っていないので、この数は関係ありません。

あなたの記憶が0以上のエラーの数を持っているなら、あなたはそれを交換したいと思うでしょう。

編集:テストはmemtestがメモリに書き込むさまざまなパターンです。それは異なるパターンをメモリに書き込み、エラーをチェックするためにそれらを読み戻します、そしてそれはすべてのビットのすべての状態をテストすることができるように異なるパターンを使います。

カウントは、memtestに読み戻された結果が、メモリーに書き込まれた結果と一致しなかった回数を示します。これは、テストされているメモリーのチャンクにエラーがあることを意味します。

ECCは、サーバーおよびワークステーション用のメモリチップに組み込まれているエラー訂正テクノロジです。ほとんどのデスクトップは、ECCが組み込まれたメモリモジュールをサポートしていません。ほとんどすべてのサーバー/ワークステーションがそれをサポートしており、通常はそれを必要としています。 ECCによって訂正されたエラーの数は、ECCチップが正常に修正したエラーの数です。

6
Eli

エラー数

テストの実行中に、いずれかのテストでメモリが失敗した場合、エラー数が増えます。正しく思い出した場合、テストに失敗したアドレスの数がカウントされます。

ECCエラー数

ECCメモリ は、データが破損しないようにするために使用される特別な種類のメモリチップです。あなたのECC Errsカラムは、ECCによって修正された問題の数を数えます。

(ECCは遅くて高価であり、基本的にはスワップRAM outに煩わされることができないミッションクリティカルなシステム用です。)

テスト番号

Memtestはあなたの記憶に対してさまざまな種類のテストを行います。これは Memtest86 のWebサイトで説明されています。素早い英語の翻訳のように:

テスト0:ウォーキングワンズアドレステスト

Memtestは最初のメモリ位置に00000001を、次のメモリ位置に00000010というように(以下同様)、8バイトごとにこのパターンを繰り返します。それからそれはメモリを読み、値が変わらなかったことを確かめます。 ( 出典

テスト1と2:自分のアドレスアドレステスト

Memtestは各メモリ位置をそれ自身のアドレスで書き込み、値が変化しなかったことを確認します。

テスト1は逐次的であり、テスト2は並列的である(すなわち、並行性を使用する)。

テスト3と4 移動反転テスト

本質的に、このテストは0をメモリにロードしてから、

  1. メモリの各位置を(最初の/最も低い位置から始めて)取ります。
  2. そしてパターンの逆を書く(私はそれが少し否定であると信じるだろうが、私はそれに関する少しのドキュメントも見つけることができなかった)。

ここでの目的は、すべてのビットとその隣接ビットを「0と1のすべての可能な組み合わせ」テストすることです。

テスト3は並行性を使用しませんが、テスト4は使用します。

テスト5:移動する反転、8ビットPat

これは移動反転法を再度実行しますが、今回はテスト0から1を8ビットブロックでウォーキングします。

テスト6:移動する反転、ランダムパターン

Memtestは、すべて0または1を歩く代わりに乱数を使用します。

テスト7:ブロック移動

これは楽しいです。パターンをメモリにロードし、それらを4MBのブロック単位で移動し、それらを検証します。

テスト8:移動反転、32ビットPat

テスト5と同じですが、代わりに32ビットブロックを使用します。これは実際にはあらゆる場所であらゆる可能な32ビット値をロードします。

テスト9:乱数

これは疑似乱数をメモリにロードして検証します。疑似乱数生成器の素晴らしいところは、それがあまりランダムではないということです(シードなしでCプログラムでprintf("%d", Rand());を実行して、これまでランダムに生成された41を手に入れたことがあれば、私の意味はわかります)。そのため、乱数シーダーをリセットしてジェネレータを再度実行することで検証します。

テスト10:モジュロX

20箇所ごとにパターン(すべて0またはすべて1)を書き込み、それ以外のすべての場所に補数を書き込んでから検証します。

テスト11:ビットフェードテスト

これはRAMをすべて1で(そしてまたすべて0で)ロードし、5分待って値のどれかが変更されたかどうかを調べます。

6
digitxp