分析报告

创建分析报告

在每个进程的每个性能分析会话结束时生成性能分析报告(katanaBinrenderboot(例如),每个运行时实例。渲染称为Katana例如,在多个线程上执行过程,例如,每个线程实例化一个运行时,每个运行时都会生成不同的报告。每个报告包含两个文件:

1.   一种.dot在分析会话结束时包含带有Op树的图形的文件。
2.   一种.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在后者中, R在渲染时创建的每个运行时实例。概要分析会话结束的日期和时间将附加到文件名。

.dot可以使用以下命令将文件转换为PDF文档,例如,它需要Graphviz:

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

分析分析报告

.csv (以逗号分隔的值)文件包含汇总的烹饪时间和烹饪次数。可以将其直接读取到电子表格应用程序或其他报告工具中。每个条目(行)包含以下值(列):

1.   OpId -Op实例的整数ID(如果是,则调用Op实例IsExecOptrue)。
2.   OpType -操作类型字符串(例如,“ AttributeSet”)。
3.   IsExecOp -指定条目是否引用使用调用的Op execOp()true要么false)。
4.   Location -煮熟的场景图位置的路径
5.   TotalTime(usecs) -Op实例成功烹饪所花费的总时间Location (以微秒为单位)。
6.   AbortTime(usecs) -Op实例在中止厨师中花费的总时间Location (以微秒为单位)。
7.   TotalCount -的厨师人数Location
8.   AbortCount -在Location

为其输入的条目IsExecOptrue表示调用Op明确煮熟的Op的时间,使用调用execOp()。在这种情况下, OpId对应于调用的Op实例,而opType对应于调用的Op的类型。

注意:  报告条目的时间IsExecOptrue也包含在调用Op的条目中。因此,会话中的总烹饪时间是所有条目的烹饪时间总和IsExecOpfalse

例如,如果Op A(对于IsExecOpfalse)来电execOp()在操作B上,依次调用execOp()然后在Op C上TotalTime操作A的严格比操作B的严格要大,操作B的严格大于操作C的所有O。 OpID:作品A的内容。

注意:  中止时间是Geolib3中场景扩展的正常组成部分,但通过良好的Op编写实践可将其最小化。有关更多信息,请参见Op API

目前,Geolib3运行时尚不了解Ops与它们各自的项目节点之间的映射。但是,.dot文件生成的图形显示了性能分析会话结束时运行时的Op树结构,并且可以帮助将Ops与节点进行匹配。请注意,在单个会话中对不同或更改的Op树的烹饪进行概要分析可能会产生较小的帮助,甚至可能是无效的结果,因为在重新使用的Op实例之间可能会错误地发生聚合。

Op树是直接从节点图,加上所有隐式解析器,Interactive Render过滤器和不同UI元素上的终端Ops创建的。请注意,某些节点会产生多个操作。OpId图表中的值当然与相应的值相对应.csv文件。

加载时.csv在电子表格中保存文件,可以轻松地对值进行过滤,排序,汇总和求和。平均时间可以通过将时间除以厨师人数来计算。很有可能会生成可能无法完全加载到常见电子表格软件中的非常大的报告(按数百万个条目的顺序排列)。在这种情况下, .csv格式或格式可以很容易地由脚本或程序解析,该脚本或程序可以汇总值,例如,每个位置或每个Op类型。