玩命加载中 . . .

Linux stat家族之vmstat


概述

  • Virtual Meomory Statistics,报告虚拟内存统计信息
  • 统计进程信息、内存、交换区、IO、磁盘、CPU 等数据

vmstat主要能看什么性能指标

均是 Linux 系统级别

  • 运行状态、不可中断睡眠状态的进程数量

  • 内存、交换区、I/O、CPU 信息

  • 上下文切换次数、中断次数

  • 磁盘 I/O 的详细信息和概要信息

语法格式

[root@node81 ~]# vmstat -h

Usage:
 vmstat [options] [delay [count]]

Options:
 -a, --active           active/inactive memory
 -f, --forks            number of forks since boot
 -m, --slabs            slabinfo
 -n, --one-header       do not redisplay header
 -s, --stats            event counter statistics
 -d, --disk             disk statistics
 -D, --disk-sum         summarize disk statistics
 -p, --partition <dev>  partition specific statistics
 -S, --unit <char>      define display unit
 -w, --wide             wide output
 -t, --timestamp        show timestamp

 -h, --help     display this help and exit
 -V, --version  output version information and exit

For more details see vmstat(8).
  • options:命令行参数,可选

  • delay:间隔多久统计一次数据,可选

  • count:统计一次,可选

注意:
若只传了 delay,则统计次数是无限次,结束统计后会打印本次所有数据的平均值.

示例

vmstat 1

每隔 1s 统计打印一次数据,统计无限次

vmstat 2 5

每隔 2s 统计打印一次数据,共统计 5 次

命令行参数

简 写 完整写法 是否需要指定一个值 作用
-a –active F 显示活动和非活动内存
-n –one-header F 仅显示一次标题,而不是定期显示
-s –stats F 获取内存、CPU、swap、中断次数、上下文切换次数等信息
-d –disk F 获取磁盘的读写详细信息
-D –disk-sum F 获取磁盘的一些摘要信息
-P –partition device T (Device) 有关分区的详细统计信息
-S –unit character T (character) 输出数值的单位,charactr取值:k,K,m or M(Default is K),k:1000;K:1024;m:1000000;M:1048576
-t –timestamp F 加一列,显示当前时间
-V –version F 显示版本信息
-h –help F 帮助信息

统计数据的字段说明

[root@node81 ~]# vmstat 2 2
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 3549024 309900 938184    0    0    47    23  246  293  1  1 98  0  0
 2  0      0 3501380 309908 938184    0    0     0    30 3602 3698  1  6 93  0  0
[root@node81 ~]# 

共有 6 个模块

procs:进程状态

字段 字段说明
r 处于 Runnable状态的进程数量
b 处于不可中断睡眠状态的进程数量

memory:内存信息

字段 字段说明
swpd 已用虚拟内存
free 空闲内存
buff 用于缓冲区的内存
cache 用于缓存的内存
inact 不活动的内存量(-a)
active 活动的内存量(-a)

swap:交换区

字段 字段说明
si 每秒从交换区写到内存的大小
so 每秒写入交换区的内存大小

io:io 读写信息

现在的Linux版本块的大小为1024bytes

字段 字段说明
bi 每秒读取的块数
bo 每秒写入的块数

system:系统信息

字段 字段说明
in 每秒中断数,包括时钟中断
cs 每秒上下文切换次数

CPU:CPU 详细信息

这些是总 CPU 时间的百分比

字段 字段说明
us 用户态进程的CPU使用率
sy 内核态进程的CPU使用率
id 空闲CPU百分比
wa 等待IO的CPU使用率
st 从虚拟机偷取的CPU百分比

数据来源

主要来自这三个文件:

