用于 PowerPC 上的 Linux 的五个易用的性能分析工具(4)
- UID
- 1066743
|
用于 PowerPC 上的 Linux 的五个易用的性能分析工具(4)
如何运行 AI?假定您将 Performance Inspector 工具套件安装在默认的位置,即 /piperf 目录,那么可以在 /piperf/bin 目录下找到 AI 工具。可以通过执行下面的命令来运行 AI 工具:
1
| swtrace ai [sample_interval [num_samples]]
|
sample_interval 和 num_samples 参数是可选的。sample_interval 参数的单位是秒,指定的是每隔多长时间对 CPU 的利用率进行抽样和显示。num_samples 间隔指定了应该执行多少次抽样。如果 sample_interval 参数被忽略,则使用默认抽样时间间隔,1 秒。如果 num_samples 参数被忽略,则抽样将一直进行,直到您按下Ctrl-c 或 Ctrl-Break。
例 1:
1
| # /piperf/bin/swtrace ai
|
例 2:
1
| # /piperf/bin/swtrace ai 5
|
例 3:
1
| # /piperf/bin/swtrace ai 2 3
|
如何解读 AI 命令的输出?在一个有 2 个 CPU 的系统中,会得到类似如下的输出:
1
2
3
4
5
| Percentage by processor:
CPU 0 IDLE= 0.00, BUSY=100.00, INTR= 0.00
CPU 1 IDLE= 0.00, BUSY=100.00, INTR= 0.00
Percentage by System:
IDLE= 0.00, BUSY=100.00, INTR= 0.00
|
“Percentage by processor” 列出了系统中每个 CPU 的统计数据。为每个 CPU 显示出了 CPU 空闲所占的时间百分比、CPU 繁忙所占的时间百分比以及 CPU 用来处理中断所占的时间百分比。“Percentage by System”列出了同样的统计,不过不是将它们按一个 CPU 一个 CPU 来显示,而是显示所有 CPU 系统整体平均统计数据。
PTTPTT 工具收集在用户指定时间间隔内运行的所有进程的统计数据。到目前为止,PTT 尚不支持 Native POSIXThreading Library(NPTL),所以线程这一术语与进程是同义的。PTT 收集每个进程的以下统计数据:
- 进程名。
- 进程 id。
- 进程所使用的 CPU 周期数目。
- 进程所使用的 CPU 周期数目占总数目的百分比。
- 进程运行时发生的中断的数目。
- 进程被调度的次数(或者说是内核调度子例程为那个进程释放 CPU 的次数)。
可以通过一个名为 run.ptt 的脚本来调用 PTT 工具。这个脚本调用命令行工具 ptt 和 pttstat 来收集所需要的统计数据。
PTT API 是怎样的?除了命令行工具 ptt 和 pttstat 以及调用它们的 run.ptt 脚本以外,还有一组您可以用来装备您的 Java 和 C 应用程序的 PTT API。当前,这些 API 可以为 PowerPC 给出在被装备的程序中两个成功的 API 调用之间所发生的基于时间的节拍数目。参阅 Linux Per Thread Time APIs以获得关于如何实现 PTT API 的资料。
如何运行 PTT?假定您将 Performance Inspector 工具套件安装在默认的位置,即 /piperf 目录,那么可以在 /piperf/bin 目录中找到 PTT 工具。可以运行 run.ptt 脚本来调用 PTT 工具。这个脚本不使用任何参数。当您运行这个脚本时,工具立即开始收集统计数据。当您希望停止收集数据时,按下 Enter,然后就会生成一个报告。例如,
如何理解 PTT 的输出?按下 Enter 键后,您将看到类似如下的统计数据:
1
2
3
4
5
6
7
8
9
10
11
12
| ptt version 2040024
* Opening ptt.out For ptt Output
total cycles 1,461,557,204
DISP IRQ Cycles % PID PNM
410 4 1,459,143,201 99.8 0 IDLE
403 0 2,256,862 0.2 15 khvcd
2 1 126,544 0.0 9227 bash
4 0 19,189 0.0 8197 in.telnetd
1 0 4,654 0.0 10 kupdated
1 0 3,649 0.0 1 init
2 0 2,593 0.0 774 nscd
1 0 512 0.0 18 kreiserfsd
|
可以直观理解这些统计数据。在顶部“total cycles”行中显示的是 PTT 工具所收集的在此时间间隔内的 CPU 周期总数;下面的图表列出了此时间间隔内运行的所有进程以及每个进程的总计的统计数据。在右边标签为 PNM 的一栏中是进程的名称。进程的 id 在其左边的标签为 PID 的栏中。左边紧接着是 Cycles 和 % 栏。Cycles 栏中的数字列出了在 PTT 收集统计数据的时间间隔内那个进程所使用的 CPU 周期数。% 栏显示了进程所使用的 CPU 周期所占总周期数的百分比,当然是用 Cycles 栏的数目除以图表上方“total cycles”的数目而得到的。IRQ 栏指明了在进程进行过程中发生的中断的数目。最后,DISP 栏指明了在 PTT 工具收集统计数据的时间间隔内进程被调度的次数。 |
|
|
|
|
|