SunVTS 3.1 テストリファレンスマニュアル

第 42 章 仮想メモリーテスト (vmemtest)

vmemtest は、仮想メモリー (物理メモリーとディスクのスワップパーティションを合わせたもの) を検査します。


注 -

このテストは、中止してもすぐに停止しないことがあります。


このテストは、Solaris valloc (ページ境界揃え) システムコールを使用して、仮想メモリーの割り当て、書き込み、読み取り、比較を行います。これらの操作は、通常はシステムにページング動作を大量に発生させるため、オぺレーティングシステムに重い負荷をかける環境をシミュレートすることができます。このテストは、ECC パリティーエラー、メモリー読み取りエラー、アドレス指定の問題も検出し、障害に対応する仮想メモリーアドレスを表示します。

スワップ空間に関する留意点

このテストは、使用可能なスワップ空間の大部分を使用するため、オぺレーティングシステムに大きな負荷がかかります。SunVTS テストを開始した後に SunVTS 以外のプロセスを起動する場合は、vmemtest のスワップ空間予約オプションを使用してください。スワップ空間の条件についての詳細は、『SunVTS 3.1 ユーザーマニュアル』の「スワップ空間条件」の説明を参照してください。

vmemtest のオプション

図 42-1 vmemtest のオプションメニュー

Graphic

表 42-1 vmemtest のオプション

オプション 

説明 

vmemtest の構成

Configuration フィールドに示されるメモリー量は、swap -s コマンドが返す、使用中のスワップ空間と未使用スワップ空間の合計と同じです。この合計値は、確認された仮想メモリー量を、KB 未満を切り上げて示します。

Mode 

vmemtest には、2 つのモードがあります。

  • 通常 (Regular) モードでは、テストされるメモリー量は、物理メモリーの大きさによって制限されます。

  • ページ (Page) モードは、割り当てられた仮想メモリーを一度に 1 ページずつテストします。各ページは、一時ファイル /tmp/vmem.page に割り当てられ、データが書き込まれた後に、記憶装置にページアウトされます。次にページインされた後に、読み取られて比較されます。

 

ストレステストオプションが選択されると、valloc で割り当てられた全システムメモリーを確保し、その先頭から最後まで書き込みを行います。書き込みを終えると、1 ロングワードずつ読み取って、元のパターンと比較されます。

Reserve 

Reserve オプションは、vmemtest のテスト対象から除外 (予約) するメモリー量を指定します。予約された空間は、SunVTS テストと並行して動作している他のプロセスに使用されます。Reserve オプションを使用することで、デフォルトに追加してメモリーを予約することができます。このオプションは、特定のインスタンスだけに適用されます。このインスタンスによるテストに割り当てられたメモリーよりも大きいメモリーを予約しようとすると、テストは失敗します。

Test Amount 

デフォルトとは異なる仮想メモリー量を指定して、テストできます。使用できるメモリー量よりも大きな値を指定した場合、vmemtest およびその他の実行中のテストは失敗することがあります。

Contiguous Errors 

連続するメモリー位置で発生するメモリーエラーの許容数を指定し、このエラー数に達した時点でテストを停止するように設定します。 

Predefined Pattern 

以下の中から、テストに使用するパターンを 1 つ選択します。 

Address- テストするメモリー位置の仮想アドレスを使用します。

walk_1-0x80000000 〜 0x00000001 で始まるパターンの内の 1 つを使用します。

walk_0-0x7fff7fff 〜 0x7fff7ffe で始まるパターンの内の 1 つを使用します。

0x00000000- すべて 1 および 0 からなるパターンを使用します。

0x5aa55aa5- 0x5aa55aa5 および 0xa55aa55a のパターンを使用します。

0xdb6db6db- 0xdb6db6db および 0x24924924 のパターンを使用します。

UserDefined- User Defined Pattern 領域で指定したパターンを使用します (下記を参照)。

User Defined Pattern 

Predefined Pattern で UserDefined を選択した場合にのみ使用します。例えば 0x2a341234 のように、8 桁の 16 進数形式でパターンを指定します。

Instance 

実行する vmemtest テストのインスタンス数を指定します。

vmemtest のテストモード

vmemtest は、オフラインの機能テスト (Functional Test) モードでのみ実行することができます。このモードでは、vmemtest テストは、ユーザーによって指定された量の仮想メモリーにパターンを書き込み、そのパターンを読み取って、元のパターンと比較します。一致しない場合は、その仮想アドレスを報告し、再度読み取って比較します。2 回目の比較でも一致しない場合は、仮想アドレスの物理アドレスへの変換を試みます (SunVTS 診断ドライバが組み込まれている場合のみ)。

vmemtest のコマンド行構文

