Linux vmstat命令

0    554    6

Tags:

👉 本文共约2965个字,系统预计阅读时间或需12分钟。

简介

vmstat是Virtual Meomory Statistics(虚拟内存统计)的缩写,可对操作系统的虚拟内存、进程、CPU活动进行监控。是对系统的整体情况进行统计,不足之处是无法对某个进程进行深入分析。

vmstat命令是最常见的Linux/Unix监控工具,属于sysstat包。可以展现给定时间间隔的服务器的状态值,包括服务器的CPU使用率,内存使用,虚拟内存交换情况,IO读写情况。这个命令是我查看Linux/Unix最喜爱的命令,一个是Linux/Unix都支持,二是相比top,我可以看到整个机器的CPU,内存,IO的使用情况,而不是单单看到各个进程的CPU使用率和内存使用率(使用场景不一样)。

安装

一般vmstat工具的使用是通过两个数字参数来完成的,第一个参数是采样的时间间隔数,单位是秒,第二个参数是采样的次数,如:

2表示每个两秒采集一次服务器状态,1表示只采集一次。

实际上,在应用过程中,我们会在一段时间内一直监控,不想监控直接结束vmstat就行了,例如:

这表示vmstat每2秒采集数据,一直采集,直到我结束程序。

vmstat字段含义说明

procs(进程)

Linux vmstat命令

  • r,表示等待执行的任务数,展示了正在执行和等待cpu资源的任务个数。当这个值超过了cpu个数,就会出现cpu瓶颈。

  • b,表示等待IO的进程数量

memory

Linux vmstat命令

swpd:正在使用虚拟的内存大小,单位k

free:空闲内存大小

buff:已用的buff大小,对块设备的读写进行缓冲

cache:已用的cache大小,文件系统的cache

swap

Linux vmstat命令

swap(交换空间,单位:KB);内存够用的时候,这2个值都是0,如果这2个值长期大于0时,系统性能会受到影响,磁盘IO和CPU资源都会被消耗。有时我们看到空闲内存(free)很少的或接近于0时,就认为内存不够用了,不能光看这一点,还要结合si和so,如果free很少,但是si和so也很少(大多时候是0),那么不用担心,系统性能这时不会受到影响的;

  • si 即swap in,表示每秒从交换区写入内存的大小(单位:kb/s)

  • so 即swap out,表示每秒从内存写到交换区的大小(单位:kb/s)

一般在内存充足的情况下是不应有大量的 si,so的。

io

image-20210804101437747

  • bi:每秒读取的块数(读磁盘),块设备每秒接收的块数量,单位是block,这里的块设备是指系统上所有的磁盘和其他块设备,现在的Linux版本块的大小为1024bytes

  • bo:每秒写入的块数(写磁盘),块设备每秒发送的

system

image-20210804101752962

  • in:每秒中断数,包括时钟中断,这两个值越大,会看到由内核消耗的cpu时间sy会越多

  • cs:每秒上下文切换数,例如我们调用系统函数,就要进行上下文切换,线程的切换,也要进程上下文切换,这个值要越小越好,太大了,要考虑调低线程或者进程的数目

cpu

image-20210804101733992

  • us:用户进程执行消耗cpu时间(user time),us的值比较高时,说明用户进程消耗的cpu时间多,但是如果长期超过50%的使用,那么我们就该考虑优化程序算法或其他措施了
  • sy:系统进程消耗cpu时间(system time),sys的值过高时,说明系统内核消耗的cpu资源多,这个不是良性的表现,我们应该检查原因。这里us + sy的参考值为80%,如果us+sy 大于 80%说明可能存在CPU不足
  • Id:空闲时间(包括IO等待时间),一般来说 us+sy+id=100
  • wa:等待IO时间,wa过高时,说明io等待比较严重,这可能是由于磁盘大量随机访问造成的,也有可能是磁盘的带宽出现瓶颈。
  • st: Time stolen from a virtual machine. Prior to Linux 2.6.11, unknown. 来自于虚拟机偷取的CPU所占的百分比

简单分析

  • procs r: 运行的进程比较多,系统很繁忙,展示了正在执行和等待cpu资源的任务个数。当这个值超过了cpu个数,就会出现cpu瓶颈。
  • swap:如果swpd的值不为0,但是SI,SO的值长期为0,这种情况不会影响系统性能。
  • si,so:这两个值越大,会看到由内核消耗的cpu时间会越多。注意:内存够用的时候,这2个值都是0,如果这2个值长期大于0时,系统性能会受到影响,磁盘IO和CPU资源都会被消耗。有些朋友看到空闲内存(free)很少的或接近于0时,就认为内存不够用了,不能光看这一点,还要结合si和so,如果free很少,但是si和so也很少(大多时候是0),那么不用担心,系统性能这时不会受到影响的。
  • bi/bo::磁盘写的数据量稍大,如果是大文件的写,10M以内基本不用担心,如果是小文件写2M以内基本正常
  • cpu us::us的值比较高时,说明用户进程消耗的cpu时间多,如果持续大于50%,服务高峰期可以接受, 如果长期大于50 ,可以考虑优化
  • cpu sy::现实内核进程所占的百分比,sys的值过高时,说明系统内核消耗的cpu资源多,这里us + sy的参考值为80%,如果us+sy 大于 80%说明可能存在CPU不足。
  • cpu wa: 列显示了IO等待所占用的CPU时间的百分比。这里wa的参考值为30%,如果wa超过30%,说明IO等待严重,这可能是磁盘大量随机访问造成的,也可能磁盘或者磁盘访问控制器的带宽瓶颈造成的(主要是块操作)。
  • cpu id: CPU 空闲时所占百分比 平常持续小于50,服务高峰期可以接受

vmstat其它命令

以MB为单位输出统计信息

vmstat-S-M参数(大写和MB)将会以MB为单位输出。vmstat默认以KB为单位输出统计信息。

磁盘统计信息

vmstat-d参数将会输出所有磁盘的统计信息。

本人提供Oracle、MySQL、PG等数据库的培训和考证业务,私聊QQ646634621或微信db_bao,谢谢!

统计各种计数器

vmstat命令的-s参数,将输出各种事件计数器和内存的统计信息。

带时间戳的vmstat命令

-t参数执行vmstat命令,该命令将会在每一行输出后都带一个时间戳,如下所示。

列出活动和非活动的内存

vmstat的man页面中解析的每一列的意义。最重要的是内存中的free属性和交换分区中的siso属性。

标签:

头像

小麦苗

学习或考证,均可联系麦老师,请加微信db_bao或QQ646634621

您可能还喜欢...

发表回复

嘿,我是小麦,需要帮助随时找我哦
  • 18509239930
  • 个人微信

  • 麦老师QQ聊天
  • 个人邮箱
  • 点击加入QQ群
  • 个人微店

  • 回到顶部
返回顶部