vmstat命令从字面上理解是虚拟内存统计,其实可以统计的信息不止这些
vmstat是Virtual Meomory Statistics(虚拟内存统计)的缩写,可对操作系统的虚拟内存、进程、CPU活动进行监控。它能够对系统的整体情况进行统计,无法对某个进程进行深入分析。vmstat 工具提供了一种低开销的系统性能观察方式。
(1)用法
用法: vmstat [选项参数]
或 vmstat [选项参数] [数字] [数字]
(2)功能:
功能: 报告虚拟内存的统计信息,关于进程、内存、I/O等系统整体运行状态。
(3)选项参数:
-
-d: 显示磁盘相关统计信息。
-
-a: 显示活跃和非活跃内存
-
-f: 显示从系统启动至今的fork数量。
-
-p: 显示指定磁盘分区统计信息
-
-s: 显示内存相关统计信息及多种系统活动数量。
-
-m: 显示slabinfo
我的编译服务器没有编译源代码的时候,统计如下:
r表示当前可运行的进程数目
b表示block,阻塞进程数目
swapd 交换空间的大小,如果大于0表示ram不足了
free+buff+cache加起来是空闲内存的大小,buffe是块设备缓存,cache是文件缓存
si表示每秒从磁盘读入虚拟内存的大小,如果这个值大于0,表示物理内存不够用或者内存泄露了,要查找耗内存进程解决掉。我的机器内存充裕,一切正常。
so 每秒虚拟内存写入磁盘的大小,如果这个值大于0,同上
bi块设备每秒接收的块设备数目
bo块设备每秒发送的块设备数目,例如我们读取文件,bo就要大于0。bi和bo一般都要接近0,不然就是IO过于频繁,需要调整
in 每秒CPU的中断次数,包括时间中断
cs 每秒上下文切换次数,这个数目大会浪费cpu资源,分为进程上下文切换,线程上下文切换,中断上下文切换。上下文包括了各种寄存器,虚拟内存,打开的文件等资源。
us: 用户进程执行时间(user time)
sy: 系统进程执行时间(system time)
id: 空闲时间(包括IO等待时间),中央处理器的空闲时间 。以百分比表示。
wa: 等待IO时间
当我执行编译android的uboot和kernel时候,我的编译服务器的vmstat统计信息如下:
编译android的系统层的时候,我的编译服务器的vmstat统计信息如下:
vmstat 3表示每3秒执行一次vmstat命令
vmstat 3 6表示每3秒执行一次vmstat命令,并且重复6次
vmstat还有如下的一个用法