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

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

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

JLMJLM 工具提供 Java 程序中对锁的统计数据。这些统计数据包括锁被请求的方式、锁被持有的总时间以及锁被持有的平均时间。它可以与 IBM 32 位和 64 位的 Runtime Environment for Linux v1.4.0 和更新的版本一起使用。JLM 工具不能与非 IBMJVM 一起使用,因为这个工具使用了 IBM 对 JVM Profiler Interface(JVMPI)的扩展。
JLM 是 Java 剖析器所提供的一个专门功能,后者通常称作 jprof。Java 剖析器在 PowerPC 上实现为 libjprof.so 库。基于套接字的命令行应用程序 rtdriver 提供了访问 Java 剖析器的接口。类似于其他 Performance Inspector 工具,可以在 /piperf/bin 目录中找到 rtdriver 和 libjprof.so。
如何运行 JLM?
  • 首先需要运行您的 Java 程序。需要使用 Xrunjprof:socket 标记来启动 Java 剖析器。例如,如果您的Java 类命名为 MyJava,则执行命令:           
    1
    # java –Xrunjprof:socket MyJava




  • 运行 rtdriver 应用程序(传递给下面的命令的 -l 标记是小写字母 l,不是数字 1):           
    1
    # rtdriver –l




  • 当 rtdriver 应用程序连接到本地主机后,它将显示一个 Command> 提示符。在提示符中输入下面的命令来通知 Java 剖析器开始收集锁统计数据:           
    1
    Command> jlmstart




  • Java 剖析器可以在任何时刻生成关于当前锁统计数据的报告。另外,您还可以在同一个 rtdriver 会话中生成多个报告。每个报告都将存储在当前工作目录中的 log_jlm.#_pppp 文件中,其中的           # 是报告的序列号,从 1 开始是第一个报告,然后接下来每个报告增 1,          pppp 指的是进程的 id。在 Command> 提示符中输入下面的命令以生成一个报告:           
    1
    Command> jlmdump




  • 当您停止收集锁统计数据时,在 Command> 提示符中输入下面的命令:           
    1
    Command> jlmstop




  • 在 Command> 提示符中输入下面的命令以退出 rtdriver:           
    1
    Command> quit




如何解读 JLM 报告?下面的内容摘录自一个 log-jlm 文件:         
1
2
3
4
5
6
7
8
9
Java Lock Monitor Report
Version_5.0
Built : (Tue Apr 27 13:57:19 PDT 2004)
Platform : (Linux-ppc64)
JLM_Interval_Time 26896040
System (Registered) Monitors
%MISS GETS NONREC SLOW REC TIER2 TIER3 %UTIL AVER-HTM MON-NAME
0     4     2     0    2    0     0     0   26898   Monitor Cache lock
0     2     2     0    0    0     0     1   151640  Thread queue lock




报告包括三个部分,一个头,随后是两部分:System(Registered)Monitors 和 Java(Inflated)Monitors。System(Registered)Monitors 中的锁由 JVM 及其组件持有,Java(Inflated)Monitors 中的锁由用户 Java 程序持有。为简短起见,前面的摘录中略去了 Java(Inflated)Monitors 部分,不过,Java(Inflated)Monitors 中的锁的统计数据解释与 System(Registered)Monitors 部分所展示的锁完全相同。
头中包含的是关于 JLM 工具的信息,包括运行的工具的版本,工具是何时编译的,以及工具所运行的平台。JLM_Interval_Time 域中包含的是自执行         jlmstart 命令到执行         jlmdump 命令期间所发生的时基节拍数。      
接下来,报告显示了 System(Registered)Monitors 的统计数据。需要对这些统计数据做一下关于锁被请求的方式的简短说明。可以通过两种方式(        递归地或        非递归地)的其中一种来请求锁。如果锁是以递归方式被请求,那么发出请求的线程已经持有了它。如果锁是以非递归方式被请求,则发出请求的线程还没有持有它。有两种类型的非递归锁:快的和慢的。快锁是立即被请求的,没有等待。慢锁由另一个线程持有,在可以被请求之前必须被那另一个线程释放掉。      
System(Registered)Monitors 图表中的统计数据可以如下解释。图表中的每一行指的是一个不同的锁。锁的名称可以在右侧的 MON-NAME 栏中找到。
栏意义%MISS锁以非递归方式被请求但是不得不等待的次数百分比。计算公式为 %MISS = 100 * (SLOW / NONREC)GETS锁被请求的次数。计算公式为 GETS = FAST + SLOW + RECNONREC锁以非递归方式被请求的次数SLOW锁以非递归方式被请求但是不得不等待的次数REC锁以递归方式被请求的次数TIER2 and TIER3由于这一信息不用于 PowerPC,所以可以忽略它%UTIL从执行               jlmstart 命令到执行               jlmdump 命令期间锁被持有时间所占的百分比。计算公式为 100 * (Hold_Time / JLM_Interval_Time),其中               Hold_Time是锁被持有时发生的时基节拍数目            AVER-HTM在每一次非递归请求期间锁被持有时发生的平均时基节拍数目
返回列表