1. 命令说明

    vmstat :命令可以观察到系统的进展状态、内存使用、虚拟内存使用、磁盘IO读写、中断、上下文切换、CPU使用等负载信息。相对于top命令、iostat命令以及free命令来说,它是一个综合查看性能的命令。

    参数说明

    Linux监控--vmstat命令详解_第1张图片


    参数 说明
    -a 显示活跃和非活跃页面状态(内存)
    -S 指定单位显示,对内存有效 k(1000) K(1024) m(1000000) M(1048567),默认为K
    delay 刷新间隔时间,如果不指定则只显示一条
    count 刷新次数,如果不指定次数,而指定了刷新时间,则为无穷次数
  2. 输出内容说明

    wKiom1csZqLjNReVAADRUGpnJjc725.jpg


    区域 参数 说明
    procs(进程) r 队列运行中的进程数量。如果这个值长期了CPU个数,就出现了CPU瓶颈。
    b 等待IO的进程数量。
    memory(内存) swpd 使用虚拟内存大小,如果swpd的值不为0,但是si、so的值长期为0,这种情况不会影响系统性能。
    free 空闲物理内存大小。
    buff 用作缓冲的内存大小。
    cache 用作缓存的内存大小。如果cache的值大,说明cache处的文件数多,频繁访问的文件就会放到cache中,那么磁盘IO的压力就会小。
    具体buff和cache的区别,后面再讲。
    swap si 每秒从交换区写入到内存的大小,由磁盘调入内存。.如果大于0表示物理内存不够用或者内存泄漏,要查找不够用的原因。
    so 每秒从内存写入到交换区的大小,由内存调入磁盘。如果这个值大于0,原因同上。
    注意:内存充足的时候,这2个值为0,如果这两个值长期大于0,系统性能就会受影响,磁盘IO和CPU资源都会被消耗。Linux的内存机制和Windows不同,所以看到内存很低并不一定是内存不够用,还要结合si和so来看。
    io bi 每秒读取的块数(1kb)
    bo 每秒写入的块数
    随机读写磁盘的时候,这2个值越大(如果超过1024k),能看到CPU在IO等待的值也会大。
    system in 每秒中断数,包括时钟中断。
    sc 每秒上下文切换数。
    上面2个值越大,会看到由内核消耗的CPU时间会越大。
    CPU us 用户进程执行时间百分比。该值较高,说明用户进程消耗的CPU时间多,但如果长期50%,我们就要考虑优化程序。

    sy 内核系统进程执行时间百分比。该值高,说明系统内核消耗的CPU资源多,正常来说不应该出现这种情况。

    wa IO等待时间百分比。该值高,说明IO等待比较严重,可能是磁盘大量随机访问造成的,也可能磁盘出现瓶颈。

    id 空闲时间百分比

    id+us+sy=100


小文件读写的瓶颈是 磁盘寻址时间,大文件读写的平均是总线带宽。Linux可以利用空闲内存做文件访问的cache,因此 系统内存大对存储系统的性能也就越好