用于 PowerPC 上的 Linux 的五个易用的性能分析工具(2)
- UID
- 1066743
|
用于 PowerPC 上的 Linux 的五个易用的性能分析工具(2)
编译 Performance Inspector 工具如果您希望使用 Performance Inspector Java 工具,那么要确保您已经安装了 Java 并使用正确的信息设置了下面的PATH 和 JDKDIR 环境变量。如果没有设置这些环境变量,Java 工具将不能被编译。下面给出的只是示例;取决于您所安装的 SDK 的版本,路径可能会不同:
1
2
3
| # export PATH=/opt/IBMJava2-ppc-141/jre/bin:
/opt/IBMJava2-ppc-141/binPATH
# export JDKDIR=/opt/IBMJava2-ppc-141
|
如果您使用的是老的、得到支持的 64 位 SDK,那么您还需要设置这个变量: # export JAVA64=64
现在需要运行 tinstall 脚本来编译 Performance Inspector 工具:
1
2
| # cd /piperf/bin
# ./tinstall
|
配置 Performance Inspector每次登录后,都需要运行 setrunenv 脚本来配置 Performance Inspector:
1
2
| # cd /piperf/bin
# . setrunenv
|
现在 Performance Inspector 工具就可以使用了。后面的章节将解释如何使用它们。
TprofTprof 工具是一个计时器剖析器,可以识别出在用户指定的一个时间间隔内哪些代码在 CPU 上运行。它通常用来帮助诊断 CPU 使用中的所有热点(hot-spot)。当它运行时,它会记录每次系统时钟中断发生时正在执行的指令的地址。在大部分系统中,每个处理器每秒钟发生 100 次中断。当用户指定的时间间隔结束时,Tprof 将这些指令按进程、线程、模块和子例程进行分组。然后,它生成一个报告,列出这些代码单元每个获得了多少个“节拍(tick)”(即当代码的特定单元正在运行时发生了多少次系统时钟中断)。Tprof 为多种类型的代码提供这一信息,包括应用程序代码、库例程以及内核代码。
Tprof 如何工作?Tprof 工具实际上是一个名为 run.tprof 的 shell 脚本,它会去运行 swtrace 工具,后者可以自内核中的追踪挂钩收集追踪数据。当 Tprof 调用 swtrace 时,它会指明需要哪个具体的追踪挂钩。然后,当发生系统时钟中断时,swtrace 工具会给出正在运行的每一个指令的地址,以及对应于每个指令的进程 id 和线程 id,这样稍后就可以根据进程 id和线程 id 分配那个节拍。这一信息存储在已经为每个处理器分配的追踪缓冲区中。每个追踪缓冲区默认的大小是 5 MB,不过,当您运行 Tprof 工具时可以覆盖这一默认值。在用于 Java 代码的 jprof 工具的帮助下,a2n 共享库可以完成地址到符号名的映射。地址到符号名的映射使得 Tprof 可以按模块和子例程分配节拍。然后由后继的工具生成最终的 Tprof 报告。swtrace、a2n 库、jprof 以及后继工具都是 Performance Inspector 安装的组成部分。
Tprof 是否可以剖析发生特定事件时(除了系统时钟中断以外)什么代码在进行?Tprof 的一些版本可以记录每次特定事件发生时(比如当缓存失败或运行分支时)什么代码在运行,而不是记录每个系统时钟中断发生时什么代码在运行。这一特定功能只能用于 x86 体系结构,当前还不能用于 PowerPC。
Tprof 度量的是 CPU 时间还是实际时间?由于 Tprof 记录在每个系统时钟中断发生时什么代码在 CPU 上运行,所以您可以认为它粗略地度量了代码(比如进程或子例程)的每个单元所消耗的 CPU 时间数量。它只是列出它运行的时间间隔内所获得的节拍数量总和;它不会列出这些节拍发生在时间间隔的哪一时刻。当代码禁用中断时,节拍将不能归结到代码,直到中断被重新启用。
如何运行 Tprof?假定您将 Performance Inspector 工具套件安装在默认的位置,即 /piperf 目录,那么运行 Tprof 的脚本可以在 /piperf/bin 中找到。可以通过运行 run.tprof [buffer_size] 调用这个脚本。在 PowerPC 上这个脚本使用一个可选参数 buffer_size,它的单位是 MB。这指明了为每个处理器创建的追踪缓冲区的大小,追踪缓冲区用于存储 Tprof 运行过程中生成的追踪信息。如果您忽略了这一参数,则 Tprof 将使用默认的缓冲区大小 —— 5 MB。
运行 run.tprof 脚本后,Tprof 将要求您在准备好开始追踪时按下 Enter。这就让您有机会可以启动所有希望包括在追踪中的程序。按下 Enter 后,Tprof 将开始收集数据,直到您再次按下 Enter 以停止追踪,或者直到追踪缓冲区变满。当停止追踪后,将在当前工作目录下生成一个名为 Tprof.out 的 Tprof 报告。一个包含运行信息的名为 run.tprof.log 的日志文件也将创建在同一目录中。
例 1:
1
| # /piperf/bin/run.tprof
|
例 2:
1
| # /piperf/bin/run.tprof 10
|
|
|
|
|
|
|