1.ps
ps不是性能分析的工具,只是需要用到,这里顺便写一下。
ps是用来获取进程的状态,top是用来查看进程的资源使用情况
2.vmstat
2.1 vmstat简单介绍
vmstat是Virtual Meomory Statistics(虚拟内存统计)的缩写,可对操作系统的虚拟内存、进程、CPU活动进行监控。它是对系统的整体情况进行统计,不足之处是无法对某个进程进行深入分析。vmstat工具提供了一种低开销的系统性能观察方式。因为vmstat本身就是低开销工具,在非常高负荷的服务器上,你需要查看并监控系统的健康情况,在控制窗口还是能够使用vmstat输出结果。
相比top,我可以看到整个机器的CPU,内存,IO的使用情况,而不是单单看到各个进程的CPU使用率和内存使用率(使用场景不一样)
2.2 vmstat用法介绍
要使用vmstat命令,首先第一步:要先安装sysstat工具
yum install sysstat -y
1.命令格式:
vmstat [-a] [-n] [-S unit] [delay [ count]]
vmstat [-s] [-n] [-S unit]
vmstat [-m] [-n] [delay [ count]]
vmstat [-d] [-n] [delay [ count]]
vmstat [-p disk partition] [-n] [delay [ count]]
vmstat [-f]
vmstat [-V]
2.命令功能:
用来显示虚拟内存的信息
3.命令参数:
-a:显示活跃和非活跃内存
-f:显示从系统启动至今的fork数量 。
-m:显示slabinfo
-n:只在开始时显示一次各字段名称。
-s:显示内存相关统计信息及多种系统活动数量。
delay:刷新时间间隔。如果不指定,只显示一条结果。
count:刷新次数。如果不指定刷新次数,但指定了刷新时间间隔,这时刷新次数为无穷。
-d:显示磁盘相关统计信息。
-p:显示指定磁盘分区统计信息
-S:使用指定单位显示。参数有 k 、K 、m 、M ,分别代表1000、1024、1000000、1048576字节(byte)。默认单位为K(1024 bytes)
-V:显示vmstat版本信息。
- vmstat 不加时间,只输出一行数据(默认只采集一次数据,所以下图只输出一行数据)
[root@vircent7 ~]# vmstat
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
r b swpd free buff cache si so bi bo in cs us sy id wa st
1 0 0 428140 2108 596552 0 0 55 4 42 77 0 0 99 0 0
[root@vircent7 ~]#
-
vmstat 加时间。(动态输出数据)
这表示vmstat每3秒采集数据,一直采集,直到我结束程序,按下ctr+c就可以结束程序。
3.vmstat 加时间 加采样次数
如下图: 每3秒输出一组数据且只采样2组数据
上图每列含义介绍:
第一列:procs:用来显示进程信息
r: 代表目前有多少个进程在等待。即展示了正在执行和等待CPU资源的任务个数。当这个值超过了
CPU数目,就会出现CPU瓶颈了
b: 代表目前有多少进程是不可中断的休眠。比如,某个员工上班不干活,休眠状态,但是你又不能开除 (如果该值一直都很大,说明IO比较繁忙,处理较慢)
第二列:memory
swpd:虚拟内存已使用的大小;如果swpd的值不为0,但是si,so的值长期为0,这种情况不会影响系统性能
free:空闲的物理内存的大小
buff:已使用的buff大小,对块设备的读写进行缓冲
cache:已使用的cache大小,文件系统的cache(如果cache的值大的时候,说明cache处的文件数多,如果频繁访问到的文件都能被cache处,那么磁盘的读IO bi会非常小;)
第三列:swap
si:交换内存使用,由磁盘调入内存(即虚拟内存读到物理内存,每秒从交换区写到内存的大小)
so:交换内存使用,由内存调入磁盘(即物理内存读到虚拟内存,每秒写入交换区的内存大小)
swap(交换空间,单位:KB);内存够用的时候,这2个值都是0,如果这2个值长期大于0时,系统性能会受到影响,磁盘IO和CPU资源都会被消耗。有时我们看到空闲内存(free)很少的或接近于0时,就认为内存不够用了,不能光看这一点,还要结合si和so,如果free很少,但是si和so也很少(大多时候是0),那么不用担心,系统性能这时不会受到影响的
第四列: io
bi:从块设备读入的数据总量(读磁盘) (KB/s),
bo:写入到块设备的数据总量(写磁盘) (KB/s)
第五列:system
in:每秒产生的中断次数
cs:每秒产生的上下文切换次数
上面这2个值越大,会看到由内核消耗的CPU时间会越多
第六列:cpu
us:用户进程消耗的CPU时间百分比.(us 的值比较高时,说明用户进程消耗的CPU时间多,但是如果长期超过50% 的使用,那么我们就该考虑优化程序算法或者进行加速了)
sy:内核进程消耗的CPU时间百分比(sy 的值高时,说明系统内核消耗的CPU资源多,这并不是良性的表现,我们应该检查原因。)
id:空闲
wa:IO等待消耗的CPU时间百分比(wa 的值高时,说明IO等待比较严重,这可能是由于磁盘大量作随机访问造成,也有可能是磁盘的带宽出现瓶颈(块操作))
st:
内存不足的表现:free memory急剧减少,回收buffer和cache也无济于事,大量使用交换分区(swpd),页面交换频繁(swap),读写磁盘数量(io)增多,缺页中断(in)增多,上下文切换(cs)次数增多,等待IO的进程数(b)增多,大量cpu时间用于等待IO(wa)