memtest実行の統計をどのように解釈しますか?


63

私はここに欠陥のあるメモリモジュールがあると思われるノートブックを持っています。したがって、Memtest86 +をダウンロードして実行しました。

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

memtest

画面上の数字をどのように解釈しますか?約4時間実行した後、パス7になりました。

特に、何が

  • テスト番号
  • エラーの数
  • ECCエラーの数

示す?メモリエラーの健全な値は何ですか?どの時点でメモリの交換を検討する必要がありますか?


3
エラーが発生してもメモリを使い続けたいですか?
ダニエルベック

4
アドバイスのみ:)。memtestのエラーを無視しないでください。RAMにわずかなエラーがあるだけで、オペレーティングシステム全体が破損し、データが失われる場合があります。
ルーフォエルマグフォ

2
一般に、大きな点滅する赤い領域が表示されない場合、それはすべて良いです:

5
エラーがメモリ内の特定の1つの領域に限定されており、Linuxを実行している場合は、gquigs.blogspot.com / 2009/01 / bad-memory-howto.htmlで指定されているように、それらの領域を無視するようカーネルに指示できます。 Windowsを実行している、エラーが一貫した領域にない、または多すぎる場合、新しいRAMを取得する必要があります。
user55325

4
また、メモリスティックに障害が発生した場合、より多くの領域が故障する可能性があります。メモリは、データ破損やシステムクラッシュの問題を繰り返し捜索する費用に比べて安価です。
Zds

回答:


82

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と0]

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

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

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

不良セクタは時々動作し、別の時点では動作しない場合があるため、MemTestを数回実行することをお勧めします。完全なパスは、合格した完成テストシリーズです。(上記のテストシリーズ1〜11)エラーなしで合格するパスが多いほど、MemTestの実行はより正確になります。私は通常、5つのパスを実行して確認します。

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

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


エラーの説明

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

エラーのあるMemtest画面

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

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

4番目(Good)と5番目(Bad)の列には、それぞれ書き込まれたデータと取得されたデータが表示されます。両方の列は、障害のないメモリでは等しくなければなりません(明らかに)。

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

7番目の列(Count)は、同じアドレスと障害ビットを持つ連続エラーの数を示します。

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


エラーが見つかった場合

MemTestがエラーを発見した場合、どのモジュールに障害があるかを判断する最良の方法は、このスーパーユーザーの質問とその受け入れられた回答で説明されています。

除去のプロセスを使用します-モジュールの半分を削除し、テストを再度実行します...

障害がない場合は、これら2つのモジュールが適切であることがわかっているため、それらを脇に置いて再度テストします。

障害がある場合は、再度半分に減らし(4つのメモリモジュールの1つまで)、再度テストします。

ただし、一方がテストに失敗したからといって、もう一方が失敗しないと仮定しないでください(2つのメモリモジュールで障害が発生する可能性があります)-2つのメモリモジュールで障害が検出された場合、それら2つを個別にテストします。

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


説明ありがとう!エラーに対応する正確なRAMモジュールを見つける方法を教えてください。に失敗したアドレスがあり000c34e98dc - 3124.9MBます。なぜそんなに大きなチャンクサイズなのか?PCに2x1Gbおよび2x2Gbモジュールがあります。失敗の原因を見つける方法は?
ミハイル

@Mikhailこの質問とその受け入れられた答えを紹介したいと思います:superuser.com/questions/253875/…-BloodPhilia
1

エラー0はRAMの故障を意味するものではありません。RAMスティックが100%のスコアでmemtestに合格した場合があり、それを交換するだけでトリッキーな問題を解決できました。
そのブラジル人ガイ

3
16進アドレスの後のMB単位の数値はエラーのサイズではなく、MB単位のエラーの場所です。1つのエラーのサイズは常に1ワードになると確信しています。これは、それがメモリに書き込む内容のサイズだからです。
ジェリード

6

エラー数

テストを通過するときに、いずれかのテストでメモリが失敗すると、エラーの数が増加します。正しく思い出せば、テストに失敗したアドレスの数をカウントします。

ECCエラーの数

ECCメモリは、データの破損を防ぐために使用される特別な種類のメモリチップです。あなたのECC Errs列は、ECCによって修正されたどのように多くの問題をカウントします。

(ECCは低速で高価であり、基本的にはRAMをスワップアウトするのが面倒なミッションクリティカルなシステム向けです。)

試験番号

Memtestは、Memtest86 Webサイトに記載されているさまざまな種類の記憶テストを実行します。簡単な英語の翻訳と同じように:

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

Memtestは00000001最初のメモリ位置に書き込み、次のメモリ位置など00000010に書き込み、8バイトごとにこのパターンを繰り返します。次に、メモリを読み取り、値が変更されていないことを確認します。(ソース

テスト1および2:自己アドレスアドレステスト

Memtestは、各メモリロケーションに独自のアドレスを書き込み、値が変更されていないことを確認します。

テスト1はシーケンシャルで、テスト2は並行です(つまり、並行性を使用します)。

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

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

  1. メモリの各場所を取得します(最初/最も低い場所から開始)。
  2. そして、パターンの逆を書きます(ビットごとのNOTであると信じていますが、それに関するドキュメントは見つかりませんでした)。

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

テスト3は同時実行を使用しませんが、テスト4は同時実行を使用します。

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

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

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

Memtestは、すべて0またはウォーキング1の代わりに乱数を使用します。

テスト7:ブロック移動

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

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

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

テスト9:乱数

これは、擬似乱数をメモリにロードして検証します。疑似乱数ジェネレーターの素晴らしい点は、あまりランダムではないことです(printf("%d", rand());シードせずにCプログラムで実行して、oh-so-random 41を取得したことがある場合は、意味がわかります)。そのため、乱数シーダーをリセットし、ジェネレーターを再度実行して検証します。

テスト10:Modulo-X

20のロケーションごとに、パターン(すべて0またはすべて1)を書き込み、他のすべてのロケーションに補数を書き込み、検証します。

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

これは、すべて1でRAMをロードし(再びすべて0で)、5分間待機して、値のいずれかが変化するかどうかを確認します。


6

テスト番号:memtestが現在実行している特定のテストの番号。それらの多くがあります。

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

ECCエラー:ECCによって修正されたエラーの数。チップセット/メモリにはECCがないため、この数値は重要ではありません。

メモリに0を超えるエラーがいくつかある場合は、それを交換する必要があります。

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

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

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

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.