简介
vmstat命令用来显示Linux系统虚拟内存状态,也可以报告关于进程、内存、I/O等系统整体运行状态。
安装
yum install -y sysstat
字段解释
vmstat命令输出的第一行是自从系统重新启动以来所有指标的平均值。
procs
procs代表进程相关参数
字段名 | 意义 | 说明 |
---|---|---|
r | 等待运行的进程数 | 如果该值长期大于CPU数,就表示需要添加CPU |
b | “被阻塞”的进程 | 最最有可能等待 I/O,但也可能等待其他事情,如果该值比较大并且io下的数据比较大 ,则可能出现了严重的 I/O 争用问题 |
memory
memory表示内存相关参数
字段名 | 意义 | 说明 |
---|---|---|
swpd | 正在使用虚拟或或交换内存的大小,单位K | swpd的值不为0,但是si、so的值长期为0,是不会影响系统性能的。 |
free | 剩余的物理内存大小 | free的值很小,但是si、so的值长期接近为0,是不会影响系统性能的,因为linux系统会先使用内存 |
buff | 缓冲区的内存大小 | |
cache | 缓存的内存大小 | 该值越大说明缓存的文件越多,如果频繁访问的文件被缓存,那么IO的bi会比较小 |
swap
swap表示交换区相关参数
字段名 | 意义 |
---|---|
si | 交换区写入内存的速率(以 KB/秒为单位) |
so | 内存写到交换区的速率(以 KB/秒为单位) |
si、so的值长期大于0时,系统性能会受到影响,磁盘IO和CPU资源都会被消耗,表明物理内存可能不足。应该减少内存需求或增加物理 RAM。
io
字段名 | 意义 | 说明 |
---|---|---|
bi | 系统向块设备发送数据的速率(以块/秒为单位) | 单位是block,这里的块设备是指系统上所有的磁盘和其他块设备,现在的Linux版本块的大小为1024bytes |
bo | 系统从块设备中读取数据的速率(以块/秒为单位) | 块设备每秒发送的块数量,单位是block |
bi、bo的值越大system中wa的值就会越大
system
system代表系统相关参数
字段名 | 意义 |
---|---|
in | 秒中断数,包括时钟中断 |
cs | 每秒上下文切换数 |
in、cs的值越大cpu中的sy就越大
cpu
字段名 | 意义 | 说明 |
---|---|---|
us | 用户进程消耗cpu时间的百分比(Oracle进程) | 值越大证明用户进程消耗的cpu时间越多,但当其长期大于50%就要考虑优化算法或采用其他措施 |
sy | 系统进程消耗cpu时间的百分(所有根进程) | 值比较大时,证明系统占用cpu时间多,应该采取优化 |
id | cpu空闲时间的百分比 | 一般情况下us+sy+id=100。当该值小于20时证明cpu不足 |
wa | 等待IO时间 | wa过高时,说明io等待比较严重,这可能是由于磁盘大量随机访问造成的,也有可能是磁盘的带宽出现瓶颈。 |
其他参数
示例
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数量 |
-m: | 显示slabinfo |
-n: | 只在开始时显示一次各字段名称 |
-s: | 显示内存相关统计信息及多种系统活动数量 |
delay: | 刷新时间间隔。如果不指定,只显示一条结果 |
count: | 刷新次数。如果不指定刷新次数,但指定了刷新时间间隔,这时刷新次数为无穷 |
-d: | 显示磁盘相关统计信息 |
-p: | 显示指定磁盘分区统计信息 |
-S: | 使用指定单位显示。参数有 k 、K 、m 、M ,分别代表1000、1024、1000000、1048576字节(byte)。默认单位为K(1024 bytes) |
-V: | 显示vmstat版本信息 |