vmstat命令是最常见的Linux/Unix监控工具,可以展现给定时间间隔的服务器的状态值,包括服务器的CPU使用率,内存使用,虚拟内存交换情况,IO读写情况。

Vmstst_vmstat

r:表示运行队列的进程数量

b:表示阻塞的进程

swpd :虚拟内存已使用的大小,如果大于0,表示你的机器物理内存不足了

free:空闲的物理内存的大小,我的机器内存总共8G

buff:系统是用来存储,目录里面有什么内容,权限等的缓存

cache:cache列表示page cached的内存数量,一般作文件系统的cached,频繁访问的文件都会被cached。如果cached值较大,就说明cached文件数较多。如果此时IO中的bi比较小,就说明文件系统效率比较好。

si:每秒从磁盘读入虚拟内存的大小

so:每秒虚拟内存写入磁盘的大小
如果si,so大于0,表示物理内存不够用或者内存泄露了,要查找耗内存进程解决掉。

bi:块设备每秒接收的块数量(单位kb/s)读操作

bo:块设备每秒发送的块数量(单位kb/s)   写操作

in:每秒CPU的中断次数,包括时间中断

cs:每秒上下文切换次数,例如我们调用系统函数,就要进行上下文切换,线程的切换,也要进程上下文切换,这个值要越小越好,太大了,要考虑调低线程或者进程的数目,例如在apache和nginx这种web服务器中,我们一般做性能测试时会进行几千并发甚至几万并发的测试,选择web服务器的进程可以由进程或者线程的峰值一直下调,压测,直到cs到一个比较小的值,这个进程和线程数就是比较合适的值了。系统调用也是,每次调用系统函数,我们的代码就会进入内核空间,导致上下文切换,这个是很耗资源,也要尽量避免频繁调用系统函数。上下文切换次数过多表示你的CPU大部分浪费在上下文切换,导致CPU干正经事的时间少了,CPU没有充分利用,是不可取的。

us:列显示了用户进程消耗CPU的时间百分比。us的值比较高时,说明用户进程消耗的CPU时间多,如果长期大于50%,需要考虑优化程序啥的。

sy:列显示了内核进程消耗CPU的时间百分比。sy的值比较高时,就说明内核消耗的CPU时间多;如果us+sy超过80%,就说明CPU的资源存在不足。

id:列显示了CPU处在空闲状态的时间百分比;

wa:列表示IO等待所占的CPU时间百分比。wa值越高,说明IO等待越严重。如果wa值超过20%,说明IO等待严重。

st:列一般不关注,虚拟机占用的时间百分比