10.2 vmstat命令

时间:2022-04-27
本文章向大家介绍10.2 vmstat命令,主要内容包括监控系统状态、基本概念、基础应用、原理机制和需要注意的事项等,并结合实例形式分析了其使用技巧,希望通过本文能帮助到大家理解应用这部分内容。

监控系统状态

  • vmstat 命令,监控系统状态
  • 用法 vmstat 1
  • 关键的几列:r ,b,swpd,si,so,bi,us,wa

vmstat命令

  • 用 w 命令查看系统的负载,当系统的负载值偏高时,
    • 比如:数值大于CPU核数,那说明CPU不够用了,就需要去思考是什么原因导致的?我的进程在干什么?有哪些任务在使用CPU呢?
  • vmstat 命令,可以查看到CPU、内存、虚拟磁盘交换分区、I/O(就是你的磁盘)、系统进程等
    • 格式 : vmstat 1 表示每一秒动态显示一次
      • 数字1表示:每一秒钟动态显示一次
      • 结束的时候,按快捷键ctrl+c 将它终止掉
    • 格式:vmstat 1 5 表示每一秒显示一次,只需显示五次
      • 然后它会自动结束
[root@localhost ~]# vmstat
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
 2  0      0 681860    692 164808    0    0     7     0   13   15  0  0 100  0  0
[root@localhost ~]# vmstat 1    //表示每一秒动态显示一次
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
 2  0      0 681860    692 164840    0    0     7     0   13   15  0  0 100  0  0
 0  0      0 681836    692 164840    0    0     0     0   19   22  0  0 100  0  0
 0  0      0 681836    692 164840    0    0     0     0   16   15  0  0 100  0  0
 0  0      0 681836    692 164840    0    0     0     0   14   12  0  0 100  0  0
^C
[root@localhost ~]# vmstat 1 5    //表示每一秒显示一次,只需显示五次
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
 2  0      0 681836    692 164840    0    0     7     0   13   15  0  0 100  0  0
 0  0      0 681812    692 164840    0    0     0     0   19   23  0  0 100  0  0
 0  0      0 681812    692 164840    0    0     0     0   15   12  0  0 100  0  0
 0  0      0 681812    692 164840    0    0     0     0   14   15  0  0 100  0  0
 0  0      0 681812    692 164840    0    0     0     0   15   13  0  0 100  0  0
[root@localhost ~]# 
  • 这里的信息只需要关注这几列,r列,b列,swpd列,si列,so列,bi列,bo列,us列,wa列
    • r 英文单词(run),表示多少个进程处于 run 的状态
      • 在排着队,或者在进行中的进程,都属于run 的状态
    • b 英文单词(block),表示进程被CPU以外的资源给占用,处于一个等待的状态
    • swpd 在磁盘分区的时候,有一个swap空间,当内存不够使用时,可以把内存里的一部分数据临时放到swap空间里去
      • 当内存不够的时候,会使用swap空间。
        • 当swpd数字不变时,则没有关系;
        • 若是数字在持续的变化,那说明你的交换分区和你的磁盘在频繁的交换数据——>这只有一个结果,就是你的内存不够用了
    • si,so 和swpd是有相关联的,在swpd在频繁的改变,那么你的si,so肯定也是会存在数字变更的
      • si 表示有多少个的数据,有多少个块(单位:KB)——>有多少个KB的数据,从swap进入到内存中,这就是si
    • so 表示有多少个KB的数据,从内存中出来,就是 so
      • si和so的参照物就是——>内存
    • bi和bo是跟磁盘是有关系的
      • bi 就是从磁盘里出来,进入到内存中去的,这个就是 读 ,表示读的数据量有多少
      • bo 就是写入到磁盘里去,这个就是 写 ,表示写的数据量有多少
        • 若 bi 和 bo 这两个数值很大的话,就表示磁盘在频繁的读写
        • 磁盘i/o相比较CPU、内存也好都是很慢的,有很多的数据在读写,会造成 b列增加,因为有很多进程在等待磁盘,这是一个必然的结果
      • 当 bi和bo 值 上 5千 的时候就需要注意了
    • us 表示用户态的一些资源,占用CPU的百分比
      • 比如,操作系统不可能只运行一个系统, 还会运行系统上的服务 mysql等,这就会占用一部分cpu资源,就会体现在 us 这一部分
      • us的数字不会超过 100 ,因为一共就百分百,上面显示的就是百分比
      • 当 us 的数字长时间大于50 ,就说明你的系统资源不够了
    • sy 表示系统本身的一些进程,服务占用的百分比
    • id 表示空闲
    • us + sy + id 值 约等于100%
    • wa 英文(wait),表示等待CPU的百分比,有多少个进程在等待CPU,若这一列很大,说明CPU不够用—>和b列有点类似
  • 我们可以通过vmstat 命令,判断出系统的瓶颈在哪里,是CPU不够,还是内存不够,还是磁盘i/o太大,都可以判定出来。