Java 并发 性能分析工具
uwupu 啦啦啦啦啦

性能分析工具

Lmbench3、vmstat

vmstat

https://www.cnblogs.com/ggjucheng/archive/2012/01/05/2312625.html

vmstat是Linux下的一个监控工具,可以用来

  • CPU使用率
  • 内存使用
  • 虚拟内存交换IO读写情况;
1
2
3
$ vmstat 2 1
# 第一个参数表示采样的时间间隔数
# 第二个参数表示采样的次数,是可选参数,不输入表示一直采样
1
2
3
4
5
6
7
8
9
10
11
12
13
yyn@yynlinux:~$ vmstat 1
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
r b swpd free buff cache si so bi bo in cs us sy id wa st
0 0 0 2560392 36372 699792 0 0 365 226 173 465 1 2 96 0 0
0 0 0 2560392 36372 699792 0 0 0 0 143 347 1 1 98 0 0
1 0 0 2560392 36372 699792 0 0 0 0 147 344 1 1 98 0 0
1 0 0 2560392 36372 699792 0 0 0 0 150 341 1 1 98 0 0
5 0 0 2560392 36372 699792 0 0 0 0 146 339 0 1 99 0 0
0 0 0 2560392 36372 699792 0 0 0 0 144 344 1 0 99 0 0
0 0 0 2560392 36372 699792 0 0 0 0 148 338 1 1 98 0 0
2 0 0 2560392 36372 699792 0 0 0 0 134 334 0 0 100 0 0
0 0 0 2560392 36372 699792 0 0 0 0 145 335 1 0 99 0 0

这里表示vmstat每1秒采集一次数据;

  • r表示运行队列,即多少进程真的分配到CPU
    • 当这个值超过CPU数目,就会出现CPU瓶颈;
  • b:阻塞的进程;
  • swpd:虚拟内存使用大小,如果大于0,表示物理内存不足了;
  • free:空闲物理内存大小(内存/运存);
  • buff:Linux用来存储目录索引,权限等缓存;
  • cache:打开的文件的文件缓冲区;
  • si:每秒从磁盘读入虚拟内存的大小,值大于0表示物理内存不够用内存泄漏
  • so:每秒从虚拟内存写入磁盘的大小;
  • bi:块设备每秒接收的块数量;
    • 块设备指:系统上的所有磁盘和其他块设备,默认块大小1024byte。比如:磁盘写入速度;
  • bo:块设备每秒发送的块数量;
    • 比如:磁盘读入速度;
    • bi和bo的值一般要接近0,否则就是IO过于频繁,需要调整
  • in:每秒CPU中断次数,包括时间中断;
  • cs:每秒上下文切换次数,比如:调用系统函数,线程的切换等会触发上下文切换。这个值越小越好,太大要考虑调低线程或者进程的数目;
  • us:用户CPU时间;
  • sy:系统CPU时间。如果太高,表示系统调用时间长,如IO操作频繁;
  • id:空闲CPU时间,一般来说:id + us + sy = 100
  • wt:等待IO CPU时间。
 评论