vmstat命令:虚拟内存统计 CPU使用率内存试用虚拟内存交换情况IO读写情况 process r:运行和等待CPU时间片的进程数 超过cpu个数, 出现CPU瓶颈 长时间大于1,CPU不足,需要增加CPU b:正在等待资源的进程数, 正在等待I/O 内存交换 Memory swpd:交换到内存交换区的内存数量 单位 k虚拟内存已使用的大小 不为0,或者比较大,如超过100m,si、so的值长期0,系统性能还是正常的 表示你的机器物理内存不足了 如果不是程序内存泄露的原因 该升级内存了或者把耗内存的任务迁移到其他机器。 free:当前空闲页面列表中内存数量 单位 k buffer:块设备的读写 cache,page cache的缓存数量 较大,说明用到cache的文件较多,如果此时IO中的bi比较低,说明文件系统效率比较好 swap si:由内存进入内存交换区的数量 如果这个值大于0,表示物理内存不够用或者内存泄露了 要查找耗内存进程解决掉 so:由内存交换区进入内存的数量 同上 IO bi:从块设备读入数据的总量(读磁盘)单位kb/s,默认1024byte bo:块设备写入数据的总量(写磁盘)单位kb/s 读取文件,bo就要大于0 bi+bo = 1000,超过1000,wa值较大,考虑均衡磁盘负载 结合iostat输出来分析 bi和bo一般都要接近0,不然就是IO过于频繁,需要调整 system 显示采集间隔内发生的中断数 in:某一时间间隔内每个设备中断数 cs:每秒产生的上下文切换数 每次调用系统函数,我们的代码就会进入内核空间,导致上下文切换,这个是很耗资源,也要尽量避免频繁调用系统函数 值越小越好,太大了要考虑调低线程或进程的数目 cs比磁盘i/o和网络信息包速率高得多,需要进一步排查 CS过大表示你的CPU大部分浪费在上下文切换,导致CPU干正经事的时间少了,CPU没有充分利用,是不可取的 cpu us:用户方式下花费CPU时间占比 us值高,用户进程消耗的CPU时间多,如果长期大于50%,优化用户程序(算法或其他措施) sy:内核进程花费的CPU时间占比 如果太高,表示系统调用时间长,例如是IO操作频繁 us+sy=80%,如果大于80%,可能存在cpu不足 id:一般 us+sy+id=100 wa:IO等待所占用的CPU时间占比 30%,如果超过30%,IO等待严重, 可能磁盘大量随机访问造成 磁盘或磁盘访问控制器的带宽瓶颈造成(块操作) id:cpu处于空闲状态的时间占比