/proc/meminfo
/proc/stat
/proc/*/stat
[root@node81 ~]# 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      0 3379916 312036 942032    0    0    43    21  246  294  1  1 98  0  0
[root@node81 ~]# vmstat 1 2
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 3376784 312060 942032    0    0    43    21  246  294  1  1 98  0  0
 0  0      0 3376712 312060 942040    0    0     0     0 1082 1554  0  0 100  0  0
[root@node81 ~]# 

上面这些信息主要来自 /proc/stat

[root@node81 ~]# vmstat -s
     12295904 K total memory
      7668944 K used memory
      7718024 K active memory
       457556 K inactive memory
      3372716 K free memory
       312164 K buffer memory
       942080 K swap cache
      6161404 K total swap
            0 K used swap
      6161404 K free swap
        50128 non-nice user cpu ticks
           22 nice user cpu ticks
        86934 system cpu ticks
      7102823 idle cpu ticks
        25004 IO-wait cpu ticks
            0 IRQ cpu ticks
         3045 softirq cpu ticks
            0 stolen cpu ticks
      3105928 pages paged in
      1531600 pages paged out
            0 pages swapped in
            0 pages swapped out
     17847205 interrupts
     21369346 CPU context switches
   1674110880 boot time
        92634 forks
[root@node81 ~]# 

上面这些信息的分别来自于 /proc/meminfo 、 /proc/stat 和 /proc/vmstat

[root@node81 ~]# vmstat -d
disk- ------------reads------------ ------------writes----------- -----IO------
       total merged sectors      ms  total merged sectors      ms    cur    sec
fd0        0      0       0       0      0      0       0       0      0      0
sda    25592    955 1207050   96572  16120  31009  665696  290943      0     60
sdb    65035   1359 3634310  342617  59749 236139 2398312 7186627      0    110
sr0       18      0    2056      41      0      0       0       0      0      0
sdc      267      0    3888     359      0      0       0       0      0      0
sdd      512      0   16360     901      0      0       0       0      0      0
sde      832      0 1314536   11707      0      0       0       0      0      6
sdf      469      0   14288     692      0      0       0       0      0      0
sdg      267      0    3888     356      0      0       0       0      0      0
sdh      267      0    3888     399      0      0       0       0      0      0
sdi      267      0    3888     402      0      0       0       0      0      0
sdj      267      0    3888     355      0      0       0       0      0      0
sdk      267      0    3888     317      0      0       0       0      0      0
dm-0     162      0    8328     238      0      0       0       0      0      0
dm-1     205      0   10400     481      0      0       0       0      0      0
dm-2     525      0 1308576   11293      0      0       0       0      0      5
[root@node81 ~]# 

上面这些信息主要来自于 /proc/diskstats

其他用法

打印活动内存和不活动内存量

[root@node81 ~]# vmstat -a 1 2
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
 r  b   swpd   free  inact active   si   so    bi    bo   in   cs us sy id wa st
 0  0      0 3351248 457672 7736448    0    0    42    21  246  294  1  1 98  0  0
 0  0      0 3349100 457676 7738260    0    0     0    32 1482 1945  1  0 99  0  0
[root@node81 ~]# 

这里有 ‘inact’ & 'active’关键字。

以 MB 单位输出结果

[root@node81 ~]# vmstat -S M 1 2
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   3259    305    920    0    0    42    21  246  294  1  1 98  0  0
 1  0      0   3259    305    920    0    0     0     0 1445 1936  0  0 99  0  0
[root@node81 ~]# 

以 MB 单位输出各事件计数器和内存的统计信息

[root@node81 ~]# vmstat -s -S M
        12007 M total memory
         7527 M used memory
         7570 M active memory
          447 M inactive memory
         3254 M free memory
          305 M buffer memory
          920 M swap cache
         6016 M total swap
            0 M used swap
         6016 M free swap
        50984 non-nice user cpu ticks
           22 nice user cpu ticks
        88723 system cpu ticks
      7244100 idle cpu ticks
        25046 IO-wait cpu ticks
            0 IRQ cpu ticks
         3074 softirq cpu ticks
            0 stolen cpu ticks
      3106216 pages paged in
      1534792 pages paged out
            0 pages swapped in
            0 pages swapped out
     18194132 interrupts
     21812846 CPU context switches
   1674110880 boot time
        93251 forks
[root@node81 ~]#

注意事项

  • vmstat 不需要特殊权限

  • vmstat 报告旨在帮助确定系统瓶颈,所以它不会将自己视为正在运行的进程

  • 当前所有的 Linux 块都是 1024 字节, 旧内核可能报告的块为 512 字节,2048 字节或 4096 字节


文章作者: Gavin Wang
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 Gavin Wang !
  目录