web-dev-qa-db-ja.com

シングルビットメモリエラーはLinuxにどのように影響しますか?

私は3年前のAMDAthlon 5000システムを再構築しています。このシステムには、「DDR2800」というラベルの付いた4つのメモリスロットを備えた「ASRockNF7G-FullHD」マザーボードがあり、合計容量はRAMと言われています。 550W PSと500GBディスクに加えて、 2ea。2GBDIMM sの「一致したペア」を購入しました。残念ながら、いくつかの場所でシングルビットエラーが持続します(図を参照)。

このようなメモリを備えたこのシステムでLinuxを実行するとどのような影響がありますか? つまり、不安定性、検出されないエラー、またはパフォーマンスの低下の可能性はどのくらいありますか? OSのクラッシュ、セグメンテーション違反、その他のアプリケーションの障害などはありますか? RAMの不良チャンクをマップまたは無効にする方法はありますか?

memtest86 picture

4つのメモリスロットにはDDRII_1,2,3,4というラベルが付いていることに注意してください。 1&2は黄色、3&4はオレンジです。上のMemtest86の写真は、スロットが(新しい、古い、新しい、古い)順序で埋められたときに撮影されました。エラーは、図と同じメモリアクセスレート(約2.9GB /秒)で、フィルオーダー(古い、古い、新しい、新しい)の同様のアドレスでも発生します。 (old、old、-、-)または(old、-、old、-)または(new、-、new、-)を入力すると、数時間のテストでエラーは発生しませんでしたが、(new、new、-、-)何らかの理由でBIOSにアクセスできず、BIOSを経由せず、リセットボタンは効果がなく、ビデオ信号もありませんでした。 3つのスロットがいっぱいになると、例:(new1、old、new0、-)1.5時間のテストで1つのエラーが発生しました(RAMの最初のGBにあります)。 (old、old、new0、-)を使用すると、2時間のテストでエラーは発生しません。 6GB構成でのパフォーマンスの問題は、わずか1.7GB /秒のメモリアクセスレートです。

質問の要約:メモリを使用してこのシステムでLinuxを実行すると、シングルビットエラーが発生した場合にどのような影響がありますか? RAMの交換以外の修正はありますか?

  1. デュアルチャネルメモリは常にペアでインストールする必要があるため、メモリアクセスレートは3チップのみで低くなります。

  2. シングルビットエラーは、ほとんどすべてのことを引き起こす可能性があります。それがどれほど可能性があるかはあなたの記憶がどれほど悪くなったかに依存します、しかしそれらのチャンスをとることは良い考えではありません。システムの不安定性はあなたが望むべきものです。システムクリティカルファイル(またはあなたにとって重要な他のファイル)をメモリのこの部分に保存し、それを変更して元のファイルを上書きすることもできます。したがって、1ビットエラーがOS全体を台無しにする可能性があります。

  3. メモリースティックの1つだけに欠陥がある可能性があります(おそらくnew1)。 PYGのメモリには生涯保証が付いているので、動作するものを試してみることができます。 PYGの記憶とカスタマーサービスについて非常に悪いことを聞いたことがありますが、はっきりとはわかりません。

9
Dennis

前述のように、シングルビットメモリエラーは、ほとんどすべての問題を引き起こす可能性があります。または、まったく気付かない場合もあります。

以前に悪いメモリスティックがあり、RAMの悪い点は、Windowsが時々機能することを意味していましたが、かなり定期的に破損していました。特定の場所に何が割り当てられるかを予測することはできません。 of RAMシステム内(OSがメモリを割り当てる方法による)そして運が良ければ重要でないプログラムを壊したり、1つのグラフィックを壊したりするだけかもしれませんが、それが起こる可能性は十分にありますパフォーマンスが大幅に低下し、RAMの不良スティックを使用してデータを危険にさらしています。

Linuxは BadMem をサポートしています。これは、私が正しく覚えていれば、メモリの不良ブロックを「マップアウト」できることを意味します。それが最新のカーネルをサポートしているかどうかを調べて、それがあなたに役立つかどうかを確認することはできませんでした。

私のアドバイスは次のとおりです。短期的にはデータの損失と一般的なシステムの不安定性に備え、長期的にはどのスティックに欠陥があるかを特定して交換する必要があります。

5
Mokubai

プログラムを実行できるようにするために、コンピュータはメモリから何をすべきかについての指示をフェッチします。 (プログラムはメモリにロードされます)。命令は単なる数字のシーケンスであり、コンピューターの言語です。

1 =コピー、3 =から、4 =からへの簡単な言語を作成しましょう

1(コピー)、50,3(から)、100,4(から)、200;