/opt/SUNWvts/bin/vmemtest 標準引数 -o mode=数値, reserve=数値, amount=数値,bdinfo=数値r,cerr=数値,pp=パターン, up=16 進アドレス

表 42-2 vmemtest のコマンド行構文

引数 

説明 

mode=page|regular

vmemtest の実行モードを指定します。次のいずれかを選択します。

page - 書き込み・読み取りメモリーテストを、一度に 1 システムメモリーページずつ進めます。

regular - valloc で割り当てられたメモリー全体を、一度に 1 ロングワードずつ読み取って比較します。

reserve=数値

デフォルトのメモリー量に追加して予約する仮想メモリーの MB 量を指定します。 

amount=数値

デフォルトのメモリー量の代わりに、テストするメモリーの MB 量を指定します。 

bdinfo=数値

システムに搭載されているすべての CPU/メモリボードのボード番号情報を指定します。たとえば、ボード 0 と 5 がメモリーボードの場合は、bdinfo=33 (2**5 + 2**0) と入力します。

cerro=数値

メモリーエラーが発生したときにダンプされる連続エラーの最大個数を指定します。 

pp=パターン

テストに使用するパターンを指定します。パターンは以下の中から選択できます。 

Address- テストするメモリー位置の仮想アドレスを使用します。

walk_1- 0x80000000 〜 0x00000001 から始まるパターンの内の 1 つを使用します。

walk_0- 0x7fff7fff 〜 0x7fff7ffe から始まるパターンの内の 1 つを使用します。

0x00000000- すべて 1 および 0 からなるパターンを使用します

0x5aa55aa5- 0x5aa55aa5 および 0xa55aa55a のパターンを使用します。

0xdb6db6db- 0xdb6db6db および 0x24924924 のパターンを使用します。

UserDefined- User Defined Pattern 領域で指定したパターンを使用します (下記を参照)。

up=16 進アドレス上記の pp 引数に UserDefined を設定した場合のみ使用します。例えば 0x2a341234 のように、8 桁の 16 進数形式でパターンを指定します。


注 -

64 ビットのテストは、sparcv9 サブディレクトリに格納されています (/opt/SUNWvts/bin/sparcv9/テスト名)。このディレクトリにテストが存在しない場合、そのテストは、32 ビットのテストとしてだけ実行することができます。詳細は、「32 ビットテストと 64 ビットテスト」を参照してください。


vmemtest のエラーメッセージ

表 42-3 vmemtest のエラーメッセージ

 

エラーメッセージ 

考えられる原因 

対処方法 

6001

setrlimit(RLIMIT_DATA) failed to set to RLIM_INFINITY: エラーメッセージ

テストプロセスのヒープサイズを 2GB に増やすことができませんでした (致命的なエラー)。 

 

6002

Test terminated after finding maximum number (数値) of noncontiguous errors

致命的なエラー 

 

6003

msync() failed: エラーメッセージ

メモリーと物理記憶を同期できませんでした (致命的なエラー)。 

 

6004

Test terminated after finding miscompared data

テストに失敗しました (致命的なエラー)。 

 

8001

Test completed. Found データ noncontiguous miscompare errors

スワップパーティション不良 (致命的なエラー)。 

購入先に問い合わせてください。 

SCSI コントローラ不良 

 

システムソフトウェアエラー 

 

8002

Increase swap space to allocate at least 数値 MB from the process' heap

mem プロセスのヒープ領域を大きくすることができませんでした。

 

8003

Attempt to reserve more than what's been assigned

致命的なエラー 

確保する容量を小さくしてください。 

8004

valloc(アドレス) failed:エラーメッセージ

致命的なエラー 

スワップ空間を大きくするか、システムの負荷を減らしてください。 

8005

Open(ファイル名) failed:エラーメッセージ

"ページ" モードで使用されるファイル名ファイルを開くことがませんでした。

 

8006

mmap() virtual Address アドレス to ファイル名 failed: エラーメッセージ

"ページ" モードで使用されるファイル名ファイルの仮想アドレス位置の領域を割り当てられませんでした。

 

8007

munmap(アドレス) failed:エラーメッセージ

"ページ" モードで使用されるファイル名ファイルの仮想アドレス位置の領域の割り当てを解消できませんでした (致命的なエラー)。

 

8008

close() failed on ファイル名: エラーメッセージ

致命的なエラー 

 

8009

Not enough space to store miscompare information

不一致データを書き込む空間を確保できませんでした (致命的なエラー)。 

スワップ空間を大きくするか、システムの負荷を減らしてください。 

8010

swapctl() failed: エラーメッセージ

システムに設定されている量のスワップ空間を確保できませんでした (致命的なエラー)。 

 

8011

calloc failed: エラー

重大なエラー 

 

8012

getitimes() error: エラー

重大なエラー