首页 > 代码库 > 【随笔】vmstat性能监测
【随笔】vmstat性能监测
vmstat命令是最常见的Linux/Unix监控工具,可以展现给定时间间隔的服务器的状态值,包括服务器的CPU使用率,内存使用,虚拟内存交换情况,IO读写情况。相比top,vmstat可以看到整个机器的CPU,内存,IO的使用情况,而不是单单看到各个进程的CPU使用率和内存使用率(使用场景不一样)。
使用vmstat命令可以输出一条服务器状态信息:
可以在vmstat命令后添加2个参数,第一个参数表示间隔多长时间获取一次信息,单位为秒,第二个参数表示输出几个信息后停止获取:
第二个参数是缺省的,如果省略,则会一直输出状态信息,直至使用"Ctrl + C"停止vmstat:
现在来详细解释下这些参数:
r --> 表示运行队列,也就是说当前等待运行的进程队列,如果其超过了cpu内核数目,则表示这个cpu负载过高,cpu很繁忙,服务器的状态很危险。
b --> 表示阻塞的进程。
swpd --> 虚拟内存已使用的大小,如果大于0,表示机器物理内存不足了,如果不是程序内存泄露的原因,那么就该升级内存了或者把耗内存的任务迁移到其他机器。
free --> 空闲的物理内存的大小。
buff --> 用来存储目录里面的内容、权限等的缓存.
cache --> 直接用来记忆我们打开的文件,给文件做缓冲。
si --> 每秒从磁盘读入虚拟内存的大小,如果这个值大于0,表示物理内存不够用或者内存泄露了,要查找耗内存进程解决掉。
so --> 每秒虚拟内存写入磁盘的大小,如果这个值大于0,同上。
bi --> 块设备每秒接收的块数量,这里的块设备是指系统上所有的磁盘和其他块设备,默认块大小是1024byte。
bo --> 块设备每秒发送的块数量,例如我们读取文件,bo就要大于0。bi和bo一般都要接近0,不然就是IO过于频繁,需要调整。
in --> 每秒CPU的中断次数,包括时间中断。
cs --> 每秒上下文切换次数,例如我们调用系统函数,就要进行上下文切换,线程的切换,也要进程上下文切换,这个值要越小越好,太大了,要考虑调低线程或者进程的数目。上下文切换次数过多表示你的CPU大部分浪费在上下文切换,导致CPU干正经事的时间少了,CPU没有充分利用。
us --> 用户CPU使用率。
sy --> 系统CPU使用率,如果太高,表示系统调用时间长,例如是IO操作频繁。
id --> 空闲CPU使用率,一般来说,id + us + sy = 100。
wt --> 等待IO CPU时间。
【随笔】vmstat性能监测