vmstat(VirtualMemoryStatistics,虚拟内存统计)是Linux中监控内存的常用工具,可对操作系统的虚拟内存、进程、CPU等的整体情况进行监视。
vmstat 5 3
表示每隔5秒统计一次,一共统计三次。
\[1014154@cc69dd4c5-4tdb5 ~\]$ vmstat 5 3
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
r b swpd free buff cache si so bi bo in cs us sy id wa st
8 0 0 45453212 374768 30763728 0 0 14 99 1 1 11 10 78 0 1
10 0 0 45489232 374768 30763360 0 0 2 1275 95118 97908 13 11 75 0 1
6 0 0 45452908 374768 30765148 0 0 0 3996 89924 92073 12 10 78 0 1
procs
r
:表示运行和等待CPU时间片的进程数(就是说多少个进程真的分配到CPU),这个值如果长期大于系统CPU个数,说明CPU不足。b
:表示在等待资源的进程数,比如正在等待I/O或者内存交换等。
memory
swpd
:表示切换到内存交换区的内存大小,即虚拟内存已使用的大小(单位KB),如果大于0,表示物理内存不足.free
:表示当前空闲的物理内存。buff
:表示缓冲大小,一般对块设备的读写才需要缓冲Cache
:表示缓存大小,一般作为文件系统进行缓冲,频繁访问的文件都会被缓存,如果cache值非常大说明缓存文件比较多,如果此时io中的bi比较小,说明文件系统效率比较好。
swap
si
:表示数据由磁盘读入内存;通俗的讲就是每秒从磁盘读入虚拟内存的大小,如果这个值大于0,表示物理内存不够用或者内存泄露了,要查找耗内存进程解决掉。so
:表示由内存写入磁盘,也就是由内存交换区进入内存的数据大小。
io
bi
:表示由块设备读入数据的总量,即读磁盘,单位kb/sbo
:表示写到块设备数据的总量,即写磁盘,单位kb/s
system
in
:表示某一时间间隔内观测到的每秒设备终端数。cs
:表示每秒产生的上下文切换次数,越小越好。
cpu
us
:表示用户进程消耗的CPU时间百分比,如果长期大于50%,需要考虑优化程序或者算法。sy
:表示系统内核进程消耗的CPU时间百分比,一般来说us+sy应该小于80%,如果大于80%,说明可能存在CPU瓶颈。id
:表示CPU处在空间状态的时间百分比。wa
:表示IP等待所占用的CPU时间百分比,wa值越高,说明I/O等待越严重,根据经验wa的参考值为20%,如果超过20%,说明I/O等待严重,引起I/O等待的原因可能是磁盘大量随机读写造成的,也可能是磁盘或者监控器的带宽瓶颈(主要是块操作)造成的。