vmstat:用于显示虚拟内存的工具 一、命令格式: vmstat[参数][时间][次数] [root@nginx_A ~]# vmstat 1 2 每隔一秒显示一次共显示两次。 procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu----- r b swpd free buff cache si so bi bo in cs us sy id wa st 0 0 1688 93400 47764 207544 0 0 1 1 6 5 0 0 100 0 0 1 0 1688 93384 47764 207544 0 0 0 0 37 21 0 0 100 0 0 二、参数解释及分析 r:运行队列(多少个进程在真的分配到了CPU),如果这个值超过了CPU的值,说明CPU可能会遇到性能瓶颈。 b:表示阻塞的进程 swpd:虚拟内存已使用的大小,如果这个值大于0,说明内存不够用了,但是也要看si和so的值,如果swpd的值不为0,但是si和so的值长期为0,此时不会影响系统性能。 free:空闲的物理内存的大小。 buff:存储目录里面有什么内容、权限等的缓存。 cache:记忆我们打开的文件,给文件做缓冲。 备注:把空闲内存的一部分拿来做缓冲,为了提高程序执行的性能,当程序使用内存时,buffer/cache会很快的被使用。 si:可以理解为swapin,每秒从磁盘读入虚拟内存的大小,如果这个值大于0,说明内存不够用了。 so:同上理解为swapout,每秒从虚拟内存读出至磁盘的大小,如果这个值大于0,说明内存不够用了。 bi:块设备每秒接受的块数量。写入时此数值会变大 bo:块设备每秒发送的块数量。读出时此数值会变大 in:每秒CPU的中断次数。 cs:每秒上下文切换次数,例如系统函数的调用,线程的切换都需要进行上下文切换。 us:用户进程消耗CPU时间 sy:系统进程消耗CPU时间 id:空闲CPU时间 备注:us+sy+id=100,当us+sy的值接近100时,说明CPU满负荷工作,但是CPU满负荷工作并不能代表什么,因为kernel总是会让CPU跑起来,使得任务的吞吐量最大化。因此判断CPU出现瓶颈的关键因素还是r(运行队列) wa:等待IP CPU时间