mpconstest は、1 つ以上のキャッシュラインに対して競合を作ることによって、マルチプロセッサ環境でキャッシュの整合性が保たれていることを検証します。このテストにはいくつかのサブテストがあり、その各々が、キャッシュラインに対して異なる種類の競合を作るように設計されています。各サブテストは様々な方法を使用して、共有メモリーバッファー、ストライドサイズ、中間格納または読み込みをテストします。
mpconstest は起動されると、共有メモリーバッファーを作成します。次に、システム上の CPU の数を判定します。それぞれの CPU に対して、次の手順でテストを実行します。
スレッドをフォークし、CPU にバインドします。
選択したサブテストをスレッドで実行します。
各 CPU に、1 〜 n の ID 番号を割り当てます。ID 1 が割り当てられた CPU が、マスターとみなされます。
上記の手順が、サブテストのそれぞれについて繰り返されます。1 度に選択できるのは、1 つのサブテストだけです。
このテストは、スケーラブルテストではありません。
このテストでは、テスト対象のシステムに少なくとも 2 つの CPU が必要です。この条件が満たされていないと、このテストはオプションとして表示されません。
mpconstest は、SPARC CPU ハードウェアアーキテクチャーの v8plus 規格をサポートするマシンでだけ実行できます。v8plus 命令がサポートされていない場合は、mpconstest はテスト選択 GUI に表示されません。マシンが v8plus 規格をサポートするかどうかを判定するには、そのマシンのコマンドプロンプトで、次のように入力します。
% isalist sparcv9+vis sparcv9 sparcv8plus+vis sparcv8plus sparcv8 |
この一連のテストは、マシンの動作による影響を非常に受けやすいので、他のテストと同時に実行しないでください。
cons1- 各 CPU は、バイト、ハーフワード、またはフルワードのストライドサイズで、連続した位置に書き込みを行います。このサブテストは、単一のキャッシュラインに対して競合を作成します。共有メモリーへの書き込みが継続して行われる間、他の読み込みや格納は実行されません。
cons2- 各 CPU は、最後の書き込み位置から cachesize バイト分離れた位置から、読み取りを実行します。読み取りのたびに、直前に書き込まれたラインが書き戻されます。このテストは、キャッシュ内のすべてのラインを CPU がアクセスするまで継続します。
次のダイアログボックスを表示するには、システムマップにあるテスト名を右クリックし、Test Parameter Options を選択します。システムマップにこのテスト名が表示されない場合は、グループツリーを展開すると表示される場合があります。展開しても表示されない場合は、このテストに合ったデバイスがシステムに含まれていない可能性があります。詳細は、『SunVTS 4.3 ユーザーマニュアル』を参照してください。
オプション |
説明 |
---|---|
Test Name |
実行するサブテストを選択します。 |
Number of Timeout Iterations |
タイムアウトまでにテストを実行できる回数を設定します。デフォルトは 1 です。各タイムアウトは、前回のタイムアウトよりもかなり時間が経過した後に発生することに注意してください。つまり、最初のタイムアウトが T 時間単位後に発生したとすると、2 回目は T の後 2T で、3 回目は 2T の後 3T で発生します。 |
Atomic Mode |
不可分な命令スワップを使用します。デフォルトでは使用不可になっています。 |
Byte Mode |
バイト命令を使用して読み込みと格納を行います。デフォルトでは使用不可になっています。 |
Immediate Mode |
使用できません。 |
Random Mode |
使用できません。 |
Reverse Mode |
共有メモリーバッファーを逆方向にトラバースします。デフォルトでは使用不可になっています。 |
Prefetch Mode |
読み取りと書き込みにプリフェッチを設定します。デフォルトでは使用不可になっています。 |
CoreFile |
コアファイルを生成します。予期しないシグナルの場合は終了します。デフォルトでは使用不可になっています。 |
Ecache Disable |
外部キャッシュを使用不可にします。デフォルトでは使用可能になっています。 |
Trigger |
1 つのプロセッサが障害を検出した場合に、すべてのプロセッサに割り込みシグナルを送信します。デフォルトでは使用不可になっています。 |
Verbose |
冗長メッセージを印刷します。デフォルトでは使用不可になっています。 |
Offset |
継続した書き込みと書き込みの間の、ラインサイズのオフセットを指定します。デフォルトでは使用不可になっています。 |
Ism |
使用できません。 |
CPU Wait Count |
CPU の数が cpucount より少ない場合、最初に CPU 1 が書き込みを行うようにします。デフォルトでは使用不可になっています。 |
Number of Loops |
テストループの数を選択します。デフォルトは 5 です。 |
Number of Passes |
パスの数を選択します。パスの数が多いほど、システムの負担が大きくなります。パスの数を 0 に設定すると、永久ループでテストが実行されます。パスを 0 に設定できるのは、コマンド行モードでだけです。GUI からは設定できません。デフォルトは 1 です。 |
Memory Size |
共有メモリーバッファーのサイズをメガバイト単位で選択します。デフォルトは 128 です。 |
Random Mode Seed |
ランダムモードは使用不可であるため、このオプションも使用不可です。 |
テストモード |
サポート |
説明 |
---|---|---|
接続テスト |
× |
サポートされていません。 |
機能テスト (オフライン) |
○ |
フルテストを実行します。 |
/opt/SUNWvts/bin/mpconstest 標準引数 -o tst=1|2,itm=数値,a,b,c,e,h,loops=数値,memsize=メモリーサイズ, wait=cpucount,passes=パス,r,t,v,x,y
表 36-3 mpconstest のコマンド行構文
引数 |
説明 |
---|---|
tst=1|2 |
サブテスト cons1 または cons2 を選択します。 |
itm=数値 |
タイムアウトまでにテストを実行できる回数を設定します。デフォルトは 1 です。各タイムアウトは、前回のタイムアウトよりもかなり時間が経過した後に発生することに注意してください。つまり、最初のタイムアウトが T 時間単位後に発生したとすると、2 回目は T の後 2T で、3 回目は 2T の後 3T で発生します。 |
a |
不可分モードにします。不可分命令スワップを使用します。 |
b |
バイトモードにします。バイト命令を使用して読み込みと格納を行います。 |
c |
コアファイルを生成します。予期しないシグナルの場合は終了します。 |
e |
外部キャッシュを使用不可にします。 |
h |
使用法メッセージを出力します。 |
loops=数値 |
反復のループ数を設定します。デフォルトは 5 です。 |
memsize=メモリーサイズ |
共有メモリーバッファーのサイズをメガバイト単位で選択します。デフォルトは 128 です。 |
wait=cpucount |
CPU の数が cpucount より少ない場合、最初に CPU 1 が書き込みを行うようにします。 |
passes=パス |
パスの数を選択します。パスの数が多いほど、システムの負担が大きくなります。パスの数を 0 に設定すると、永久ループでテストが実行されます。パスを 0 に設定できるのは、コマンド行モードでだけです。GUI からは設定できません。デフォルトは 1 です。 |
r |
反転モードを使用可能にします。共有メモリーバッファーを逆方向にトラバースします。 |
t |
トリガーを使用可能にします。1 つのプロセッサが障害を検出した場合に、すべてのプロセッサに割り込みシグナルを送信します。 |
v |
冗長モードにします。 |
x |
プリフェッチを可能にします。読み取りと書き込みをプリフェッチで行います。 |
y |
オフセットを使用可能にします。継続した書き込みと書き込みの間の、ラインサイズのオフセットを指定します。 |