この節では、dbx からコレクタを実行する方法、また dbx 内の collector コマンドで使用できる各サブコマンドについて説明します。
% dbx program |
collector コマンドを使用してデータの収集を有効にし、データの種類を選択し、オプションのパラメータを適宜設定します。
(dbx) collector subcommand |
利用可能な collector サブコマンドの一覧を表示するには、次のコマンドを使用します。
(dbx) help collector |
サブコマンドごとに collector コマンドを 1 つ使用する必要があります。
使用する dbx のオプションを設定し、プログラムを実行します。
指定したサブコマンドに誤りがある場合は、警告メッセージが出力され、サブコマンドは無視されます。このあとに、collector の全サブコマンドをまとめます。
ここでは、コレクタが収集するデータの種類を制御するサブコマンドをまとめています。実験がアクティブな場合は、警告メッセージが出力され、サブコマンドは無視されます。
時間ベースのプロファイルデータの収集を制御します。option には次のいずれかの値を指定できます。
on– デフォルトのプロファイル間隔 (10 ミリ秒) で時間ベースのプロファイルを有効にします。
off– 時間ベースのプロファイルを無効にします。
timer interval– プロファイル間隔を設定します。interval には次のいずれかの値を指定できます。
on– デフォルトのプロファイル間隔 (約 10 ミリ秒) を使用します。
lo[w]– 低分解能のプロファイル間隔 (約 100 ミリ秒) を使用します。
hi[gh]– 高分解能のプロファイル間隔 (約 1 ミリ秒) を使用します。高分解能のプロファイルについては、「時間ベースのプロファイルに関する制限事項」を参照してください。
value– プロファイル間隔を value に設定します。value のデフォルトの単位はミリ秒です。value は、整数または浮動小数点数として指定できます。オプションとして、数値の後ろに接尾辞 m を付けてミリ秒単位を選択するか、u を付けてマイクロ秒単位を選択することができます。プロファイル間隔は、時間の分解能の倍数である必要があります。時間の分解能値よりも大きな値であっても倍数でない場合は、端数が切り捨てられます。時間の分解能値よりも小さな値の場合は、時間の分解能に設定されます。どちらの場合にも、警告メッセージが表示されます。
デフォルトの設定は約 10 ミリ秒です。
デフォルトでは、hwprofile サブコマンドを使用してハードウェアカウンタオーバーフローのプロファイルデータ収集が有効になっていないかぎり、コレクタは時間ベースのプロファイルデータを収集します。
ハードウェアカウンタオーバーフローのプロファイルデータの収集を制御します。ハードウェアカウンタオーバーフローのプロファイル機能をサポートしていないシステム上でこの機能を有効にしようとすると、dbx から警告メッセージが返され、コマンドは無視されます。option には次のいずれかの値を指定できます。
on– ハードウェアカウンタオーバーフローのプロファイルを有効にします。デフォルトでは、通常のオーバーフロー値で cycles カウンタのデータが収集されます。
off– ハードウェアカウンタオーバーフローのプロファイルを無効にします。
list– 使用可能なカウンタの一覧を返します。一覧については、「ハードウェアカウンタのリスト」を参照してください。ハードウェアカウンタオーバーフローのプロファイル機能がシステムでサポートされていない場合は、dbx から警告メッセージが返されます。
counter counter_definition... [, counter_definition ]– カウンタ定義には、プロセッサがハードウェアカウンタの属性をサポートしているかどうかに応じて、次のいずれかの形式を使用できます。
[+] counter_name[/ register_number][,interval ]
[+]counter_name[~ attribute_1=value_1]...[~attribute_n =value_n][/ register_number][,interval ]
ハードウェアカウンタの name を選択し、そのオーバーフロー値を interval に設定します。オプションとして、追加のハードウェアカウンタ名を選択し、それらのオーバーフロー値を指定された間隔に設定します。オーバーフロー値は次のいずれかです。
on または NULL 文字列 – デフォルトのオーバーフロー値。これは、collect を引数なしで入力することによって判別できます。
hi[gh]– 選択したカウンタの高分解能値。これは、デフォルトのオーバーフロー値の約 10 分の 1 の値です。旧バージョンのソフトウェアとの互換を図るため、h の省略形もサポートされています。
lo[w]– 選択したカウンタの低分解能値。これは、デフォルトのオーバーフロー値より約 10 倍長い値です。
interval– 特定のオーバーフロー値。これは正の整数でなければなりませんが、10 進数と 16 進数のどちらの形式でもかまいません。
複数のカウンタを指定する場合、それらのカウンタは異なるレジスタを使用する必要があります。使用するレジスタが同じである場合は警告メッセージが出力され、コマンドは無視されます。
ハードウェアカウンタがメモリーアクセスに関連するイベントをカウントする場合、カウンタ名の前に + 記号を付けて、カウンタのオーバーフローを発生させた命令の実際の PC の検索をオンにすることができます。検索が成功すると、PC と参照された有効アドレスがイベントデータパケットに格納されます。
デフォルトでは、コレクタは、ハードウェアカウンタのオーバーフロープロファイルデータを収集しません。ハードウェアカウンタオーバーフローのプロファイルが有効になっていて profile コマンドが指定されていない場合、時間ベースのプロファイルは無効となります。
「ハードウェアカウンタオーバーフローのプロファイルに関する制限事項」も参照してください。
同期待ちトレースデータの収集を制御します。option には次のいずれかの値を指定できます。
on– デフォルトのしきい値で同期待ちトレースを有効にします。
off– 同期待ちのトレースを無効にします。
threshold value– 記録する最小同期遅延のしきい値を設定します。value には次のいずれかの値を指定できます。
ヒープトレースデータの収集を制御します。option には次のいずれかの値を指定できます。
on– ヒープのトレースを有効にします。
off– ヒープのトレースを無効にします。
デフォルトでは、コレクタはヒープのトレースデータを収集しません。
MPI トレースデータの収集を制御します。option には次のいずれかの値を指定できます。
on– MPI 呼び出しのトレースを有効にします。
off– MPI 呼び出しのトレースを無効にします。
デフォルトでは、コレクタは MPI のトレースデータを収集しません。
スレッドアナライザ用に、データ競合検出またはデッドロック検出のデータを収集します。次のいずれかの値を指定できます。
on – スレッドアナライザのデータ競合検出データを有効にします。
off– スレッドアナライザのデータを無効にします。
all– スレッドアナライザのデータをすべて有効にします。
race – スレッドアナライザのデータ競合検出データを有効にします。
deadlock– デッドロックと潜在的デッドロックのデータを収集します。
dtN– スレッドアナライザの特定のデータの種類を有効にします。データの種類は dt* パラメータで指定します。
スレッドアナライザについては、『Sun Studio 12: Thread Analyzer User’s Guide』および tha.1 のマニュアルページを参照してください。
標本収集モードを制御します。option には次のいずれかの値を指定できます。
periodic– 定期的な標本収集を有効にします。
manual– 定期的な標本収集を無効にします。手動の標本収集は有効のままです。
デフォルトでは、標本収集間隔 value が 1 秒での定期的な標本収集が有効となります。
dbx がターゲットプロセスを停止したときに、標本を記録するかどうかを制御します。キーワードの意味は、次のとおりです。
on– dbx がターゲットプロセスを停止するたびに標本が記録されます。
off– dbx がターゲットプロセスを停止したときの標本が記録されません。
デフォルトでは、dbx がターゲットプロセスを停止したとき、標本が記録されます。
データの収集を無効にします。プロセスが動作中でデータを収集中の場合は、その実験が終了し、データ収集が無効になります。プロセスが動作中でデータ収集が無効になっている場合、警告が出され、このサブコマンドは無視されます。プロセスが動作していない場合は、以降の実行のデータ収集が無効になります。
データの収集を有効にします。プロセスが動作していてデータ収集が無効であった場合、データ収集が有効になって新しい実験が開始されます。プロセスが動作中でデータ収集が有効になっている場合、警告が出され、このサブコマンドは無視されます。プロセスが動作していない場合は、以降の実行のデータ収集が有効になります。
プロセスの動作中、データ収集は何回でも有効にしたり、無効にしたりできます。データ収集を有効にするたびに、新しい実験が作成されます。
実験を開いたまま、データの収集を一時停止します。コレクタが一時停止している間、標本ポイントは記録されません。標本は一時停止の前に生成され、再開直後に別の標本が生成されます。データの収集がすでに一時停止されている場合、このサブコマンドは無視されます。
pause が実行されたあとに、データの収集を再開します。データ収集中は、このサブコマンドは無視されます。
name のラベルが付いた標本パケットを記録します。ラベルは、パフォーマンスアナライザの「イベント」タブで表示されます。
次のサブコマンドは、実験の格納オプションを指定します。実験がアクティブな場合は、警告メッセージが出力され、サブコマンドは無視されます。
実験を保管するためのモードを設定します。 mode には次のいずれかの値を指定できます。
on– ロードオブジェクトの通常の保管に設定します。
off– ロードオブジェクトを保管しません。
copy– 通常の保管のほかにロードオブジェクトを実験にコピーします。
異なるマシンに実験を移動するか、別のマシンから実験を読み取る場合は、ロードオブジェクトのコピーを有効にする必要があります。実験がアクティブな場合、警告が出され、このコマンドは無視されます。このコマンドを使用しても、ソースファイルまたはオブジェクトファイルは実験にコピーされません。
記録するプロファイルデータの量を value メガバイトに制限します。この制限は、時間ベースのプロファイルデータ、ハードウェアカウンタオーバーフローのプロファイルデータ、および同期待ちのトレースデータの合計に適用されますが、標本ポイントには適用されません。この制限値は概数にすぎないので、この値を超えることは可能です。
制限に達すると、それ以上のプロファイルデータは記録されませんが、実験はオープンのままで標本ポイントの記録は継続します。
記録されるデータのデフォルトの制限値は 2000M バイトです。この制限値が選択されたのは、2G バイトを超えるデータの実験をパフォーマンスアナライザが処理することができないためです。制限を外すには、value を unlimited または none に設定します。
実験の格納先を指定します。 実験がアクティブな場合、警告が出され、このコマンドは無視されます。option には次のいずれかの値を指定できます。
directory directory-name– 実験と実験グループの格納先のディレクトリを指定します。指定したディレクトリが存在しない場合、警告が出され、このサブコマンドは無視されます。
experiment experiment-name– 実験の名前を設定します。指定した実験名の末尾が .er でない場合、警告が出され、このサブコマンドは無視されます。実験名とコレクタにおける実験名の取り扱いについての詳細は、「収集データの格納場所」を参照してください。
group group-name– 実験グループの名前を設定します。指定したグループ名の末尾が .erg でない場合、警告が出され、このサブコマンドは無視されます。グループがすでに存在する場合は、実験がグループに追加されます。ディレクトリ名が store directory サブコマンドで設定され、グループ名が絶対パスでない場合、グループ名の前にディレクトリ名が付きます。
すべてのコレクタ制御の、現在の設定を表示します。