一、vmstat
vmstat \\ 默认情况下只输出一条记录

vmstat主要是用来检测虚拟内存的,可以展现给定时间间隔的服务器的状态值,包括CPU使用率,内存使用率,虚拟内存交换情况,IO读写情况等。一般vmstat工具的使用是通过两个数字参数来完成的,第一个参数是采样的时间间隔数,单位是秒,第二个参数是采样的次数,如:
vmstat 2 2

参数含义
参数 | 含义 |
---|
procs:r | 运行队列中进程的数量,这些进程都是可运行状态,都在等待CPU的分配。当这个值超过了CPU数目,就会出现CPU瓶颈,如果运行队列过大,表示你的CPU很繁忙,一般会造成CPU使用率很高 |
procs:b | 被blocked(阻塞)的进程数,正在等待IO |
memory:swpd | 使用的虚拟内存的大小,单位是KB。解释:如果该值大于0,表示你的机器物理内存不足了,如果不是程序内存泄露的原因,那么你该升级内存了或者把耗内存的任务迁移到其他机器 |
memory:free | 可用的物理内存大小,单位是KB |
memory:buff | 物理内存用来缓存读写操作的buffer大小,单位是KB |
memory:cache | 物理内存用来缓存进程地址空间的cache大小,单位是KB |
swap:si(换入) | 每秒从SWAP(交换分区)读入到RAM(swap in)的大小,单位是KB |
swap:so(换出) | 每秒从RAM写出到SWAP(swap out)的大小,单位是KB。解释:内存够用的时候,这2个值都是0,如果这2个值长期大于0时,系统性能会受到影响。有些朋友看到空闲内存(free)很少时,就认为内存不够用了,不能光看这一点,还要结合si和so,如果free很少,但是si和so也很少(大多时候是0),那么不用担心,系统性能这时不会受到影响。 |
io:bi | 每秒从文件系统或SWAP读入到RAM(blocks in)的块数,block(1KB磁盘块)为单位 |
io:bo | 每秒从RAM写出到文件系统或SWAP(blocks out)的块数,block(1KB磁盘块)为单位。解释:随机磁盘读写的时候,这2个值越大(如超出1024k),能看到CPU在IO等待的值也会越大。 |
system:in | 每秒的中断数 |
system:cs | 系统每秒进行上下文切换的次数 |
cpu:us | 用户空间占用CPU的百分比。解释:us的值比较高时,说明用户进程消耗的CPU时间比较多,但是如果长期超过50%,那么我们就该考虑优化程序算法或者进行加速。 |
cpu:sy | 内核空间占用CPU的百分比。解释:sy的值高时,说明系统内核消耗的CPU资源多,这并不是良性表现,我们应该检查原因。 |
cpu:id | CPU空闲的百分比 |
cpu:wa | CPU等待IO的百分比解释:wa的值高时,说明CPU等待IO的时间比较多,这可能是大量的磁盘随机访问造成的,也有可能是磁盘出现瓶颈。 |
cpu:st | 来自于虚拟机偷取的CPU所占的百分比 |
vmstat命令常用的选项如下
选项 | 功能 |
---|
-a | 显示活跃和非活跃内存 |
-f | 显示从系统启动至今的fork数量 |
-m | 显示slabinfo |
-s | 显示内存相关统计信息及多种系统活动数量 |
-d | 显示磁盘相关的统计信息 |
-S | 使用指定单位显示。参数有 k 、K 、m 、M ,分别代表1000、1024、1000000、1048576字节(Byte),默认单位为K(1024 Bytes) |
delay | 刷新时间间隔,如果不指定,只显示一条结果 |
count | 刷新次数,如果不指定刷新次数,但指定了刷新时间间隔,这时刷新次数为无穷 |