作用
vmstat(Virtual Memory Statistics 虚拟内存统计) 命令用来显示Linux系统虚拟内存状态,也可以报告关于进程、内存、I/O等系统整体运行状态。
用法
vmstat [-a] [-n] [-t] [-S unit] [delay [ count]]
vmstat [-s] [-n] [-S unit]
vmstat [-m] [-n] [delay [ count]]
vmstat [-d] [-n] [delay [ count]]
vmstat [-p disk partition] [-n] [delay [ count]]
vmstat [-f]
vmstat [-V]
-a:显示活跃和非活跃内存
-f:显示从系统启动至今的fork数量 。
-m:显示slabinfo
-n:只在开始时显示一次各字段名称。
-s:显示内存相关统计信息及多种系统活动数量。
delay:刷新时间间隔。如果不指定,只显示一条结果。
count:刷新次数。如果不指定刷新次数,但指定了刷新时间间隔,这时刷新次数为无穷。
-d:显示磁盘相关统计信息。
-p:显示指定磁盘分区统计信息
-S:使用指定单位显示。参数有 k 、K 、m 、M ,分别代表1000、1024、1000000、1048576字节(byte)。默认单位为K(1024 bytes)
-V:显示vmstat版本信息。
示例
1.每隔1秒刷新一次,刷新5次
输出内容表示系统虚拟内存和CPU的平均情况。
各项意义如下:
procs : 使用内存IO的进程统计
r : 获取了IO资源而等待cpu运行的进程数目
b : 因为等待IO资源而阻塞休眠的进程数目
memory: 虚拟内存相关统计
swpd : 用掉的虚拟内存大小。也就是交换分区内用掉的大小
free: 空闲的内存大小。
buff : 被用于系统buffer的大小。
比如write系统调用的时候,系统不会立马写磁盘,而是先缓冲到buffer中然后在合适的时候写入磁盘。
cache : 被用于系统cache的大小
free的大小表示一定可以使用的大小,即malloc不会出错的大小。但是超过free时malloc会一定出错么?也不一定。因为系统的buff和cache在必要 的时候也会优先给malloc使用。只有在不可使用时才会出错,如被设置为共享内存。因此观察时要综合这四个位置一起作判断。当分配内存时首先使用free,free不够的时候从buff和cache中匀得,当还不够时选择从swap分区中取得。
swap: 交换分区的使用情况
si : 每秒从硬盘中交换到内存中的大小。
so :每秒从内存中交换到硬盘中的大小。
io : 块设备IO统计
bi : 每秒从块设备读入内存的大小
bo : 每秒从内存中写入快设备的大小
什么是块设备?Linux下的设备主要分成字符设备和块设备(可以参考LDD《linux device driver》),类似于Socket属于流设备,而磁盘一般属于块设备。因此这个参数可以用来衡量写磁盘的性能。
system : 操作系统中断和上下文切换统计
in : 操作的系统每秒触发的中断数目
cs : 操作系统每秒上下文切换次数,这里上下文切换可以认为是系统态到用户态或者反过来的切换
cpu: cpu相关统计
us : 用户态代码执行占用的cpu时间。
sy :系统态代码执行占用的cpu时间。
id : cpu空闲时间,也就是执行系统idle的时间,cpu是不可能停机的。
wa : 耗费在等待IO上的时间
st : 其他的等待时间。
2.显示活跃和非活跃内存
3.显示内存的详细信息
4.查看磁盘的读/写
5.查看指定磁盘的读写
vmstat -p /dev/sda1