vmstat命令
vmstat命令在linux系统监控命令中是非常常见的监控工具,可以利用vmstat命令了解系统资源的使用情况以及查看当前系统中到底是哪个环节最占用系统资源。
vmstat命令可以输出给定时间的服务器状态值,包括服务器的CPU使用率,内存使用,虚拟内存交换情况,IO的使用情况。
vmstat命令的使用:
一般vmstat工具的使用都是通过两个数字参数完成的,第一个数字参数表示的是”获取系统状态的时间间隔(n秒获取一次)“,第二个数字参数表示的是“获取n次系统的状态”,如果不指定第二个数字参数,则会获取无限次系统的状态,直到程序停止。
a.运行vmstat命令:
#直接运行vmstat命令只会采集一次系统的状态就会自动结束程序。
各个字段的解释如下:
列名:
procs
r:表示运行或者等待CPU时间片的进程数,也就是有多少个进程被分配到了CPU等待运行,我的这台测试的机器目前的CPU比较空闲, 几乎没有程序在跑,当这个值超过了CPU数目,就会出现CPU瓶颈了。这个跟top的负载有关系,一般低于3说明系统的状态良好,超过了5就要小心系统的性能有严重问题了,服务器状态比较危险。如果运行的队列比较长,表示CPU很繁忙,一般会造成CPU的使用率很高。
b:表示进程阻塞,进程阻塞跟挂起有一些相似,区别在于挂起是一种主动的行为,就是我们手动停止进程,而阻塞则是一种被动行为,是在等待时间或者资源时任务的表现,我们不知道它什么时候会被阻塞,也不能确切知道它什么时候恢复阻塞,举个例子:我们雇一个厨师给我们炒菜,但是厨房的炒菜资源已经用完了,所以厨师没法干活,我们有没有指定他没有资源可以做什么,所以他只好在厨房等待,等到有资源炒菜了他才起来做菜。这就类似于阻塞进程,没有了资源进程没法运行,所以只好等待资源才恢复运行状态,这个过程是被动停止,自动恢复的。
memory
swpd:表示已经使用的虚拟内存的大小,单位是KB,如果大于0,表示机器的物理内存不足了。
free:表示空闲物理内存的大小,单位为KB,我的这台机器是自己安装的虚拟机,内存只有1G,现在的剩余内存只有387M左右了。
buff:表示内核缓存内存,我的这台机器缓存内存大概占用23M。
cache:表示缓冲交换分区内存,直接用来记忆我们打开的文件,给文件作缓冲,实际上是把空闲的物理内存的一部分拿出来给文件和目录做缓存,是为了提高程序执行的性能,当程序使用内存时,buff跟cache会很快被使用。
swap
si:表示从磁盘交换到内存的交换页的数量,单位为“KB/秒”,也就是每秒从磁盘读入虚拟内存的大小,如果这个值大于0,表示物理内存不够用或者内存泄露了,要查找耗内存进程解决掉。
so:表示从内存交换到磁盘的交换页的数量,单位为”KB/秒“,也就是每秒虚拟内存写入磁盘的大小,如果这个值大于0,则跟si的值大于0一样。
system
in:表示cpu每秒的中断次数,包括时间中断
cs:表示每秒环境(上下文)切换次数
cpu
按cpu的总是用百分比来显示
us:用户cpu使用时间,也就是用户进程执行时间所占百分比,处于用户模式。
sy:系统cpu使用时间,也就是系统进程执行时间所占百分比,处于内核模式。
id:空闲时间(包括IO等待时间),中央处理器的空闲时间,也就是空闲cpu的时间百分比
wa:IO等待时间百分比
st:被虚拟化偷走的cpu时间比率
b.动态显示,每一秒显示一次:
c.动态显示,每2秒显示一次,显示5次:
##有某些地方本人理解不是特别清晰,所以慎言,如果有发现错误的话还望各位大佬给予纠正。