Memtest86 +およびVirtualBoxを使用したメモリのテスト

アクティビティの種類ごとに、ハードウェア、さまざまな構成の多数のコンピューター、特にテストする必要があります。 当然、このプロセスを可能な限り自動化する必要があります。 これらの目的のために、PXE経由のディスクレスLinuxダウンロードを使用します。PXEでは、さまざまなテストの対応するスクリプトが自動実行用に準備され、デーモンはシステムの状態を監視し、サーバーでの監視は結果を表示し、何かが間違っているかどうかを誓います。 一般的に、誰もが満足することができますが、RAMをチェックするプロセスが好きではありませんでした。 Linux memtesterのネイティブは、主観的に、何かを見つけるまでに非常に長く動作し、常にそれを見つけるとは限りません。 カーネルの構築またはアーカイブの再生は、システムの安定性を確認するための良い方法ですが、メモリの不具合を常に責めるとは限りません。 そして、最も効果的な方法は、最終的に、古き良きMemtest86です。 しかし、それでは各コンピューターを個別に監視する必要があり、自動化プロセス全体が失われ、コンピューターが多すぎると時間がなくなり始めます。 残念ながら、あらゆる種類のcなkvm'amiが奪われました。



これを反映して、仮想化に目を向けました。 試してみませんか? 少なくともlulzのためだけに。 メモリは同じように使用されます。







これらの目的のために、VirtualBoxで最も単純な構成の仮想マシンを作成します。ネットワークなし、ハードドライブなし、MemTestのイメージが接続されているCD-ROMのみです。 GUIまたはコンソールで作成します。

VBoxManage createvm --name memtest --ostype Linux --register
      
      







Memtestのブートイメージをマシンに接続します。 5番目のバージョンのベータ版を使用しました。公式フォーラムからダウンロードできます。

 VBoxManage storagectl memtest --name "IDE Controller" --add ide VBoxManage storageattach memtest --storagectl "IDE Controller" --port 0 --device 0 --type dvddrive --medium /home/user/mt500b1.iso
      
      







開始する前に、メモリからLinuxキャッシュをクリアします。

 sudo sync sudo echo 3 > /proc/sys/vm/drop_caches
      
      







検証のために割り当てる空きメモリの量と、オペレーティングシステムのニーズに応じて残すメモリの量を決定します。

 a=`free -m | grep "cache:" | awk {'print $4'}` b=$(($a*20/100)) free=$(($a - $b))
      
      





メモリが少なすぎると、Linuxは不安定になり始めます。特に、スワップのないディスクレスシステムの場合です。



memtestの5番目のバージョンはマルチコアをサポートしています。これを使用し、必要に応じてテストを行います。

 cpus=$((`lscpu | grep "Core(s) per socket:" | awk {'print $4'}`*`lscpu | grep "Thread(s) per core:" | awk {'print $4'}`-1)) if [ $cpus -lt 1 ]; then cpus=1 fi
      
      







マシンに適切な変更を加えます。

 VBoxManage modifyvm memtest --memory $free --cpus $cpus --ioapic on
      
      







そして、コンソールモードでバックグラウンドで実行します。

 VBoxManage startvm memtest --type headless
      
      







次のコマンドを使用して、仮想マシンをオフにできます。

 VBoxManage controlvm memtest poweroff
      
      







VirtualBoxデバッガーを使用して、テストのステータスを監視します。

 VBoxManage debugvm memtest info vgatext
      
      







端末への出力の例:

非表示のテキスト
 -------------------------------------------------------------------------------- Memtest86+ 5.00b1 | Intel(R) Pentium(R) CPU G620 @ 2.60GHz CLK: 2600 MHz (X64 Mode) | Pass 10% ### L1 Cache: 64K 39386 MB/s | Test 4% # L2 Cache: 6144K 50971 MB/s | Test #6 [Moving inversions, random pattern] L3 Cache: None | Testing: 0K - 32M 32M of 1853M Memory : 1853M 14939 MB/s | Pattern: e2e5e6e8 R | Time: 0:00:16 ------------------------------------------------------------------------------ Core#: 0 | RAM: 0 MHz (DDR3- 0) - BCLK: 650 State: - | Timings: CAS 0-0-0-0 @ 64-bit Mode Cores: 1 Active / 1 Total (Run: All) | Pass: 0 Errors: 0 ------------------------------------------------------------------------------ SS (ESC)exit (c)configuration (SP)scroll_lock (CR)scroll_unlock --------------------------------------------------------------------------------
      
      







これで、時間、パスの数、見つかったエラー、その他の興味深い情報を見つけるのに便利な方法で端末への出力を解析するだけで十分です。 そして、それに応じて、すべてが考え出されたために、このビジネスの制御スクリプトを作成します。



たとえば、エラーがある場合、画面の「スクリーンショット」がログに書き込まれ、対応する警告がサーバーに送信されます。

 if [[ `VBoxManage debugvm memtest info vgatext | grep Errors: | awk {'print $13'}` > 0 ]];then "$path"/sendmess flog "`VBoxManage debugvm memtest info vgatext`" "$path"/sendmess nonstoperr "[error] Memtest" sleep 15 fi
      
      







私はこのビジネスを、最高品質のメモリを搭載していない複数のコンピューターでテストするために始めましたが、結果はすぐに現れました。

非表示のテキスト
 -------------------------------------------------------------------------------- Memtest86+ 5.00b1 | Intel(R) Core(TM) i3-2130 CPU @ 3.40GHz CLK: 3383 MHz (X64 Mode) | Pass 7% ## L1 Cache: 64K 51253 MB/s | Test 77% ############################## L2 Cache: 6144K 51253 MB/s | Test #5 [Moving inversions, 8 bit pattern] L3 Cache: None | Testing: 2048M - 3042M 994M of 3042M Memory : 3042M MB/s | Pattern: 80808080 | Time: 0:00:38 ------------------------------------------------------------------------------ Core#: 012 | RAM: 0 MHz (DDR3- 0) - BCLK: 845 State: --- | Timings: CAS 0-0-0-0 @ 64-bit Mode Cores: 3 Active / 3 Total (Run: All) | Pass: 0 Errors: 2 ------------------------------------------------------------------------------ Tst Pass Failing Address Good Bad Err-Bits Count CPU --- ---- ----------------------- -------- -------- -------- ----- ---- 3 0 0004396be2c - 1081.6MB 02020202 02020206 00000004 1 1 3 0 0004396bd3c - 1081.6MB 02020202 0202020a 00000008 2 1 (ESC)exit (c)configuration (SP)scroll_lock (CR)scroll_unlock --------------------------------------------------------------------------------
      
      







確認するには、Memtestを通常モードで再起動します。

本当に間違いがあります








この方法は驚くほど機能します。 したがって、私は他の人と平等に自分のためにそれを使用しています。 したがって、すでに多くのメモリバーにエラーがあることが明らかになりました。



長所:



確かに欠点があります:





誰かがこの記事を参考にしてくれることを願っています。 まあ、または少なくとも笑顔。



All Articles