51节 2021-03-10服务器性能分析指令vmstat

1.ps

ps不是性能分析的工具,只是需要用到,这里顺便写一下。


image.png

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版本信息。


image.png
image.png
  1. 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 ~]# 

  1. vmstat 加时间。(动态输出数据)


    image.png

    这表示vmstat每3秒采集数据,一直采集,直到我结束程序,按下ctr+c就可以结束程序。

3.vmstat 加时间 加采样次数
如下图: 每3秒输出一组数据且只采样2组数据


image.png

上图每列含义介绍:

第一列: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)

推荐阅读更多精彩内容

  • 1.top命令(最常用的性能分析工具) 通过top命令,可以看到 时间信息:当前时间10:38:50;系统运行时间...
    陈小慕阅读 249评论 0 0
  • top统计信息 继49章今天我们继续来看top的相关知识。 上图第二行:进程信息 Tasks: 163 total...
    testerPM阅读 161评论 0 0
  • 概述 什么是性能? 性能最通俗的衡量指标就是“时间”,CPU的使用率指的是CPU用于计算的时间占比,磁盘使用率指的...
    请不要问我是谁阅读 2,008评论 0 0
  • 这篇文章主要介绍一些常用的linux服务器性能监控命令,包括命令的常用参数、指标的含义以及一些交互操作。 几个问题...
    dancingking阅读 7,937评论 6 22
  • 推荐指数: 6.0 书籍主旨关键词:特权、焦点、注意力、语言联想、情景联想 观点: 1.统计学现在叫数据分析,社会...
    Jenaral阅读 5,421评论 0 5