GNU/Linux >> Linux の 問題 >  >> Linux

Linux はメモリをスクラブできますか?

これは実際には悪い考えです。クイック スイープでは、メモリを確実にテストすることはできません。これが、memtest86 のようなソフトウェアが異なるビット パターンの複数のパスを使用してメモリをテストする理由です。解決策:

<オール>
  • memtest86 でメモリをテストします。できれば長時間のテストです。一晩実行したままにします。長い時間がかかります。

  • 不良メモリが検出された場合は、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
    
    

    さらに、メモリ内の 1 ビット エラーを修正し、2 ビット エラーを自動的に検出する ECC メモリを使用できます (また、修正不可能なメモリの問題が発生した場合は、カーネルからログ メッセージを取得します)。


    投稿と回答は問題を誤解しています。メモリ スクラビングは、訂正可能なシングル ビット エラーが訂正不能なダブル エラーにならないようにすることを目的としています。スクラバーは物理メモリをすべて使用するだけです (キャッシュ ミスを強制的に行う)。シングル ビット エラーがある場合は、それらが修正されます (また、修正では、コンペア アンド スワップを使用して正しい値を書き換える必要があります)。したがって、エラーはクリアされます。

    そうしないと、既に 1 つのエラーがある単語に 2 つ目のエラーが発生した場合、単語全体が修正できなくなり、OS は抜本的な処理を行う必要があります。

    スクラブがないと、(コードページのように) 読み取られるが書き込まれないメモリは時間の経過とともにエラーを蓄積する可能性があるため、スクラブは重要です。


    答えはイエスです。これは透過的に行われます (エラーを検出するための ECC メモリがあり、安全に動作し続けるためのカーネル バージョンが少なくとも 2.6.30 である場合)。

    基本的に、メモリはプロセッサからの読み取りごとにチェックされ、定期的に*スクラブされて、エラー修正コード (ECC) との整合性がチェックされます。エラーが発生した場合、Machine Check Exception が発生し、ログに記録され、mcelog (http://www.mcelog.org/) によって取得されます。

    エラーが修正可能であった場合は、「リーキー バケット」カウンターがインクリメントされ、頻繁に故障する物理 DIMM が透過的に別の DIMM に交換されます。したがって、メモリ ページは新しい場所にコピーされ、仮想メモリ アドレスは新しいページを指すように更新され、古いページは OS によって使用されないようにマークされます。

    これは、Linux では「ソフト オフライン」と呼ばれます (Solaris ではメモリ ページのリタイアメントです。他の OS については知りません)。

    ただし、エラーが修正できなかった場合、いわゆる「ハード オフライン」が発生します。つまり、メモリ ページが通常のオペレーティング システムのメモリ管理から削除され、アプリケーションが強制終了されます (NB :キャッチ可能な SIGBUS シグナルによって、どこにあるかがわかります)。エラーが発生しましたが、気にせずキャッチしようとすることはめったにありません。メモリページがファイルからマップされてクリーンな場合、OS はプロセスを強制終了する代わりに、別の物理的な場所で透過的に再読み込みすることもできます。

    mcelog で詳細を読むことができます。多くの構成オプションがあり、他の動作をトリガーしたり、オプションを取得したり、何を読むべきか、システムで mcelog が実行されていることを確認する方法についての他のリードを取得したりできます。

    * スクラビング、または「パトロール スクラビング」は、メモリの読み取り、エラーの ECC に対するチェック、およびエラーが発見された場合の修正されたメモリ ワードでの上書きで構成されます。パトロール スクラビングという用語は、「デマンド スクラビング」と呼ばれることもある、メモリ読み取りのエラーで誤ったデータを上書きすることに反対して使用されます。スクラビングは、通常 BIOS を通じて有効にできるハードウェア手順です。


    Linux
    1. Linux で Dota 2 をプレイできますか?

    2. VHD から Linux を起動できますか?

    3. メモリ帯域幅を観察するにはどうすればよいですか?

    1. Linux カーネルからメモリのブロックを予約するにはどうすればよいですか?

    2. Linux プロセスのメモリをファイルにダンプする

    3. Linux で ECC エラーの通知を受け取るにはどうすればよいですか?

    1. Linuxのメモリ使用量

    2. Linux –実際のメモリ使用量?

    3. Linuxでファイルをシンボリックリンクするにはどうすればよいですか?