Linux系统调优-vmstat:性能监控工具
1.格式:
vmstat 输出间隔秒数 输出次数
1.1.procs:进程
- r:进程在运行队列中的个数
- b:处于不可中断睡眠状态的进程个数
1.2.memory:内存
- swpd:虚拟内存使用量
- free:内存空闲使用量
- buffer:内存中buffer使用量
- cache:内存中cache的使用量
1.3.swap:交换分区
- si:每秒从交换分区写入内存的量
- so:每秒从内存中写入交换分区的量
1.4.io:块设备
- bi:每秒从块设备读取的块(block)数量
- bo:每秒从块设备中写入的块(block)数量
1.5.system:系统
- in:每秒中断数(含时钟中断)
- cs:每秒上下文切换次数
1.6.CPU
- us:用户进程CPU消耗时间百分比
- sys:内核进程CPU消耗时间百分比
- id:CPU空闲状态时间百分比
- wa:I/O 等待消耗时间百分比
- st:虚机管理程序占用时间百分比
2.vmstat命令
2.1.参数
vmstat命令 输出的第一行数字是自服务器启动至今的各项指标的平均值,不是最新状态,从第二行开始是最新状态
- -a:查看正在使用的内存量和一短时间内没有使用的内存量
- -f:获取当前服务器的forks数量
- -s:查看内存指标及系统事件信息
- -d:查看磁盘的统计信息
- -p:查看某一特定分区I/O信息
2.2.inact和active
- inact:非活跃内存:一段时间内没有使用过的内存(如果开启了SWAP,这类内存会在第一时间交换到SWAP中)
- active:活跃内存:正在被使用的内存
3.性能影响
1.如果cache数值比较大,说明系统缓存中存放了很多数据,利于磁盘I/O性能的提升。bi数值相对较小,说明磁盘的操作少
2.如果si和so的值长期大于0,说明内存到交换分区的读写很频繁,很消耗CPU资源和磁盘I/O性能。这时要格外关注,内存可能存在瓶颈,要更换较大的内存
3.如果free的值很低,甚至接近于0,不一定是系统内存快耗尽,要同时看buffer和cache的值,大部分情况下是buffer和cache中存放了大量数据,占用了内存,说明内存利用率高,性能好。
4.如果发现bi和bo的值很大,说明有大量的磁盘I/O操作。如果符合预期还好,不符合的话就要查看是哪一块硬盘出现大量读写操作、哪块分区出现大量读写操作。
5.如果us的数值比较大,说明用户的进程占用CPU资源过大,说明开发的程序需要进行优化
6.sy是内核所消耗的cpu时间,这个数字如果很高,一定是系统出现了问题
6.如果wa数字很高,说明CPU总是在等待I/O操作。表明磁盘已经成为主要瓶颈:
- 需要升级磁盘为高性能磁盘
- 查看磁盘或分区有没有大量的随机读操作,如果是的话,可以考虑调整为顺序读或者考虑增加读缓存
7.r是运行中的进程数,如果这个数值超过了内核的个数,说明CPU已经成为性能瓶颈,可以考虑开启超线程、更换更多核的CPU,调整某些进程的NICE优先级等措施
8.如果在运行一个能产生大量随机数的程序,或者包含系统调用的程序,如果sy数值很高是正常的