Zen2 環境に於けるメモリテスト各種とその必要性

PC
この記事は約12分で読めます。
この記事は最終更新日より 1 年以上経過しています。
画像やリンクが無効になっている可能性もあるのでご了承下さい。
当記事の内容は Zen2 のみならず、Zen3 でも変わらず有効。

はじめに

 Zen2 (Ryzen 5/7/9 3xxx) 環境においてメモリは初代 Zen や二代目 Zen+ よりも大分相性的な何かが緩和されてかなり高速に動作するようにメモリコントローラや Infinity-Fabric 動作方法が改善されている。
 その為、DDR4-3200 以上の高速メモリも好んで購入されている事も増えているように見受けられる。

 購入したメモリが「for Ryzen」などと Ryzen 対応を謳うメモリモジュールであれば XMP を読み込んで適用させるだけで大半は簡単に安定した動作を行うのでそう大きな問題は発生しづらい。
 しかし、安いからという理由で Ryzen 向けではなくて Intel 環境向けのメモリを購入してしまった場合は XMP 適用でポンっと動作させるとその後、問題を抱えることが多い。そもそも XMP を読み込んだら起動しなくなるケースも。

 メモリを規定以上へと更にオーバークロックした場合や、Intel 向けメモリの XMP を読み込んだ環境ではメモリテストは必須のこと、ストレステストまで気にかけて行っておくべきだと筆者は思っている。

 今回はそのメモリテストとストレステストを行うツールをいくつか紹介してみたいと思う。

メモリを取り付けたら先ず Memtest86

 PC を組み立てた後やメモリ交換を行った後は先ずメモリモジュール自体の初期不良を否定する為にこの Memtest86 を 1 周でいいので実行しておきたい。2 周以上させるなら後述するストレステストをやった方がエラー検出率は高いハズ。
 ダウンロードは以下オフィシャルサイトより行い、USB ブートなメディアを作成して UEFI ブートさせるだけ。

MemTest86 - Official Site of the x86 Memory Testing Tool
MemTest86 is the original self booting memory testing software for x86 and ARM computers. Supporting...

 実行する際には先ず XMP Profile を適用しないメモリモジュール自体がサポートするネイティブな動作速度で実行する事。
 XMP を読み込んだ状態でテストを行い、エラーが発生しても相性問題が付きまとうからだ。

 この様に「Finished pass #1 (of 4)」と表示されれば初期不良は否定出来る。
 もしエラーが出た場合は差しているメモリを 1 枚ずつ同様にテストし、エラーがでるモジュールを確定させる。
 1 枚だけとか複数枚でエラーが確認出来たら初期不良扱いで返品交換でもしてしまえば良い。
 この時エラーが発生したメモリモジュールにマスキングテープでも貼って「これがおかしい」なんてマーキングしておくとサポート側も初期不良判定しやすくなるかなと思う。

 メモリモジュールのネイティブな動作速度でエラーを吐くというのは AMD 環境だろうと Intel 環境だろうと許されない。JEDEC で厳密に策定されたタイミングで動作するよう SPD に情報が記録されているので、それでエラーが吐くのは故障になる。

ストレステストの必要性

 メモリモジュールは動作温度や負荷により動作条件が一定では無い為、シチュエーションによって異なる挙動を示す。
 書き込んだはずのデータが読み取ったときには異なる値を返したりするとそれがファイル処理中であればファイルは壊れるし、プログラムの動作に使われている領域であればメモリアクセス違反などでブルースクリーンが発生しリセットが掛かってしまう。
 特に壊れたファイルが OS の基幹に関わる物だとメモリを XMP 非適用の JEDEC 準拠のタイミングに戻したとしても不安定なままで OS を再インストールしなくてはいけない状況にもなり得る。これを筆者は経験済み……

 そんなことが日常的に起こる PC では使い物にならないのでストレステストを行い、意図的な負荷を与えて安定性を証明し、安心して PC を使える状態に持っていくのが目的になる。

 ストレステストを行う為のソフトウェアは、普段そうそうそんな負荷は発生しないであろう処理を行うので自己責任の上で実行する必要がある。XMP を含め、OC とは自己責任の付きまとう物であったりするのでその辺は覚悟の上と言うことで。

XMP を読み込んだ OC や更に上の OC をした後のストレステスト

 XMP Profile を読み込んだ動作というのは基本的に「OC 扱い」になるので、出来れば Ryzen 対応メモリでも念のために実行しておいた方が安心かもしれない。
 Intel 用メモリの XMP を読み込んだーだとか Ryzen 向けでも XMP Profile よりも更に上のクロックへ OC した場合はストレステスト必須だと思う。

 ここではいくつかメモリのストレステストとなり得るフリーなツールとその使い方を簡単に紹介してみたい。

OCCT

 先ずは定番の OCCT。CPU の OC 時にも使える便利なソフト。

