vmstat(虚拟内存统计)

    vmstat是指虚拟内存统计,这个名称表明它能告诉你系统的虚拟内存性能信息,幸运得是,它实际上能完成的工作不止于此,vmstat是一个很有用的命令,它能获取整个系统性能的粗略信息,包括:

---正在运行的进程个数

---cpu的使用情况

---cpu接收的中断个数

---调度器执行的上下文切换次数

它是用于获取系统性能大致信息的极好工具

vmstat 可以被如下命令行调用:

vmstat [-n]   [-s]  [delay    [count]]

vmstat运行与两种模式:采样模式和平均模式,如果不指定参数,则vmstat统计运行于平均模式,vmstat显示从系统启动以来所有统计数据的均值,但是,如果指定了延迟,那么第一个采样仍然是系统启动以来的均值,但之后vmstat按延迟秒数采样系统并显示统计数据,表1-1解释了vmstat的选项

                                               表1-1    vmstat命令行选项

选项 说明
-n 默认情况下,vmstat定期显示每个性能统计数据的列标题,本选项禁止该特性,因此初始化列标题之后,只显示性能数据,如果要将vmstat导出为电子表格,使用这个选项是有好处的。
-s 本选项一次性输出vmstat收集的系统统计的详细信息,该信息为系统启动后的总数据
delay vmstat采样的间隔时间

vmstat提供的各种统计输出信息,使你能跟踪系统性能的不同方面,表1-2解释了与cpu性能相关的输出

说明
r 当前可运行的进程数,这些进程没有等待I/O,而是已经准备好运行,理想状态下,可运行进程数应与可用CPU的数量相等
b 等待I/O完成的被阻塞进程数
forks 创建新进程的次数
in 系统发生中断的次数
cs 系统发生上下文切换的次数
us 用户进程消耗的总CPU时间的百分比(包括“友好的”时间)
sy 系统代码消耗的总CPU时间的百分比,其中包括消耗在system、irq和softirq状态的时间
wa 等待I/O消耗的总CPU时间的百分比
id 系统空闲消耗的总CPU时间的百分比

用法实例:

[root@vinson ~]# 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 861588  16988  44828    0    0    6    3  10    8  0  0 100  0  0

这里显示从启动开始,cpu有8%的时间用于执行用户应用程序代码,0%的时间用于执行系统代码,其余100%的时间处于空闲状态

------

尽管vmstat从系统启动时开始统计有助于确定系统的负载情况,但是vmstat最有用的是运行于采样模式,如下图所示,第一行的统计数据和之前一样,是系统启动以来的均值,但之后就是定期采样,本例展示的系统活动比较少,通过查看b列下面的0可以知道在运行时没有阻塞进程,通过查看r列,我们还可以看到在vmstat采样数据时,正在运行的进程数量

[root@vinson ~]# vmstat 2 5

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 859248  19340  44980    0    0    5    4  10    8  0  0 100  0  0

2  0      0 857136  19348  44972    0    0    0    24  39  36  1  1 99  0  0

0  0      0 857664  19372  44988    0    0    0  104  70  97  1  2 97  1  0

0  0      0 857664  19372  44988    0    0    0    0    8    8  0  0 100  0  0

0  0      0 857696  19380  44984    0    0    0    32  19  16  0  0 100  0  0

---------->

vmstat 1 | tee /tmp/vmstat.output 

用tee命令将结果输出到文件,方便分析

-----------------------------------------------------参考自linux性能优化