最大化 AIX 上的 Java 性能,第 2 部分: 速度需求
2008-11-10 08:26:34 来源:WEB开发网本部分的其余内容将简单介绍一些常用的工具和如何检测特定于 Java 的问题。有关更多详细信息,请参见 AIX 5L Performance Tools Handbook 和 Understanding IBM eServer pSeries Performance and Sizing。
vmstat
vmstat 可用于提供有关系统的多种统计信息。对于特定于 CPU 的工作,可以尝试以下命令:
vmstat -t 1 3
此命令执行 3 次采样,每次相隔 1 秒钟,并带有时间戳 (-t)。您当然可以随心所欲地更改参数。下面显示了此命令的输出:kthr memory page faults cpu time
----- ----------- ------------------------ ------------ ----------- --------
r b avm fre re pi po fr sr cy in sy cs us sy id wa hr mi se
0 0 45483 221 0 0 0 0 1 0 224 326 362 24 7 69 0 15:10:22
0 0 45483 220 0 0 0 0 0 0 159 83 53 1 1 98 0 15:10:23
2 0 45483 220 0 0 0 0 0 0 145 115 46 0 9 90 1 15:10:24
此输出中需要观察的一些内容包括:
列 r(运行队列)和 b(被阻塞)开始上升,尤其是高于 10。这通常是有太多进程在争用 CPU 的迹象。
如果 cs(上下文切换)与进程数量相比上升得非常高,您可能需要使用 vmtune 来优化系统。此主题超出了本系列的范围。
在 cpu 部分,us(用户时间)指示在程序中所花的时间。假设 Java 在 tprof 中位于列表顶部,您可能需要优化 Java 应用程序。
在 cpu 部分,如果 sys(系统时间)高于预期,并且您仍然还剩有 id(空闲)时间,这可能表示锁争用。检查 tprof 以了解内核时间中与锁相关的调用。您可能希望尝试运行 JVM 的多个实例。还可以在 javacore 文件中查找死锁。
更多精彩
赞助商链接