OCBASE/OCCT : Free, all-in-one stability, stress test, benchmark and monitoring tool for your PC
Ocbase is the home of OCCT, the most popular all-in-one stability / stress testing / benchmarking / ...

 メモリへの負荷が大きなテストは「CPU:OCCT」にて「大」と「AVX2」として 1 時間程度かそれ以上実行し続ける事でメモリと SoC のストレステストが行える。

 次のスクリーンショットは 1 時間回して No errors detected となり正常終了した図となる。
 CPU が定格でメモリが OC 状態でエラーが発生したのであれば、メモリの設定に不具合があると言う事になるので、設定を見なおす必要が出てくる。

Prime95

 こちらも同様に定番な Prime95。メルセンヌ素数を探索する為のソフトだが非常に高負荷な為、CPU やメモリのストレステストに用いられる事の方が多そうだ。

GIMPS - Free Prime95 software downloads - PrimeNet
GIMPS has free software available for Windows, Linux, FreeBSD, Mac OSX. Contribute to the effort by ...

 主にメモリのテストには次のスクリーンショットの様に出てくるメニューから Blend を用いる事が多い。これを 1 時間以上実行し続けてエラーが発生しなければ良い。
 もしエラーが発生して演算の停止したスレッドが確認出来たらメモリ設定を見なおす必要があると言う事になる。

TestMem5 1usmus_v3

 Ryzen のメモリ周りは 1usmus 氏無しには語れない部分があったりすると考えている人なので、TestMem5 のこの方が書いた設定 1usmus_v3 を使用したストレステストもまた有用であると考えている。

 1usmus_v3 設定の周回数を書き換えて 5 cycle の実行を行った結果が次の物。
 当然エラーが発生してしまえば停止するので、メモリ周りの設定を見なおす必要が出てくる。

 TestMem5 1usmus_V3 をダウンロードする
 こちらのファイルをダウンロード後、TM5.exe を管理者権限で実行すれば自動的に実行される。

TestMem5 Extreme1@anta777

 こちら Extreme1 の設定はより強力なストレステストが可能なプロファイルとなっている。
 上記 1usmus 氏の設定よりも負荷が高く、時間も掛かるがエラー検出率に定評がある。

 TestMem5 Extreme1 をダウンロードする
 こちらのファイルをダウンロード後、TM5.exe を管理者権限で実行すれば自動的に実行される。

DRAM Calculator for Ryzen (HCI Memtest)

 これまた 1usmus 氏の開発した手動メモリ OC に必須なツール。
 この中に MEMBench があるのだが、そこから Memtest が行える。このテストでは同梱の HCI Memtest をスレッド数分だけ同時起動させてメモリのテストを行う物で、エラー検出率でいえば OCCT や Prime95, TestMem5 よりも更に強力な物になっている。

