为了能准确获得程序的性能信息,需要使用各种辅助工具。以下主要介绍了Linux上关于Java的系统性能分析工具,掌握这些工具,对于性能瓶颈定位、系统故障排查都有帮助。
1、top命令
1 [root@localhost ~]#top
2 top - 10:00:05 up 4 days, 22:16, 1 user, load average: 0.00, 0.01, 0.05
3 Tasks: 211 total, 1 running, 210 sleeping, 0 stopped, 0zombie4 Cpu(s): 0.0%us, 0.0%sy, 0.0%ni,100.0%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st5 Mem: 8064684k total, 3277888k used, 4786796k free, 202912k buffers6 Swap: 8142844k total, 0k used, 8142844k free, 2503844k cached7
8 PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+COMMAND9 18730 root 20 0 15196 1220 840 R 0.3 0.0 0:00.06top10 1 root 20 0 19408 1576 1252 S 0.0 0.0 0:00.87init11 2 root 20 0 0 0 0 S 0.0 0.0 0:00.08kthreadd12 3 root 20 0 0 0 0 S 0.0 0.0 0:00.31 ksoftirqd/0
13 5 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 kworker/0:0H14 7 root RT 0 0 0 0 S 0.0 0.0 0:00.03 migration/
【释义】
第一行:top - 10:00:05 up 4 days, 22:16, 1 user, load average: 0.00, 0.01, 0.05
任务队列信息:与uptime命令执行结果一样。
10:00:05
up 4 days, 22:16
1 user
load average: 0.00, 0.01, 0.05
当前系统时间
系统运行时间,格式为时:分
当前登录用户数
系统负载,即任务队列的平均长度。 三个数值分别为 1分钟、5分钟、15分钟前到现在的平均值。
第二行:Tasks: 211 total, 1 running, 210 sleeping, 0 stopped, 0zombie
进程统计信息:
211 total
1 running
210 sleeping
0 stopped
0zombie
进程总数
正在运行的进程数
睡眠的进程数
停止的进程数
僵尸进程数
第三行:Cpu(s): 0.0%us, 0.0%sy, 0.0%ni,100.0%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
CPU统计信息:
0.0%us
0.0%sy
0.0%ni
100.0%id
0.0%wa
0.0%hi
0.0%si
0.0%st
用户空间CPU占用率
内核空间CPU占用率
用户进程空间内改变过优先级的进程CPU占用率
空闲CPU占用率
等待输入输出的CPU时间百分比
硬件中断请求
软件中断请求
Steal Time
第四、五行:Mem: 8064684k total, 3277888k used, 4786796k free, 202912k buffers
Swap: 8142844k total, 0k used, 8142844k free, 2503844k cached
内存信息:
Mem
8064684k total
3277888k used
4786796k free
202912k buffers
物理内存总量
已使用的物理内存
空闲物理内存
内核缓存使用量
Swap
8142844k total
0k used
8142844k free
2503844k cached
交换区总量
使用的交换区总量
空闲交换区大小
缓存交换区大小
第六行:PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+COMMAND
进程信息:
PID
USER
PR
NI
VIRT
RES
进程id
进程所有者的用户id
优先级
nice值。负值表示高优先级,正值表示低优先级
进程使用的虚拟内存总量,单位kb。VIRT=SWAP+RES
进程使用的、未被换出的物理内存大小,单位kb。RES=CODE+DATA
SHR
S
%CPU
%MEM
TIME+
COMMAND
共享内存大小,单位kb
进程状态。
D=不可中断的睡眠状态
R=运行
S=睡眠
T=跟踪/停止
Z=僵尸进程
上次更新到现在的CPU时间占用百分比
进程使用的物理内存百分比
进程使用的CPU时间总计,单位1/100秒
命令名/命令行
还有其他的一些参数,这里没有列出,了解请查看《Java程序性能优化-让你的Java程序更快、更稳定》这本书的第300页。
另外,top命令还有一些比较使用的交互命令:
f
o
h
k
q
c
M
P
T
数字1
可以进行列的选择
可以更改列的显示顺序
显示帮组信息
终止一个进程
退出程序
切换显示命令名称和完整命令行
根据驻留内存大小进行排序
根据CPU使用百分比大小进行排序
根据时间/累积时间进行排序
显示所有CPU负载情况
注意:使用top命令可以从宏观上观察系统各个进程对CPU的占用情况以及内存使用情况
2、sar命令
3、vmstat命令
4、iostat命令
5、pidstat命令