vmstat
=====
`virtual memory statistics`**实时**输出系统中各种资源的使用情况
##基本格式
	vmstat [选项] [delay[count]]
##缺省输出
缺省情况下(无选项),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 2469012 489604 1451368    0    0    36   131  996 1043 23  4 72  1  0
```
>vmstat功能丰富,实际上**vmstat**命令主要用于查看系统内存的使用情况。我可以使用**iostat**获得磁盘使用情况的更多信息,使用**mpstat**获得CPU使用情况的更多信息。

|procs|进程信息
|:--:|----
|r|(runnable)等待运行额进程数目,即**就绪状态**
|b|(blocked)处于不可中断睡眠状态的进程数目,即**阻塞状态**

|memory|内存信息(单位KB)
|:--:|----
|swpd|交换分区(虚拟内存)的使用数量
|free|空闲内存的数量
|buff|**buffer cache**的内存数量
|cache|**page cache**的内存数量
>buffer cache:从磁盘读入的数据可能被保存在**buffer cache**中,以便下一次快速访问。
>>page cache:待写入的数据首先被放到**page cache**中,然后由磁盘中断程序写入磁盘

|swap|交换分区的使用信息(单位KB/s)
|:--:|----
|si|(swap input)数据由磁盘交换至内存的速率
|so|(swap output)数据由内存交换至磁盘的速率

|io|块的使用信息(单位block/s)
|:--:|----
|bi|(block input)从块设备读入的速率
|bo|(block output)向块设备写入的速率

|sys|系统信息
|:--:|----
|in|每秒发生的中断次数
|cs|每秒发生的上下文切换(进程切换)次数

|cpu|CPU使用信息
|:--:|----
|us|系统所有进程在用户空间的时间占CPU总时间的比例
|sy|系统所有进程在内核空间的时间占CPU总是就的比例
|id|表示CPU处于空闲状态的时间占CPU总运行时间的比例
|wa|表示CPU等待I/O事件的的时间占CPU总运行时间的比例

##参数
- delay:采样间隔(单位s)
- count:采样次数|共输出count次统计信息

delay和count是参数,而非选项,实际使用的时候用数字代替。比如:
```
vmstat 5 3 
```
每个5秒输出一次结果,共输出3次
##常用选项
|选项|描述
|:--:|----
|-f|显示系统自启动以来执行的fork次数
|-s|显示内存相关的统计信息以及多种系统活动的数量
|-d|显示磁盘相关的统计信息 
|-p|需要参数,显示指定磁盘分区的统计信息
|-S|使用指定的单位来显示,如k、K,m,M

###-S
- k:1000
- K:1024
- m:1 000 000
- M:1 048 576