vmstat
是Virtual Meomory Statistics(虚拟内存统计)的缩写,可实时动态监视操作系统的虚拟内存、进程、CPU活动。
vmstat
的语法
vmstat [-a] [-n] [-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版本信息。
5 秒显示采集一次,一共采集 5 次
vmstat 5 5
procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu----- r b swpd free buff cache si so bi bo in cs us sy id wa st 6 0 0 27900472 204216 28188356 0 0 0 9 1 2 11 14 75 0 0 9 0 0 27900380 204228 28188360 0 0 0 13 33312 126221 22 20 58 0 0 2 0 0 27900340 204240 28188364 0 0 0 10 32755 125566 22 20 58 0 0
字段说明
Procs
(进程):
r
: 表示运行和等待cpu时间片的进程数,如果长期大于服务器cpu的个数,则说明cpu不够用了
b
: 表示等待资源的进程数(进程阻塞),比如等待I/O, 内存等,这列的值如果长时间大于1,则需要关注一下了
Memory
(内存):
swpd
: 虚拟内存已使用的大小,如果大于0,表示你的机器物理内存不足了,如果不是程序内存泄露的原因,那么你该升级内存了或者把耗内存的任务迁移到其他机器。
free
: 可用内存大小
buff
: 用作缓冲的内存大小
cache
: 用作缓存的内存大小
Swap:
si
: 每秒从交换区写到内存的大小
so
: 每秒写入交换区的内存大小
IO
:(现在的Linux版本块的大小为1024bytes)
bi
: 每秒读取的块数(读磁盘)
bo
: 每秒写入的块数(写磁盘)
system
:
in
: 每秒中断数,包括时钟中断
cs
: 每秒上下文切换数
CPU
(以百分比表示)
us
: 用户进程执行时间(user time)
sy
: 系统进程执行时间(system time)
id
: 空闲时间(包括IO等待时间)
wa
: 等待IO时间
Buffer
和 Cache
的区别
缓存(cached
)是把读取过的数据保存起来,重新读取时若命中(找到需要的数据)就不要去读硬盘了,若没有命中就读硬盘。其中的数据会根据读取频率进行组织,把最频繁读取的内容放在最容易找到的位置,把不再读的内容不断往后排,直至从中删除。
缓冲(buffers
)是根据磁盘的读写设计的,把分散的写操作集中进行,减少磁盘碎片和硬盘的反复寻道,从而提高系统性能。linux有一个守护进程定期清空缓冲内容(即写入磁盘),也可以通过sync命令手动清空缓冲。举个例子吧:我这里有一个ext2的U盘,我往里面cp一个3M的MP3,但U盘的灯没有跳动,过了一会儿(或者手动输入sync)U盘的灯就跳动起来了。卸载设备时会清空缓冲,所以有些时候卸载一个设备时要等上几秒钟。
修改/etc/sysctl.conf
中的vm.swappiness
右边的数字可以在下次开机时调节swap使用策略。该数字范围是0~100
,数字越大越倾向于使用swap
。默认为60,可以改一下试试。–两者都是RAM中的数据。
简单来说,buffer
是即将要被写入磁盘的,而cache
是被从磁盘中读出来的。
buffer
是由各种进程分配的,被用在如输入队列等方面。一个简单的例子如某个进程要求有多个字段读入,在所有字段被读入完整之前,进程把先前读入的字段放在buffer
中保存。
cache
经常被用在磁盘的I/O
请求上,如果有多个进程都要访问某个文件,于是该文件便被做成cache
以方便下次被访问,这样可提高系统性能。
Buffer Cachebuffer cache,又称bcache
,其中文名称为缓冲器高速缓冲存储器,简称缓冲器高缓。另外,buffer
cache
按照其工作原理,又被称为块高缓。