CPUキャッシュ負荷テスト
(fjcachetest)



fjcachetest は CPUモジュールのキャッシュ(I/D-cache、E-cache)間、およびキャッシュ−メモリ間のデータ転送負荷を上げ、CPUキャッシュの正常動作確認、および異常がある場合には不良CPUモジュールの指摘を行ないます。FJVTS、およびコマンドラインから起動可能です。



注-1目安として 2 CPUシステム(336MHz,2MB E-cache)の場合、試験が1回パスするのにかかる時間は、
・"mode=line"の場合 約 4分
・"mode=byte"の場合 約 11分
・"mode=share"の場合 約 2分
・"mode=share2"の場合 約 5秒
・"mode=large"の場合 約 30秒 ("loop=1"、仮想メモリサイズ=1280MB、物理メモリサイズ=1280MB の時)
・"mode=random"の場合 約 1分30秒
・"mode=all"の場合 約 18分
です(他の設定はデフォルト)。"mode=large"の時は、仮想メモリサイズ、物理メモリサイズにより実行時間が大きく変動します。
注-2FJVTSメニューから実行する場合、CPUごとに複数インスタンス(プロセス)起動できますが、インスタンスの最大数は 16 です。
注-3 "mode=large"で、"loop=100"(デフォルト)のままの場合、試験が1回パスするのに数時間かかることがあります。




fjcachetestのオプション



fjcachetest options
図.fjcachetestのオプション




表.fjcachetestオプションの説明

オプション説明

Mode試験内容を選択します。いずれか1つ選択可能です。

選択可能試験デフォルト
line,byte,share,share2,large,random,allline


※ 試験内容説明
line: キャッシュライン単位転送試験
byte: バイト単位転送試験
share: E-キャッシュ間同期転送試験
share2: E-キャッシュ間非同期転送試験
large: 仮想メモリサイズ転送試験
random: ランダム転送試験

※ "all"を選択すると "line","byte","share","share2","random"を順次実行しますが、1CPUシステムの場合、"share","share2"テストはスキップされます。
※ 1CPUシステムの場合、"share","share2"を選択するとエラーになります。
※ "random" はデータ比較を行いません。

Write Only"on"を選択すると、Writeのみのモードになり、キャッシュ転送負荷が向上します。ただしデータ比較は行いません。
"read_only"を選択すると、データパターンを 1回Write後、loop回数分 Read/Compare を行います。"read_only"の場合、"compare=last"にしておく必要があります。

選択可能状態デフォルト
on,off,read_onlyoff


Predefined Pattern転送データパターンを選択します。いずれか1つ選択可能です。

選択可能パターンデフォルト
default,alldefault


Loop Counter同一の設定パターンを用いて何回ループするかを10進の整数(1〜99999)で指定します。
デフォルト値は 100

Contiguous Errors1回の loop中で何個までエラー情報を出力するかを10進の整数(1〜500)で指定します。なおデータ比較単位は 64Byteです。
デフォルトは 10

File指定したファイルから、試験データパターンを読み出します。指定可能なファイル名は 20文字までです。有効データは16進数を表す文字列です。
デフォルトは指定無し

Compare データ比較処理のタイミングを変更します。

選択可能パターンデフォルト
last,order,switchlast


※ 選択肢の説明
last:試験対象メモリに全面write後、read/compareを行う。
order:キャッシュラインサイズ単位で、write/read/compareを行う。
switch:試験対象メモリの上位アドレス、下位アドレスを交互にアクセスする。全面write後、read/compareを行う。

Amount試験対象メモリサイズを10進の整数(0〜最大仮想メモリサイズ)で指定します(単位はMB)。"mode=large"の場合に有効です。値に"0"を指定した場合は、最大仮想メモリサイズが自動的に指定されます。デフォルトは最大仮想メモリサイズ。
"stress"モードが"disable"の時は、指定した amountの 80%を実際に使用します。
"stress"モードが"enable"の時は、指定した amountサイズ-3MB を実際に使用します。

2nd cache size 試験対象メモリサイズを MByte単位で任意(0〜E-cacheサイズの2倍まで)に指定可能です。"mode=large"以外の場合に有効です。値に"0"を指定した場合は、自動的に E-cacheサイズが指定されます。デフォルトは E-cacheサイズです。

