第 63 章 仮想メモリーテスト (vmemtest)
vmemtest は、仮想メモリー (物理メモリーとディスクのスワップパーティションを合わせたもの) を検査します。
注 - このテストは、中止してもすぐに停止しないことがあります。
このテストは、Solaris valloc (ページ境界揃え) システムコールを使用して、仮想メモリーの割り当て、書き込み、読み取り、比較を行います。これらの操作は、通常はシステムにページング動作を大量に発生させるため、オぺレーティングシステムに重い負荷をかける環境をシミュレートすることができます。このテストは、ECC パリティーエラー、メモリー読み取りエラー、アドレス指定の問題も検出し、障害に対応する仮想メモリーアドレスを表示します。
注 - Sun BladeTM システムにおいて、vmemtest と fwcamtest を同時に実行しないでください。テストが失敗する原因となります。
vmemtest のスワップ空間の条件
このテストは、使用可能なスワップ空間の大部分を使用するため、オぺレーティングシステムに大きな負荷がかかります。SunVTS テストを開始した後に SunVTS 以外のプロセスを起動する場合は、vmemtest のスワップ空間予約オプションを使用してください。スワップ空間の条件についての詳細は、『SunVTS 4.5 ユーザーマニュアル』の「スワップ空間条件」の説明を参照してください。
vmemtest のオプション
ダイアログボックスを表示するには、システムマップにあるテスト名を右クリックし、Test Parameter Options を選択します。システムマップにこのテスト名が表示されない場合は、グループツリーを展開すると表示される場合があります。展開しても表示されない場合は、このテストに合ったデバイスがシステムに含まれていない可能性があります。詳細は、『SunVTS 4.5 ユーザーマニュアル』を参照してください。
図 63-1 vmemtest のテストパラメタオプションダイアログボックス
表 63-1
vmemtest のオプション
オプション
|
説明
|
Mode
|
vmemtest には、2 つのモードがあります。
ストレステストオプションが選択されると、valloc で割り当てられた全システムメモリーを確保し、その先頭から最後まで書き込みを行います。書き込みを終えると、1 ロングワードずつ読み取って、元のパターンと比較されます。
|
Reserve
|
Reserve オプションは、vmemtest のテスト対象から除外 (予約) するメモリー量を指定します。予約された空間は、SunVTS テストと並行して動作している他のプロセスに使用されます。Reserve オプションを使用することで、デフォルトに追加してメモリーを予約することができます。このオプションは、特定のインスタンスだけに適用されます。このインスタンスによるテストに割り当てられたメモリーよりも大きいメモリーを予約しようとすると、テストは失敗します。
|
Test Amount
|
デフォルトとは異なる仮想メモリー量を指定して、テストできます。使用できるメモリー量よりも大きな値を指定した場合は、vmemtest およびその他の実行中のテストは失敗することがあります。
|
vmemtest の構成
|
Configuration フィールドに示されるメモリー量は、swap
-s コマンドが返す、使用中のスワップ空間と未使用スワップ空間の合計と同じです。この合計値は、確認された仮想メモリー量を、KB 未満を切り上げて示します。
|
Contiguous Errors
|
連続するメモリー位置で発生するメモリーエラーの許容数を指定し、このエラー数に達した時点でテストを停止するように設定します。
|
Test Method
|
以下の中から、テストに使用するパターンを1つ選択します。
-
デフォルトの選択は、Sequential テストです。開始アドレスから最終アドレスまで順にメモリー全体をテストします。
-
Random テストは、メモリーを無作為に選択してテストします。
-
PageStriding テストは非隣接メモリーテストで、連続および非連続に実行されます。
-連続テストは、指定されたテスト範囲内の最初のページから最後のページまでをテストします。各ページでテストされるのは、1 ワードだけです。
-非連続テストは、指定されたメモリー範囲内の最初のページから最後のページまでを無作為にテストします。全ページがテストされるまで、戻ったり進んだりしながら各ページごとに 1 ワードテストします。
-
BlockCopy テストは、2 つのメモリーブロック間でデータを読み書きします。各メモリーブロックは、テストされるメモリーの半分の領域です。
-
FileCaching テストは、Solaris カーネルでのファイルキャッシングの利用を通して性能を向上させるために使用します。このテストは大容量のメモリー構成に適しています。このテストの所要時間は、Sequential テスト手法の 30 〜 70 % 以下です。
|
Predefined Pattern
|
以下の中から、テストに使用するパターンを 1 つ選択します。
-
Address- テストするメモリー位置の仮想アドレスを使用します。
-
walk_1-0x80000000 〜 0x00000001 で始まるパターンの内の 1 つを使用します。
-
walk_0-0x7fff7fff 〜 0x7fff7ffe で始まるパターンの内の 1 つを使用します。
-
0x00000000- すべて 1 および 0 からなるパターンを使用します。
-
0x5aa55aa5- 0x5aa55aa5 および 0xa55aa55a のパターンを使用します。
-
0xdb6db6db- 0xdb6db6db および 0x24924924 のパターンを使用します。
-
checkerboard ― 0x55555555 および 0xaaaaaaaa のパターンを使用します。大容量メモリーを設定する場合に便利です。
-
UserDefined- User Defined Pattern 領域で指定したパターンを使用します (下記を参照)。
|
User Defined Pattern
|
Predefined Pattern で UserDefined を選択した場合にのみ使用します。例えば 0x2a341234 のように、8 桁の 16 進数形式でパターンを指定します。
|
Instance
|
実行する vmemtest テストのインスタンス数を指定します。
|
vmemtest のテストモード
表 63-2
vmemtest のテストモード
テストモード
|
サポート
|
説明
|
接続テスト
|
×
|
サポートされていません。
|
機能テスト
(オフライン)
|
○
|
すべてのテストを実行できます。
|
オフラインの機能テスト (Functional Test) モードでは、vmemtest テストは、ユーザーによって指定された量の仮想メモリーにパターンを書き込み、そのパターンを読み取って、元のパターンと比較します。一致しない場合は、その仮想アドレスを報告し、再度読み取って比較します。2 回目の比較でも一致しない場合は、仮想アドレスの物理アドレスへの変換を試みます (SunVTS 診断ドライバが組み込まれている場合のみ)。
vmemtest のコマンド行構文
/opt/SUNWvts/bin/vmemtest 標準引数 -o mode=数値, reserve=n,
amount=n,bdinfo=n,cerr=数値,type=n,pp=パターン,up=16 進アドレス
表 63-3
vmemtest のコマンド行構文
引数
|
説明
|
mode=Page|Regular
|
vmemtest の実行モードを指定します。次のいずれかを選択します。
|
reserve=n
|
デフォルトのメモリー量に追加して予約する仮想メモリーの MB 量を指定します。
|
amount=n
|
デフォルトのメモリー量の代わりに、テストするメモリーの MB 量を指定します。
|
bdinfo=n
|
システムに搭載されているすべての CPU/メモリボードのボード番号情報を指定します。たとえば、ボード 0 と 5 がメモリーボードの場合は、bdinfo=33 (2**5 + 2**0) と入力します。
|
cerr=n
|
メモリーエラーが発生したときにダンプされる連続エラーの最大個数を指定します。
|
type=seq+rand+page+block+file
|
-
seq- Sequential テスト手法を使用
-
rand- Random テスト手法を使用
-
page- PageStriding テスト手法を使用
-
block- BlockCopy テスト手法を使用
-
file- FileCaching テスト手法を使用
|
pp=パターン |
テストに使用するパターンを指定します。パターンは以下の中から選択できます。
-
Address- テストするメモリー位置の仮想アドレスを使用します。
-
walk_1- 0x80000000 〜 0x00000001 から始まるパターンの内の 1 つを使用します。
-
walk_0- 0x7fff7fff 〜 0x7fff7ffe から始まるパターンの内の 1 つを使用します。
-
0x00000000- すべて 1 および 0 からなるパターンを使用します
-
0x5aa55aa5- 0x5aa55aa5 のパターンを使用します。
-
0xdb6db6db- 0xdb6db6db のパターンを使用します。
-
Checkerboard- 0x55555555 および 0xaaaaaaaa のパターンを使用します。
-
UserDefined- User Defined Pattern 領域で指定したパターンを使用します (下記を参照)。
|
up=16 進アドレス |
上記の pp 引数に UserDefined を設定した場合にのみ使用します。例えば 0x2a341234 のように、8 桁の 16 進数形式でパターンを指定します。
|
注 - 64 ビットのテストは、sparcv9 サブディレクトリに格納されています (/opt/SUNWvts/bin/sparcv9/テスト名)。このディレクトリにテストが存在しない場合は、そのテストは、32 ビットのテストとしてだけ実行することができます。詳細は、「32 ビットテストと 64 ビットテスト」を参照してください。