暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Linux性能监控之vmstat命令

Linux驯兽师 2021-08-19
250

本文主要介绍对Linux系统的CPU、内存、磁盘和网络四个方面性能评估的vmstat工具

vmstat命令

vmstat是virtual memory statistics(虚拟内存统计)的缩写,很多Linux发行版本都默认安装了此命令工具,利用vmstat可以对操作系统的进程、内存、分页、块 IO、traps、磁盘和 CPU 活动进行监视,不足之处是无法像top命令对某个进程进行深入分析。

vmstat语法如下:

 vmstat [options] [delay [count]]
复制

常用参数含义:

-n:周期性输出监控信息时,头部信息只输出一次

delay:更新之间的延迟,以秒为单位。如果没有指定延迟,只打印一次系统启动后的平均值

count:更新的次数。在没有计数的情况下,当定义延迟时,默认是无限

例如:

 #每隔3秒打印一次信息
 vmstat 3
 #每隔三秒打印一次信息,共打印5次
 vmstat 3 5
复制

上图各字段解释:

procs:显示进程状态

  • r:表示运行和等待CPU时间片的进程数,如果这个值长期大于系统CPU的个数,说明CPU不足,需要增加CPU

  • b:表示阻塞等待I/O完成的进程数量

memory:显示内存状态

  • swpd:表示虚拟内存使用量,单位KB。如果swpd的值不为0,或者比较大,只要si、so的值长期为0,就不会影响性能

  • free:表示空闲的物理内存使用量,单位KB

  • buff:表示buffers cache内存数量,一般对块设备的读写才需要缓冲

  • cache:表示page cached的内存数量,一般作为文件系统cached,频繁访问的文件都会被cached。如果cache值较大,说明cached文件数较多,如果此时I/O中bi比较小,则说明文件系统效率较好

    buffer:缓冲区,buffer是实时生成的数据流,先放入buffer中的数据一定会被先读取,所以访问有明显的顺序特性。常用于流量整形,当数据量大时,流量分割成多块buffer处理;小数据量时,流量要塞满buffer进行处理。如果某设备处理4K的数据量效率最高,则通过buffer把数量分割成4K大小进行处理。

    cache:缓存,cache是系统两端处理速度不匹配时的一种折中策略。因为CPU寄存器和磁盘之间访问速度差异巨大,而通过使用存储系统分级的策略可以减小这种差异带来的影响。数据保存在cache中是为了减少块设备的读取总量,先放入cache中的数据可能因为没有被读取,而被清除掉,所以访问有明显的随机性。

swap:显示交换分区/虚拟内存的使用状态

  • si:表示每秒从磁盘写入到虚拟内存/交换区的数据量(KB/S)

  • so:表示每秒从虚拟内存/交换区读出到磁盘的数据量(KB/S)

一般情况下,si、so的值都为0,如果si、so的值长期不为0,则表示物理内存不足或者存在内存泄露。

内存泄露是指程序未释放内存,逐渐积累,导致系统整体性能下降。

io:显示磁盘读写状况

  • bi:表示每秒从块设备读入到内存的块数(blocks/s)

  • bo:表示每秒从内存写入到块设备的块数(blocks/s)

system:显示采集间隔内发生的中断数

  • in:表示每秒中断数,包括时钟中断

  • cs:表示每秒上下文切换的次数

频繁中断和切换上下文会导致内核消耗大量CPU资源。这两个值要越小越好,如果过大,要考虑减少我们应用的线程数

cpu:显示CPU使用状态

  • us:表示用户进程消耗CPU时间的百分比,日常监控的重点

  • sy:表示内核进程消耗CPU时间的百分比

  • id:表示CPU处于空闲状态时间的百分比

  • wa:表示I/O等待时间的百分比

us的值高时,说明用户进程消耗CPU时间多,可能是处于业务高峰期或程序需要优化;sy的值高时,说明系统内核消耗的CPU资源多;wa的值高时,说明I/O等待越严重,I/O等待可能是磁盘存在大量随机读写造成的,也可能是磁盘宽瓶颈造成的应该检查具体原因健康的CPU状态应该保证(us+sy)<80%,wa<20%。



文章转载自Linux驯兽师,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论