WayCPUの2ndキャッシュのWay数を10進の整数(0〜2)で指定します。値に"0"を指定した場合は、自動的にWay数を判断します。デフォルトは搭載CPUの2ndキャッシュのWay数です。

Processor AffinityCPUを複数搭載したシステムでしか表示されません。使用するCPUを選択した番号のCPUに限定(バインド)しますが、本プログラムでは "No Selections" のままにしておいてください。
デフォルトは "No Selections"




fjcachetestテストモード



表.fjcachetestテストモード

オプション説明

接続テストモード
(Connection Test)
実行すると各CPUモジュールの E-cacheサイズ、E-cacheラインサイズ、E-cache Way数、最大仮想メモリサイズを表示します。

機能テストモード
(Functional Test)
"Mode"オプションが"line","byte","random" の場合 E-cache Write Back, Copy Back を狙った動作を、"share","share2" の場合は複数CPU間でのデータ転送を狙った動作を、"large" の場合は Page In/Outによる、キャッシュ-メモリ-I/O間のデータ転送を狙った動作を行います。データの Write/Read/Compare を行いCPUキャッシュ制御の検証を行います。




fjcachetestのコマンドライン行構文

/opt/FJSVvts/bin/fjcachetest 標準引数
-f -o [bind=CPU ID,mode=line|byte|share|share2|large|random|all,wo=on|off|read_only,pp=default|all,loop=回数,cerr=個数,file=ファイル名,amount=メモリサイズ|max,compare=last|order|switch,2ndcsize=E-cacheサイズ,way=搭載CPUの2ndキャッシュのWay数]



各パラメタの内容は前述の"表. fjcachetestオプションの説明"を参照してください。 また、標準引数についてはSunVTSテストリファレンスを参照して下さい。

表.fjcachetestのコマンドライン行構文
引数 説明 指定例
bind 試験を行うCPUモジュールをID番号で指定します。
指定は "CPU_ID+CPU_ID+..." のように行います。
また全CPUを指定するときは、"all" で指定可能です。
bind=0+2+5
bind=all
mode 試験内容を指定します。 mode=line
wo Write Onlyにするかどうか指定します。 wo=on
pp 試験データパターンを指定します。 pp=default
pp=all
loop 同一試験データパターンでループする回数を指定します。 loop=100
cerr 1回の loop中で何個までエラー情報を出力するかを指定します。 cerr=100
file 試験データパターンを読み込むファイル名を指定します。 file=/tmp/hogehoge
amount "mode=large"の時の、試験対象サイズを指定します。単位は Mbyteです。 amount=0,amount=1000,amount=max
compare データ比較タイミングを指定します。 compare=last
2ndcsize E-cacheサイズを指定します。 2ndcsize=4
way 2ndキャッシュのWay数を指定します。 way=1




fjcachetestエラーメッセージ



表.fjcachetestのエラーメッセージ
IDエラーメッセージ考えられる原因対処方法
6000 Data compare error ([CPU ID]): [比較済みバイト数]/[比較全体バイト数] byte, Physical_addr= [物理アドレス]
Write_data =
[Writeデータ(64byte)]
Read_data =
[Readデータ(64byte)]
Parameter: Mode=[試験内容], Pattern=[試験データパターン]
[CPU ID]でデータ比較エラーが発生しました。 [CPU ID]のモジュールを交換して下さい。
8000[発行コマンド] failed. [理由]システムエラー[発行コマンド]が実行可能かどうか確認して下さい。
8001valloc failed (size= [獲得要求サイズ]): [理由]valloc()が失敗しました仮想メモリが不足しています。仮想メモリサイズを増やすか、試験プログラムの実行数を減らしてください。
8002Ioctl failed. [発行コマンド]: [理由]システムエラー[発行コマンド]を実行するデバイスドライバが正常動作しているか確認してください。
8003Please enter an appropriate value, [入力値]=?[入力値]のパラメタ値が無効な値です。有効な値を入力してください。
8004Bad test option: [オプション]指定された[オプション]はありません。正しい[オプション]を指定してください。
8005Child Process Illegal failed. [理由]システムエラープログラムが異常終了しました。外部要因が考えられますので、再実行して下さい。それでも同現象になる場合、弊社窓口に問い合わせ願います。
8006Child Process Illegal failed. exit code = [exit:signal]システムエラープログラムが異常終了しました。外部要因が考えられますので、再実行して下さい。それでも同現象になる場合、弊社窓口に問い合わせ願います。