NEW!!! DRAM Calculator for Ryzen邃「 1.7.3 (overclocking...

 DRAM Calculator for Ryzen を起動したら上部タブより MEMBench をクリックし、MEMBench mode のプルダウンメニューから Memtest を選び、Task scope を 100 とか 400、Stop at (task mode) を Single で実行する。
 この時、全スレッドが正しく動作している事を確認する。どれか一つでも 0.0 から動かないスレッドがある場合はテストとして不正確なものになるので、全スレッドが動作するまで繰り返し StopRun をクリックする事になる場合もある。

 このメモリテストは OCCT Large AVX2, Prime95 Blend 各 1 時間ノーエラー、TestMem5 1usmus_v3 5cycle ノーエラーの設定でもたったの 7 分実行しただけでエラーを検出してしまった。幸いにも SoC 電圧と DIMM 電圧を盛っただけで解消出来たから良かった物の、相当焦った記憶が残っている。

 使用されている HCI Memtest の Manual によれば Single 10% 完走で 60% のエラーを検出。100% 完走で 95% のエラーを検出し、400% 完走でほぼ全てに近いエラーを検出する事が可能だそうな。推奨は一晩放置だそうで。
 メモリの帯域やレイテンシにもよるが、筆者環境 (DDR4-3733 CL16 32GB) では 400% 完走に 235 分も掛かったので、テストは寝るときにセットして朝を迎えると良いだろうと思う。気になって中々寝付けなかったが筆者はそうしてみた。

Karhu RAM Test

 こちらはフリーウェアではなく、有料のソフトウェアお値段は €9.99 する。2020/01/28 時に購入したら Paypal 経由の支払いにて日本円で 1,253 円だった。
 支払い完了後に送られてくるメールに記載されている URL からファイルをダウンロード、ライセンスキーを入力して使用可能となる。

RAM Test – Karhu Software
The ultimate memory stress test program. Check your PC for faulty DRAM modules and test DDR5 overclo...

 Karhu RAM Test は HCI Memtest に比べて実行が容易で且つ高速、エラー検出能力にも定評がある為、どの様な物かと購入してみたメモリテスト用のプログラムになる。

 起動すると非常にシンプルな UI が表示されるので Start をクリックするだけで OK。Advanced タブにオプションが存在するが、基本いじる必要はない。

 実行するにあたっては実行時間でみるか Coverage でみるかの二択になるハズ。
 上記スクリーンショットは取り敢えず時間を 2 時間として実行してみた結果となる。ノーエラーで完了しているのでほぼほぼ問題はないであろうと分かった。
 時間を見た実行はメモリ容量によって左右されるので、一般的には Coverage をみて停止させるといいかも。
 Coverage 100% ならメモリ容量分のテスト。200% なら容量 2 倍分のテストという具合に増えれば増えるほどエラー検知率も上がる。

 Karhu RAM Test の FAQ より Coverage を見た場合のエラー検知率を引用すると次の通りになる。
 万全を期すなら Coverage 6400% ほどみておけば良いと思われる。

Q: How much coverage is enough?
A: Error detection rates by test coverage*:
Coverage ≤ 100 %: 64,57 %
Coverage ≤ 200 %: 75,79 %
Coverage ≤ 400 %: 82,68 %
Coverage ≤ 800 %: 91,34 %
Coverage ≤ 1600 %: 96,06 %
Coverage ≤ 3200 %: 98,03 %
Coverage ≤ 6400 %: 99,41 %

 実際に使って見た感じ、DRAM Calculator for Ryzen の Memtest (HCI Memtest) で Single 400% をクリアしたセッティングでも Karhu RAM Test はエラーを検出したのでエラー検出能力は有料だけのことはあるなと言う印象だ。
 メモリを手動でチューニングを頻繁に行う様な人であれば買って置いても損は無い。

どこまでテストするか?

 問題はここ。ストレステストはいくつかの手段があってそれぞれどれだけ時間をかけてやるかと手法は多岐に渡る。
 最初期の Memtest86 だけは必須としてもその後、どこまで根詰めてエラー無し安定と定義するかが問題になる。
 理想は全部やってみるなんだけど時間が掛かりすぎる。

 筆者の様に OCCT と Prime95 を各 1 時間完走、TestMem5 1usmus_v3 設定 5cycle 完走として、BSoD やファイル破損も起こったことが無い安定していたと思っていた環境でも DRAM Calculator for Ryzen の Memtest mode で速攻エラーを吐いたという経験上、DRAM Calculator for Ryzen の MEMBench にある Memtest mode を絡めることを推奨したい。Task Scope は取り敢えず 100% で手っ取り早くやるか一気に 400% 設定で完走させてしまうかといった具合で。
 それに加えて OCCT か Prime95 各 1 時間、TestMem5 1usmus_v3 設定の 3 つからどれか 1 つ選んでテストしてみるというのが良いのかも知れない。

 あまり執拗にやり過ぎると現状のメモリ設定で安定しているかどうか調べるという目的が、いつの間にかストレステストをする事だけが目的になっていたりするので要注意。

まとめ

 筆者なりのメモリ周りのテストをまとめると次のような感じになる。

  • メモリの OC やストレステストの実行は自己責任
  • PC 組み立て直後はメモリモジュールのネイティブ動作で Memtest86 による初期不良チェック必須
  • XMP Profile 適用の OC 後も Memtest86 で一次テストとするのは有効
  • 特に XMP Profile 以上の手動 OC 後はストレステストも必須
  • ストレステストオススメは DRAM Calculator for Ryzen の Memtest mode より Task Scope 400% に「OCCT, Prime95, TestMem5 1usmus_v3, TestMem5 Extreme1」からどれか一つを組み合わせた 2 パターン
  • Karhu RAM Test を購入した場合は Karhu RAM Test で Coverage 6400% 以上を完走後、OCCT (大) AVX2 を 1 時間、または TestMem5 Extreme1 デフォの 3Cycle を実行する組み合わせがかなり有効だと思われる。

 最終的に全てに於いてノーエラーであればそのメモリ設定はド安定であると言っても過言ではない状態となる。

おわりに

 もしエラーを吐いた場合の設定の緩め方に関してはケースバイケースだから言及しないが、DRAM Calculator for Ryzen を有効活用してサブタイミングや SoC 電圧、DIMM 電圧を色々見なおすと良いだろう。
 こうした手間が面倒でよく分からないしーという方はちょっとお金を出して DDR4-3200 や DDR4-3600 あたりの Ryzen 対応 OC メモリの購入を強くおすすめする。
 購入する際には使用しているマザーボードのメモリに関する QVL (動作確認済みリスト) のチェックも行っておくと更に安全かもしれない。

  • 2020/02/07 — Karhu RAM Test に関して追記した。
  • 2021/01/24 — TestMem5 Extreme1 の項を追記、「まとめ」を微修正した。
著者プロフィール
ぶっち

本格的に PC へ触れ始めてたのは 1990 年位から。
興味は PC 全般。OS は Windows と Linux などを嗜む。
プログラマやネットワークエンジニアを経てフリーに活動している 2 児の父な 40 代半ばのおじさんです。

ぶっちをフォローする
ぶっちろぐ

コメント

This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.