vmstat 命令

vmstat 命令的含义为显示虚拟内存状态(“Viryual Memor Statics”),但是它可以报告关于进程、内存、I/O 等系统整体运行状态。

命令用法

$ vmstat [options] [delay [count]]

其中:

  • delay:时间间隔,状态信息刷新的时间间隔;

  • count:次数,显示报告的次数。

常用可选参数

参数

说明

-a, --active

显示活动/非活动的内存信息

-f, --forks

显示启动后创建的进程总数

-n, --one-headers

仅显示一次头信息

-m, --slabs

显示 slab 信息

-d, --disk

显示磁盘的统计信息

-D, --disk-sum

显示磁盘的总和信息

-s, --stats

以表格的形式显示事件计数器的统计信息

-S, --unit CHAR

定义显示信息的单位 CHAR

-t, --timestamp

显示时间戳

结果参数解析

gackle@machine:~$ 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    320  42188 167332 1534368    0    0     4     7    1    0  0  0 99  0  0
 0  0    320  42188 167332 1534392    0    0     0     0 1002   39  0  0 100  0  0

其中

  • procs(进程)

    • r 运行队列中进程数量;

    • b 等待 IO 的进程数量;

  • memory(内存)

    • swpd 使用虚拟内存大小。如果 swpd 的值不为 0,但是 si,so 的值长期为 0,这种情况不会影响系统性能

    • free 空闲物理内存大小

    • buff 缓冲区的内存大小

    • cache 用作缓存的内存大小。如果 cache 的值大的时候,说明 cache 处的文件数多,如果频繁访问到的文件都能被cache 处,那么磁盘的读IO 的 bi 值会非常小。

  • swap(交换区内存)

    • si 每秒从交换区写到内存的大小,由磁盘调入内存。

    • so 每秒写入交换区的内存大小,由内存调入磁盘。

  • io(io 系统) —— 下面这 2 个值越大(如超出1024k),CPU 在 IO 等待的值也会越大

    • bi 每秒读取的块数

    • bo 每秒写入的块数

  • system(操作系统) —— 下面这两个值越大,由内核消耗的CPU时间会越大

    • in 每秒中断数,包括时钟中断

    • cs 每秒上下文切换数

  • cpu

    • us 用户进程执行时间百分比。us 的值比较高时,说明用户进程消耗的CPU时间多,但是如果长期超 50% 的使用,要考虑优化程序算法或者进行加速。

    • sy 内核系统进程执行时间百分比。sy 的值高时,说明系统内核消耗的CPU资源多,要排查问题

    • wa 等待 IO 时间百分比

    • id 空闲时间百分比

Last updated