AIX 系统应用性能分析
AIX 系统应用性能分析
测试过程中,主要使用了一些Power平台的相关命令工具进行性能观察和优化测试。另外,最终测试结果主要 以TPS值为性能评估依据,所以没有体现是通过哪些工具来实现性能监控和瓶颈优化的。从这一点来看, 和一个成熟的C+TUXEDO应用性能监控优化工具”还不太⼀一样。 用topas或者sar,可以看到系统的cpu使用情况。注意wio一列,wio通常表示CPU在IO方面的使用率。
# sar -u 10 3
AIX lpar05 2 5 00040B1EFC00
17:54:58 %usr %sys %wio %idle
17:55:08 30 57 1 12
17:55:18 29 57 1 12
17:55:28 26 43 1 29
Average 29 53 1 18
用tprof命令,可以跟踪统计程序运行期间,代码中具体调用方法对CPU资源的消耗情况。统计的数据中,又根据不同的调用方式分为了系统CPU消耗,用户CPU消耗等等。这个工具简而言之,可以用来分析程序中哪⼀部分代码对CPU的使用率最高。下面这个例子是JAVA进程共享库部分对CPU的使用率。共享库使用了29%的CPU资源。这其中,libj9gc24.so使用了12%。这个动态库的作用是负责JAVA运行过程中的GC(Garbage Collection)。
Total % For All Processes (SH-LIBs) = 29.42
Shared Object %
============= ======
/usr/java6/jre/lib/ppc/libj9gc24.so 11.71
/usr/java6/jre/lib/ppc/libj9jit24.so 11.44
/usr/lib/libpthreads.a[shr_xpg5.o] 2.04
/usr/java6/jre/lib/ppc/libj9vm24.so 1.63
/usr/java6/jre/lib/ppc/libzip.so 0.69
/usr/lib/libc.a[shr.o] 0.67
通过ps命令配合相关选项,可以看到进程内线程对CPU的使用情况。这是⼀个非常好的方法,尤其在⼀些JAVA进程的CPU性能分析的场合。JAVA进程的应用大多数是多线程实现,⼀个JAVA进程的CPU的资源使用,其实就是进程内部线程的使用。能即时知道每个线程对CPU的使用情况,对解决JAVA的性能问题至关重要。具体的使用命令如下(CP⼀列表示CPU使用率,TID表示线程ID):
#ps -mo THREAD -T <pid>
USER PID PPID TID ST CP PRI SC WCHAN F TT BND COMMAND
jil2200 7274588 2294004 - A 0 60 43 * 242001 - - \java -Xms4096m
- - - 8978441 S 22 60 1 f1000a01001f01d8 410400 - - \---
- - - 9240763 S 0 78 1 f1000f0a10008d40 8410404 - - \---
- - - 9568481 S 0 82 1 f1000f0a10009240 8410404 - - \---
- - - 16187639 S 0 82 1 f1000f0a1000f740 8410404 - - \--
通过这些命令,可以观察到进程和CPU资源的使用情况。同时,也可以看到进程内部具体方法、线程对CPU的使用数据等等。有了这些,就可以很容易的处理进程CPU使用率过高的问题。除了进程CPU使用率过高,还有⼀种相反的现象是CPU使用率过低。尤其在进行⼀些性能压力测试的场景里。这也是⼀种性能问题,需要进行分析。分析的过程也是利用这些CPU资源观察工具,检查问题所在。针对CPU的使用率高低所产生的性能问题,有⼀些共性的分析点。当观察到CPU几乎无使用或者使用率很低时,可以检查的方向包括:⼀、进程内部的死锁,或者有频繁的锁同步。二,进程所依赖的外部资源堵塞;当观察到CPU的使用率很高时,检查的方向包括:程序代码中是否有循环代码。
上一篇: php中define与const的区别
下一篇: AIX内核扩展编程1