したがって、数列1,50,3,100,4,200は、コンピュータの場合、メモリ位置100からメモリ位置200に50バイトのデータをコピーすることを意味します。これは、50個のソックスをある引き出しから別の引き出しに移動するのと同じです。

ここで、メモリが誤動作していて、シングルビットエラーがある場合、数値はたとえば1から129に変わる可能性があります。したがって、上記のシーケンスの任意の数値が変更される可能性があると仮定すると、多くの興味深いエラーが発生する可能性があります。 50が35または188に変更された場合、またはコピーされるデータの量が間違っており、メモリ内の他のデータ(命令である可能性があります)を上書きする可能性があることは非常に簡単に理解できます。 1が5に変更されると、コンピュータは何かをコピーすることになっていることさえ理解できない可能性があります。したがって、示されているように、単一ビットエラーは、単一の障害だけでなく、最初のエラーによって引き起こされる他のエラーにもつながる可能性があります。

Linux(またはその他のオペレーティングシステム)は、基本的に、コンピューターで実行される他のプログラムと同じです。つまり、コンピューターに何をするかを指示する一連の数字です。このシーケンスが破損した場合、プログラムはコンピュータに意図したとおりの動作をさせないため、あらゆる種類の問題が発生する可能性があります。

また、音楽、ビデオ、または写真も単なる数字のシーケンスであるため、同じ原則がそこにも適用されることを忘れないでください。ファイルによっては、破損が目立たない場合があることを追加する価値があります(たとえば、画像の不良ピクセル)が、ファイルに問題がないことを意味するわけではありません。その特定の文字が悪いメモリ位置に保存されている場合、Webページで読んだテキストにタイプミスがあるかもしれません。

シングルビットエラーを回復するように設計され、2ビットエラーを検出できるRAMチップが存在します(ECCRAM)。

うまくいけば、これが、データや命令を含むメモリが破損した場合にオペレーティングシステムが機能しない理由を説明します。これを解決する最も安全な方法は、壊れたラムを交換することです。一方、memmapカーネルパラメータを使用して不良メモリ領域をマップすることをお勧めします(以下は、別の質問で得た回答からコピーしたものです)。

 memmap=nn[KMG]$ss[KMG]
            [KNL,ACPI] Mark specific memory as reserved.
            Region of memory to be used, from ss to ss+nn.
            Example: Exclude memory from 0x18690000-0x1869ffff
                     memmap=64K$0x18690000
                     or
                     memmap=0x10000$0x18690000
3
Waxhead

私も同じ問題を抱えていましたが、利用可能な回答がわかりにくく不完全であることがわかったので、背景をできるだけ少なくして、ステップバイステップのガイドをまとめました。

  1. 「Badram」出力で(できれば起動可能な外部メディアから)Memtest86 +を実行します。 Memtest86 +が起動したら、次のように入力します。
  2. 「c」(「構成」)、次に
  3. 「4」(「エラーレポートモード」)、次に
  4. 「3」(「悪いRAMパターン」)、次に
  5. 「0」(「続行」)。
  6. 「badram =」で始まる行に続く出力をコピーします。
  7. ターミナル(コマンドライン)を開きます。
  8. 「grub」ファイルが置かれているディレクトリに移動します。たとえば、「cd/etc/default」です。
  9. 「root」権限で、テキストエディタを使用して「grub」ファイルを開きます(「root」としてサインインしていない場合は、「Sudo」を使用します。「root」パスワードの入力を求められます):「Sudonano grub」(この例では、ユーザーを「root」に変更し、「nano」テキストエディターでファイル「grub」を開きます。).
  10. Memtestについて説明しているセクションを見つけてください。
  11. 最後の行のコメントを解除します(「#」、「>」、「!」など、行の先頭にある特殊文字を削除します)。これによりアクティブになります(たとえば、「#GRUB_BADRAM =」は「GRUB_BADRAM =」になります)。
  12. サンプルアドレス(「GRUB_BADRAM =」に続く)を、Memtest86 +からコピーした「badram =」出力(たとえば、「0x98f548a0,0xfffffffc」)に置き換えます。
  13. 変更を保存(または「書き出す」)します。
  14. ターミナル(コマンドライン)で、「Sudo update-grub」と入力して、「grub.cfg」ファイルを更新します。
  15. リブート。
2
user392465

今日の記憶(たとえば、少なくとも10年から現在まで)にはすべてエラー訂正が組み込まれているはずです。それが定期的に失敗している場合、何かが非常に間違っており、いつでも壊滅的に失敗する可能性があります。

失敗したRAMをできるだけ早く交換するようにしてください。

0
vonbrand