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性能优化