プロファイリングレポート

プロファイリングレポートの作成

プロファイリングレポートは、プロセスごとの各プロファイリングセッションの最後に生成されます(katanaBinrenderboot、たとえば)、ランタイムインスタンスごと。を呼び出すレンダリングKatanaたとえば、複数のスレッドで手順を実行し、スレッドごとに1つのランタイムをインスタンス化し、それぞれが異なるレポートを生成します。各レポートは2つのファイルで構成されます。

1.   A .dotプロファイリングセッションの最後にOpツリーを持つグラフを含むファイル。
2.   A .csv記録された調理時間を表形式で含むファイル。

プロファイルレポートは、デフォルトで、 Katanaセッションの一時ディレクトリ、およびオプションで、 --profiling-dirコマンドラインオプション。例えば:

./katana --profile --profiling-dir=/tmp/katana_profiling

レポートの命名は次の形式に従います。

Profiling__PID[P]__Runtime[R]__[YYYY]-[MM]-[DD]__[hh]-[mm]-[ss].csv

Profiling__PID[P]__Runtime[R]__[YYYY]-[MM]-[DD]__[hh]-[mm]-[ss].dot

その中でPレポートを生成したプロセスのプロセスID Rランタイムのインスタンスを識別する番号です。複数のランタイムをインスタンス化するマルチスレッドレンダーには、 PにとってkatanaBinそして別のrenderbootそして、後者では、1 Rレンダリング時に作成されたランタイムインスタンスごと。プロファイリングセッションが終了した日時がファイル名に追加されます。

.dotファイルは、たとえば、Graphvizを必要とする次のコマンドを使用してPDFドキュメントに変換できます。

dot [DOT FILE] -Tpdf > [OUTPUT PDF FILE]

プロファイリングレポートの分析

.csv (コンマ区切り値)ファイルには、クック時間とクック数の合計が含まれます。これは、スプレッドシートアプリケーションまたは他のレポートツールに直接読み込むことができます。各エントリ(行)には次の値(列)が含まれます。

1.   OpId -Opインスタンスの整数ID(または、次の場合、呼び出しOpインスタンスIsExecOptrue)。
2.   OpType -Opタイプ文字列(「AttributeSet」など)。
3.   IsExecOp -エントリが、を使用して呼び出されるOpを参照するかどうかを指定しますexecOp()trueまたはfalse)。
4.   Location -クックされたシーングラフの場所のパス
5.   TotalTime(usecs) -Opインスタンスがクッキングに成功した合計時間Location (マイクロ秒単位)。
6.   AbortTime(usecs) -中止されたクックでOpインスタンスが費やした合計時間Location (マイクロ秒単位)。
7.   TotalCount -Opのコックの数Location
8.   AbortCount -Opの中止された料理人の数Location

エントリIsExecOptrueへの呼び出しを使用して、Opの呼び出しによって明示的にクックされたOpの時間を表しますexecOp()。この場合、 OpId呼び出しOpインスタンスに対応し、 opType呼び出されたOpのタイプに対応します。

注意:  エントリについて報告された時間IsExecOptrue呼び出しOpのエントリにも含まれます。したがって、セッション中の合計クック時間は、すべてのエントリのクック時間の合計ですIsExecOpfalse

たとえば、Op A( IsExecOpfalse)呼び出しexecOp() Op Bで、順番に呼び出しますexecOp() Op Cで、 TotalTime Op Aの場合はOp Bの場合よりも厳密に大きく、Op Bの場合はOp Cの場合よりも厳密に大きくなります。これらのOpはすべて同じでレポートされますOpID:Op Aの

注意:  中断時間は、Geolib3のシーン拡張の通常のコンポーネントですが、適切なOpライティングプラクティスによって最小化されます。詳細については、 Op API

現在、Geolib3ランタイムには、Opsとそれぞれのプロジェクトノード間のマッピングに関する知識がありません。ただし、.dotファイルによって生成されるグラフは、プロファイリングセッションが終了した時点でのランタイムのOpツリー構造を示しており、Opsとノードのマッチングを支援できます。単一のセッション内で異なるまたは変更されたOpツリーのクッキングをプロファイリングすると、再利用されたOpインスタンス間で誤って集約が発生する可能性があるため、役に立たず、おそらく無効な結果を生成する可能性が高いことに注意してください。

Opツリーは、ノードグラフに加えて、すべての暗黙的なリゾルバー、インタラクティブレンダーフィルター、および異なるUI要素の端末Opから直接作成されます。一部のノードは複数のOpを生成することに注意してください。OpIdグラフの値は、もちろん、それぞれの値に対応します.csvファイル。

ロードするとき.csvファイルをスプレッドシートに保存すると、値を簡単にフィルタリング、ソート、集計、および合計できます。平均時間は、時間をコックの数で割ることによって計算できます。一般的なスプレッドシートソフトウェアに完全にはロードされない可能性のある、非常に大きなレポート(数百万エントリまで)を作成することは非常に可能です。そのような場合、 .csv形式は、たとえば場所ごとまたはOpタイプごとに値を集計するスクリプトまたはプログラムによって容易に解析されます。