xixi

linux vmstat

2017/11/06

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

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

1
2
3
4
5
6
7
8
9
10
11
12
13
$ vmstat 1 10
procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu-----
r b swpd free buff cache si so bi bo in cs us sy id wa st
0 0 0 129616 6552 1734536 0 0 3 28 0 0 2 0 97 0 0
0 0 0 129352 6552 1734636 0 0 0 172 1644 1196 4 1 96 0 0
0 0 0 129352 6552 1734668 0 0 0 0 1338 1164 3 1 97 0 0
1 0 0 129632 6552 1734932 0 0 0 0 2695 2396 14 1 85 0 0
1 0 0 128640 6560 1735324 0 0 0 16 2208 2082 11 1 88 0 0
0 0 0 128252 6560 1735692 0 0 0 0 1361 1024 7 1 92 0 0
0 0 0 128244 6560 1735756 0 0 0 16 854 831 2 1 97 0 0
1 0 0 128384 6560 1735828 0 0 0 0 1651 1289 4 1 95 0 0
0 0 0 128260 6560 1735872 0 0 0 0 1178 995 2 1 97 0 0
0 0 0 128260 6568 1735900 0 0 0 20 1086 958 2 0 98 0 0

第一个参数表示每隔多久采集一次 第二个参数是总共采集次数

  • r 表示运行队列
  • b 表示阻塞的进程
  • swpd 交换分区虚拟内存已使用的大小
  • free 空闲的物理内存的大小
  • buff Linux/Unix系统是用来存储,目录里面有什么内容,权限等的缓存
  • cache cache直接用来记忆我们打开的文件,给文件做缓冲
  • si 每秒从磁盘读入虚拟内存(交换分区)的大小,如果这个值大于0,表示物理内存不够用或者内存泄露了
  • so 每秒虚拟内存写入磁盘的大小(交换分区),如果这个值大于0,同上。
  • bi 块设备每秒接收的块数量,这里的块设备是指系统上所有的磁盘和其他块设备,默认块大小是1024byte
  • bo 块设备每秒发送的块数量,例如我们读取文件,bo就要大于0。bi和bo一般都要接近0,不然就是IO过于频繁,需要调整。
  • in 每秒CPU的中断次数,包括时间中断
  • cs 每秒上下文切换次数,调用系统函数、线程的切换需要进程上下文切换,这个值要越小越好
  • us 用户CPU时间(用户态)
  • sy 系统CPU时间(系统态)
  • id CPU空闲时间 一般来说,id + us + sy = 100
  • wa 等待IO CPU时间。
  • st 未知
CATALOG