首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

用于 PowerPC 上的 Linux 的五个易用的性能分析工具(3)

用于 PowerPC 上的 Linux 的五个易用的性能分析工具(3)

如何解读 Tprof 报告?Tprof.out 报告包括一个头和 Tprof 报告总结。Tprof.out 文件的头如下:         
1
2
3
4
5
6
Tprof Reports
     ProcessorSpeed      1451000000
     TraceCycles         2744696387
     TraceTime           15.123(sec)
TOTAL TICKS            3026
(Clipping Level :      0.0 %    0 Ticks)




ProcessorSpeed 是以 Hertz 为单位给出的处理器速度。TraceCycles 是追踪过程中 CPU 周期的总数。TOTAL TICKS 是追踪时间间隔过程中发生系统时钟中断的次数。Clipping Level 是报告中省略的或忽略的节拍所占的最低百分比。省略级别用来限制对应于获得很少节拍的代码的报告中出现的数据总数。
在下一部分您将看到 Tprof 报告总结。Tprof 收集的数据是每个搜集获得的节拍的数目,不过这些数据可以以不同的方式来描述。报告总结中的第一部分展示了按进程分配的节拍数目:         
1
2
3
4
5
6
7
================================
  )) Process
================================
LAB     TKS       %%%      NAMES
PID    1612      53.27     SystemProcess_0000
PID     727      24.03     java_06a3
PID     687      22.70     in.telnetd_0438




Process 部分展示了在此时间间隔内运行的每个进程被分配了多少节拍。右边标签为 NAMES 的一栏中列出了进程的名字。TKS 和 %%% 两栏分别给出了每个进程获得的节拍总数及进程获得的节拍数所占百分比。LAB 栏指明了这是哪种代码单元类型。LAB 是 LABEL 的简写。在这一部分,所有代码单元都将是PID 或进程。在后面的部分您将看到的其他类型的代码单元是表示内核线程的 TID,表示模块的 MOD,以及表示符号(子例程名)的 SYM。
Tprof 报告总结中的其他部分更复杂一些,但也只是对这一主题稍加变化。下面的内容摘录自 Process_Thread_Module_Symbol 部分:         
1
2
3
4
5
6
7
8
9
10
11
================================
  )) Process_Thread_Module_Symbol
================================
LAB   TKS   %%%     NAMES
PID   1612 53.27    SystemProcess_0000
    TID   1612  53.27     tid_0000
       MOD   1611  53.24      vmlinux
          SYM   1607  53.11       .idled
          SYM      4    0.13      .schedule
       MOD      1   0.03      NoModule
          SYM      1    0.03       NoSymbols




Process_Thread_Module_Symbol 部分列出了 Process 部分的每一个进程。这里摘录的只是第一个进程,因为将其他进程也列出来将需要好多页!对 SystemProcess_0000 的统计与 Process 部分相同。代码单元的类型是 PID,节拍数是 1612,占总节拍数的百分比是 53.27。
此部分与 Process 部分的不同之处在于,它将进程代码分为了更小的代码单元。一个进程中运行的代码可以划分为线程,线程可以划分为模块,模块可以划分为独立的子例程。在上面的数据中,SystemProcess_0000 运行内核线程 tid_0000 中的代码。在以后的发行版本中 Performance Inspector 会支持 Native POSIX Threading Library(NPTL),不过当前您可以认为 TID 指的是内核线程。
而 tid_0000 线程又会运行两个模块中的代码。线程运行的第一个模块是 vmlinux,或内核代码。内核代码中子例程是 idled(当 CPU 空闲时运行的进程)和 schedule(内核调度器)。为这个进程列出的第二个模块是 NoModule。可以被认为是NoModule 的代码例子是设备驱动程序或者是在没有 Java profiler 的条件下运行的 Java 代码,在这种情况下 Tprof 将不能完成从指令地址到模块和子例程名的映射。Tprof 报告总结中的其他部分与此类似,所以只要您理解了这一部分,解读报告的其他部分就很直观了。
Above idle(AI)AI 工具显示在用户指定的一段时间间隔内的 CPU 使用率统计数据。它显示三方面统计数据来描述 CPU 的利用率:        
  • CPU 空闲所占的时间百分比。
  • CPU 繁忙所占的时间百分比。
  • CPU 处理中断所占的时间百分比。
如果您有多个 CPU,它将给出每个 CPU 的统计数据以及系统中所有 CPU 的平均统计数据。      
AI 命令实际上是 swtrace 所提供的一个专门功能,后者是安装为 Performance Inspector 工具套件的一部分的软件追踪工具。在被请求的时间间隔内,swtrace 将执行一个对 Performance Inspector 设备驱动程序的         ioctl( ) 调用来获取空闲信息。      
CPU 繁忙所占的时间百分比是否包括 CPU 处理中断所占的时间百分比?不包括。CPU 处理中断所占的时间百分比并不是那个 CPU 全部繁忙时间的子集。AI 生成的三方面的统计数据指的是三块独立的时间。
返回列表