Oracle Solaris Studio 12.2: パフォーマンスアナライザ

必要なディスク容量の概算

ここでは、実験を記録するために必要な空きディスク容量を概算するためのいくつかのガイドラインを示します。実験のサイズはデータパケットのサイズとその記録速度、プログラムが使用する LWP の数、およびプログラムの実行時間によって異なります。

データパケットには、イベント固有のデータと、プログラム構造に依存するデータ (呼び出しスタック) が含まれます。データのサイズはデータの種類に依存し、約 50 ~ 100 バイトです。呼び出しスタックのデータは すべての呼び出しの復帰アドレスで構成され、アドレス 1 個あたりのサイズは 4 バイト、64 ビットの実行可能ファイルではアドレス 1 個あたり 8 バイトです。LWP ごとにデータパケットが実験に記録されます。Java プログラムの場合、対象となる呼び出しスタックは Java 呼び出しスタックとマシン呼び出しスタックの 2 つがあるため、ディスクに書き込まれるデータが増えます。

プロファイルデータパケットが記録される頻度は、クロックデータのプロファイル間隔、ハードウェアカウンタデータのオーバーフロー値、および (関数のトレースの場合) トレース対象の関数の出現頻度によって決定されます。プロファイル間隔パラメータの選択は、データの品質や、データ収集オーバーヘッドに起因するプログラムパフォーマンスの偏向にも影響します。これらのパラメータ値が小さければ良い統計値が得られますが、オーバーヘッドは高くなります。プロファイル間隔とオーバーフロー値のデフォルト値は、良好な統計値を得ることとオーバーヘッドを抑えることの折衷点として慎重に選択されています。値が小さい場合、データ量が多いことを意味します。

時間ベースのプロファイル実験、またはハードウェアカウンタオーバーフロープロファイル実験で、プロファイル間隔が毎秒 100 サンプル前後、パケットサイズが小さな呼び出しスタックで 80 バイト、大きな呼び出しスタックで 120 バイトの範囲であれば、記録されるデータはスレッドあたり毎秒 10K バイト程度です。数百という深さを持つ呼び出しスタックを持つプログラムの場合は、この 10 倍以上の速度でデータが記録される可能性があります。

MPI トレース実験では、データ量はトレース対象の MPI 呼び出しごとに 100 - 150 バイトで、送信されるメッセージの数や呼び出しスタックの深さによって異なります。さらに、collect コマンドの -M オプションを使用しているときは、デフォルトで時間プロファイルが有効なため、時間プロファイル実験の推定値を加算します。-p off オプションで時間プロファイルを無効にすると、MPI トレースのデータ量を減らすことができます。


注 –

コレクタは、MPI トレースデータを独自の形式 (mpview.dat3) と、VampirTrace OTF 形式 (a.otf a.*.z) の両方で格納します。OTF 形式のファイルを削除しても、アナライザに影響はありません。


実験サイズの概算では、アーカイブファイルに使用されるディスク容量も考慮する必要がありますが、通常その量は、必要となるディスク容量全体のごく一部です (前節参照)。必要なディスク容量のサイズを確定できない場合は、実験を短時間だけ行なってみてください。この実験からアーカイブファイルのサイズを取得し (データ収集時間とは無関係)、プロファイルファイルのサイズを確認することによって、完全な実験のサイズを概算できます。

コレクタは、ディスク容量を割り当てるだけでなく、ディスクにプロファイルデータを書き込む前に、そのデータを格納するためのバッファーをメモリー内に確保します。現在、こうしたバッファーのサイズを指定する方法はありません。コレクタがメモリー不足になった場合、収集するデータ量を減らすようにしてください。

現在利用できる容量より実験の格納に必要となる容量の方が大きいと思われる場合には、実行の全体でなく一部だけのデータを収集することを検討してください。実行の一部についてのデータを収集するには、collect コマンドを -y または -t オプションで実行するか、dbx collector サブコマンドを使用するか、またはコレクタ API への呼び出しをプログラムに挿入します。collect コマンドの -L オプションや、dbx collector サブコマンドを使用して、収集されるプロファイルおよびトレースデータの総量を制限することもできます。