- Report virtual memory statistics
SYNOPSIS
vmstat [-a] [-n] [delay [ count]]
vmstat [-f] [-s] [-m]
vmstat [-S unit]
vmstat [-d]
vmstat [-p disk partition]
vmstat [-V]
usage: vmstat [-V] [-n] [delay [count]]
-V prints version.
-n causes the headers not to be reprinted regularly.
-a print inactive/active page stats.
-d prints disk statistics
-D prints disk table
-p prints disk partition statistics
-s prints vm table
-m prints slabinfo
-S unit size
delay is the delay between updates in seconds.
unit size k:1000 K:1024 m:1000000 M:1048576 (default is K)
count is the number of updates.
#####################################################################################
use:
1.vmstat 显示一次
2.vmstat -a 显示active/inactive memory 而不是buffer cache
3.vmstat 2 3 最常用,每隔2s,连续显示3次
4.vmstat -f 显示启动以来fork进程的数量
5.vmstat -s = =cat /proc/meminfo 显示内存信息
6.vmstat -m displays slabinfo
7.vmstat -p /dev/sda2 显示分区读写情况
8.vmstat -S m/M k/K 安装选择单位显示
具体看man vmstat
####################################################################################################
Options
The -a switch displays active/inactive memory, given a 2.5.41 kernel or better.
The -f switch displays the number of forks since boot. This includes the fork, vfork, and clone system calls, and is
equivalent to the total number of tasks created. Each process is represented by one or more tasks, depending on thread
usage. This display does not repeat.
The -m displays slabinfo.
The -n switch causes the header to be displayed only once rather than periodically.
The -s switch displays a table of various event counters and memory statistics. This display does not repeat.
delay is the delay between updates in seconds. If no delay is specified, only one report is printed with the average
values since boot.
count is the number of updates. If no count is specified and delay is defined, count defaults to infinity.
The -d reports disk statistics (2.5.70 or above required)
The -p followed by some partition name for detailed statistics (2.5.70 or above required)
The -S followed by k or K or m or M switches outputs between 1000, 1024, 1000000, or 1048576 bytes
The -V switch results in displaying version information.
####################################################################
FIELD DESCRIPTION FOR VM MODE
Procs
r: The number of processes waiting for run time.
b: The number of processes in uninterruptible sleep.
Memory
swpd: the amount of virtual memory used.
free: the amount of idle memory.
buff: the amount of memory used as buffers.
cache: the amount of memory used as cache.
inact: the amount of inactive memory. (-a option)
active: the amount of active memory. (-a option)
Swap
si: Amount of memory swapped in from disk (/s).
so: Amount of memory swapped to disk (/s).
IO
bi: Blocks received from a block device (blocks/s).
bo: Blocks sent to a block device (blocks/s).
System
in: The number of interrupts per second, including the clock.
cs: The number of context switches per second.
vmstat是一个很全面的性能分析工具,可以观察到系统的进程状态、内存使用、虚拟内存使用、磁盘的IO、中断、上下问切换、CPU使用等。系统性能分 析工具中,我使用最多的是这个,除了 sysstat 工具包外,这个工具能查看的系统资源最多。
对于 Linux 的性能分析,100%理解 vmstat 输出内容的含义,那你对系统性能分析的能力就算是基本掌握了。
我这里主要说明一下这个命令显示出的部分数据代表的含义,和它反映出系统相关资源的状况。输出内容共有 6 类,分别说明如下
[kontrollbase@mysql1 ~]$ 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 208 29320 135884 516580 0 0 9 91 63 59 3 294 0 0
•Procs
–r:
运行的和等待(CPU时间片)运行的进程数,这个值也可以判断是否需要增加CPU(长期大于1)
–b:
处于不可中断状态的进程数,常见的情况是由IO引起的
•Memory
–swpd:切换到交换内存上的内存(默认以KB为单位)
•如果 swpd 的值不为0,或者还比较大,比如超过100M了,但是 si, so 的值长期为 0,这种情况我们可以不用担心,不会影响系统性能。
–free:空闲的物理内存
–buff:作为buffer cache的内存,对块设备的读写进行缓冲
–cache:作为page cache的内存, 文件系统的cache
•如果 cache 的值大的时候,说明cache住的文件数多,如果频繁访问到的文件都能被cache住,那么磁盘的读IO bi 会非常小。
•Swap
–si:交换内存使用,由磁盘调入内存
–so:交换内存使用,由内存调入磁盘
内存够用的时候,这2个值都是0,如果这2个值长期大于0时,系统性能会受到影响。磁盘IO和CPU资源都会被消耗。
我发现有些朋友看到空闲内存(free)很少或接近于0时,就认为内存不够用了,实际上不能光看这一点的,还要结合si,so,如果free很少,但是si,so也很少(大多时候是0),那么不用担心,系统性能这时不会受到影响的。
•Io
–bi:从块设备读入的数据总量(读磁盘) (KB/s),
–bo:写入到块设备的数据总理(写磁盘) (KB/s)
随机磁盘读写的时候,这2个值越大(如超出1M),能看到CPU在IO等待的值也会越大
•System
–in:每秒产生的中断次数
–cs:每秒产生的上下文切换次数
上面这2个值越大,会看到由内核消耗的CPU时间会越多
•Cpu
–us:用户进程消耗的CPU时间百分比
•us的值比较高时,说明用户进程消耗的CPU时间多,但是如果长期超过50% 的使用,那么我们就该考虑优化程序算法或者进行加速了(比如 PHP/Perl)
–sy:内核进程消耗的CPU时间百分比
•sy的值高时,说明系统内核消耗的CPU资源多,这并不是良性的表现,我们应该检查原因。
–wa:IO等待消耗的CPU时间百分比
•wa的值高时,说明IO等待比较严重,这可能是由于磁盘大量作随机访问造成,也有可能是磁盘的带宽出现瓶颈(块操作)。
–id:CPU处在空闲状态时间百分比
–Procsr: 运行的进程比较多,系统很繁忙
–Iobo: 磁盘写的数据量稍大,如果是大文件的写,10M以内基本不用担心,如果是小文件写2M以内基本正常
–Cpuus: 持续大于50,服务高峰期可以接受
–Cpuwa: 稍微有些高
–Cpuid:持续小于50,服务高峰期可以接受
st: Time stolen from a virtual machine st