Linux性能监控工具Vmstat命令详解

前言:vmstat命令是最常见的Linux/Unix监控工具,可以展现给定时间间隔的服务器的状态值,包括服务器的CPU使用率,内存使用,虚拟内存交换情况,IO读写情况。

描述

vmstat 对系统的进程情况、内存使用情况、交换页和 I/O 块使用情况、中断以及 CPU 使用情况进行统计并报告相应的信息。

用法

vmstat [-a] [-n] [-t] [-S unit] [delay [ count]]
vmstat [-s] [-n] [-S unit]
vmstat [-m] [-n] [delay [ count]]
vmstat [-d] [-n] [delay [ count]]
vmstat [-p disk partition] [-n] [delay [ count]]
vmstat [-f]
vmstat [-V]

选项

-a    显示活动和非活动的内存
-f    显示系统启动自今的fork数量
-t    将时间戳显示在最后
-m    显示slabinfo
-n    开关令第一次的信息只显示一次而不是周期地产生。(该选项是默认选项)
-s    显示内存统计信息和各种系统事件数量
delay:延时是以秒为单位的刷新时间间隔。如果没有给出此延时时间,则仅显示系统启动至今的平均值。
count:次数指的是更新的次数。如果没有指定此数而又定义了延时时间,则次数的默认值是无穷次。
-d    显示磁盘统计数据
-w    扩大字段的显示宽度(这个选项是为了大内存系统考虑的)
-p    显示指定分区的详细统计数据
-S    使用指定单位显示,默认单位为K(1024 bytes),参数有k、K、m、M ,分别代表1000、1024、1000000、1048576字节(bytes)
-V    开关可以用来输出该命令的版本信息。

输出信息详细介绍

Procs
r: 等待运行的进程数
b: 处在非中断睡眠状态的进程数

Memory
swpd: 虚拟内存使用情况,单位:KB
free: 空闲的内存,单位KB
buff: 被用来做为缓存的内存数,单位:KB

Swap
si: 从磁盘交换到内存的交换页数量,单位:KB/秒
so: 从内存交换到磁盘的交换页数量,单位:KB/秒

IO
bi: 发送到块设备的块数,单位:块/秒
bo: 从块设备接收到的块数,单位:块/秒

System
in: 每秒的中断数,包括时钟中断
cs: 每秒的环境(上下文)切换次数

CPU
按 CPU 的总使用百分比来显示
us: CPU 使用时间
sy: CPU 系统使用时间
id: 闲置时间

示例:

[root@huis ~]# vmstat 2 5            #每2秒显示一次x统计信息,共显示5次
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  27596  80972 147036 1294612    0    0     4   587   20   11  1  1 88 10  0
2  0  27596  82708 147036 1294620    0    0     0   288  822  654  6  2 85  8  0
0  0  27596  82584 147036 1294624    0    0     0   286  538  415  1  1 90  8  0
0  0  27596  82492 147048 1294632    0    0     0  3660  673  510  1  1 74 25  0
0  0  27596  82492 147048 1294636    0    0     0   232  696  608  4  1 85 10  0
[root@huis ~]# vmstat -d             #显示磁盘信息
disk- ------------reads------------ ------------writes----------- -----IO------
total merged sectors      ms  total merged sectors      ms    cur    sec
ram0       0      0       0       0      0      0       0       0      0      0
ram1       0      0       0       0      0      0       0       0      0      0
ram2       0      0       0       0      0      0       0       0      0      0
ram3       0      0       0       0      0      0       0       0      0      0
ram4       0      0       0       0      0      0       0       0      0      0
ram5       0      0       0       0      0      0       0       0      0      0
ram6       0      0       0       0      0      0       0       0      0      0
ram7       0      0       0       0      0      0       0       0      0      0
ram8       0      0       0       0      0      0       0       0      0      0
ram9       0      0       0       0      0      0       0       0      0      0
ram10      0      0       0       0      0      0       0       0      0      0
ram11      0      0       0       0      0      0       0       0      0      0
ram12      0      0       0       0      0      0       0       0      0      0
ram13      0      0       0       0      0      0       0       0      0      0
ram14      0      0       0       0      0      0       0       0      0      0
ram15      0      0       0       0      0      0       0       0      0      0
loop0      0      0       0       0      0      0       0       0      0      0
loop1      0      0       0       0      0      0       0       0      0      0
loop2      0      0       0       0      0      0       0       0      0      0
loop3      0      0       0       0      0      0       0       0      0      0
loop4      0      0       0       0      0      0       0       0      0      0
loop5      0      0       0       0      0      0       0       0      0      0
loop6      0      0       0       0      0      0       0       0      0      0
loop7      0      0       0       0      0      0       0       0      0      0
sda   136164  12159 8900472 1424193 17695973 166407005 1472738036 281879696      0 141114
[root@huis ~]# vmstat -s		#显示内存统计信息和各种系统事件数量
      1912548  total memory
      1831984  used memory
       855600  active memory
       822524  inactive memory
        80564  free memory
       147528  buffer memory
      1283840  swap cache
      2099192  total swap
        27600  used swap
      2071592  free swap
      1641416 non-nice user cpu ticks
            5 nice user cpu ticks
       804102 system cpu ticks
    110634429 idle cpu ticks
     12153283 IO-wait cpu ticks
         3041 IRQ cpu ticks
       227747 softirq cpu ticks
            0 stolen cpu ticks
      4452700 pages paged in
    736574630 pages paged out
         1911 pages swapped in
         7087 pages swapped out
    412485903 interrupts
    314472144 CPU context switches
   1442885388 boot time
       147449 forks
[root@huis ~]# vmstat -w                   #以扩大字段的显示宽度显示统计信息
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      27600      87632     147584    1280728    0    0     4   587   21   11   1  1  88 10  0

注:下面是不加-w选项的显示,可以进行对比一下,两者显示的宽度明显不同,而且加-w选项后各字段与相对的值显示更整齐

[root@huis ~]# vmstat
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  27600  85924 147688 1281412    0    0     4   587   21   11  1  1 88 10  0