Linux 基础之 vmstat 命令详解

文章目录

一、前言

vmstat(VirtualMeomoryStatistics,虚拟内存统计)是一个不错的 Linux/Unix 监控工具,在性能测试中除了top外也是比较常用的工具之一,它可以监控操作系统的 CPU 使用率,内存使用情况,虚拟内存交换情况,以及IO读写情况。与 top 相比各有千秋吧。

二、使用说明

也是根据 vmstat 自带的说明进行整理说明,那就是 "man vmstat" 我们会看到下面图上的信息

为了方便理解与查看,在此整理成了一个导图结构。

我们一层一层来解读吧。在解读之前先看一下,下面的图,更容易理解每个选项的意思及字段的含义

2.1 vmstat [delay/count/d/D/t/w]

选项:

  • delay: 刷新时间间隔,单位是秒。如果没有指定,只显示一条结果。例如实例图上的2,即时间间隔2秒刷新一次。

  • count: 刷新次数。例如图上的3,即输入刷新打印3次结果,如果没有指定刷新次数,但指定了刷新时间间隔,这时刷新次数就是不限制一直刷新直到手动停止。

  • -d:磁盘

  • reads【 or writes】

    • total:成功完成的总读取数
      • merged:分组读取【或写入】(产生一个 I/O)
      • sectors:扇区读取【或写入】成功
      • ms:阅读【或写入】花费的毫秒数
  • IO

    • cur:正在进行的 I/O
    • sec:I/O 花费的秒数
  • -D:--磁盘总和

  • -t :--时间戳,将时间戳附加到每一行

  • -w :--宽

    • 宽输出模式,输出宽度大于80每行字符。
    • 使用这个输出的结果比较列效果好看一些,要不数据多的时候,眼睛都要看花了,很容易看错。
    • 两个可以对比一下,没有使用前的输出效果。
  • -S: 显示单位。默认值是K(1024bytes),参数有k,K,m,M分别代表1000,1024,1000000,1048576字节(byte)

  • -V:版本信息

2.2.vm模式的字段

  • procs(过程):

    • r: 可运行进程数(正在运行或等待运行时), 也就是说有真正分配给cpu的进程,如果r值大于cpu核数,出现cpu负载,就会有可能出现cpu瓶颈。
    • b:阻塞等待I/O完成的进程数,当b大于0时,出现阻塞,一旦出现阻塞的话tps就不会很大,这个可以使用工具sar来查看tps实时值。sar具体使用说明参看"linux基础知识-sar详解"。
  • memory(内存,默认单位: kb):

    • swpd: 使用的交换内存量,当swpd值大于0时,说明服务器的物理内存不足,需要查看程序是否存在内存泄漏,如果确定不是的话需要增加服务器的物理内存。
    • free: 空闲内存量
    • buff: 用作缓冲区的内存量
    • cache: 活动内存的数量
  • swap(交换,单位:kb/秒):

    • si(kb/秒): 从磁盘交换到内存的交换页数量(kb/秒),如果si值大于0,则表示物理内存不足或是内存泄漏。
    • so(kb/秒): 从内存交换到磁盘的交换页数据(kb/秒),与si值一样,如果so值大于0,则表示物理内存不足或是内存泄漏。
  • io(输入输出,单位:块/秒):

    • bi(块/秒): 从块设备接收到的Kib byte(KiB/s)
    • bo(块/秒): 发送到块设备的Kib byte(KiB/s)
  • system(系统):

    • in: 每秒的中断次数,包括时钟
    • cs: 每秒上下文切换的次数,如调用系统函数,或是线程切换等都会引起上下文切换。所以这个值越小越好,如果过大,则表示cpu大部分时间都在做上下文切换调度上,从而就没有多少时间去处理其他事件,浪费cpu资源,所以当cs过大时,需要进行注意,尽量要考虑到调低线程或进程的数目。

注解:

上下文切换:通过CPU时间轮询的方法,Linux能够支持多任务同时运行。对于普通的CPU,内核会调试和执行这些进程,每个进程都会被分配CPU时间片并运行。当一个进程用完时间片或者被更高优先级进程抢占时间块后,它会被转到CPU的等待运行队列中,同时让其他进程在CPU上运行。这个进程切换的过程被称为上下文切换。过多的上下文切换会造成系统的很大的开销。

  • cpu(中央处理器,单位:%):
    • us(%): 运行非内核代码所使用的cpu(用户时间,包括nice time)
    • sy(%): 运行内核代码所使用的cpu(系统时间),sy值大时需要确认IO的频繁操作是否属于正常现象。
    • id(%): 空闲使用的cpu
    • wa(%): 等待IO所使用的cpu,如果wa值过高,则说明io等待比较严重,这可能是由于磁盘大量随机访问造成的,可有可能是磁盘的带宽出现了瓶颈。需要使用sar工具进一步确认。
    • st(%): 从虚拟机窃取所使用的cpu
    • gu: 运行KVM guest代码所使用的cpu(guest time ,包括guest nice)
相关推荐
Karoku0661 小时前
【CI/CD】CI/CD环境搭建流程和持续集成环境配置
运维·ci/cd·docker·容器·kubernetes·prometheus
夜泉_ly1 小时前
MySQL -安装与初识
数据库·mysql
qq_529835352 小时前
对计算机中缓存的理解和使用Redis作为缓存
数据库·redis·缓存
Nerd Nirvana3 小时前
软考—系统架构设计(案例 | 论文)
linux·系统架构·软件工程·软考·计算机基础
勤奋的凯尔森同学4 小时前
webmin配置终端显示样式,模仿UbuntuDesktop终端
linux·运维·服务器·ubuntu·webmin
月光水岸New4 小时前
Ubuntu 中建的mysql数据库使用Navicat for MySQL连接不上
数据库·mysql·ubuntu
狄加山6754 小时前
数据库基础1
数据库
我爱松子鱼4 小时前
mysql之规则优化器RBO
数据库·mysql
chengooooooo5 小时前
苍穹外卖day8 地址上传 用户下单 订单支付
java·服务器·数据库
Rverdoser6 小时前
【SQL】多表查询案例
数据库·sql