Linux系统监控工具之vmstat详解
vmstat是一个查看虚拟内存(Virtual Memory)使用状况的工具,使用vmstat命令可以得到关于进程、内存、内存分页、堵塞IO、traps及CPU活动的信息。
vmstat是一个十分有用的Linux系统监控工具,是procps组件的一部分。
一、前言
很显然从名字中我们就可以知道vmstat是一个查看虚拟内存(Virtual Memory)使用状况的工具,但是怎样通过vmstat来发现系统中的瓶颈呢?在回答这个问题前,还是让我们回顾一下Linux中关于虚拟内存相关内容。
虚拟内存运行原理
在系统中运行的每个进程都需要使用到内存,但不是每个进程都需要每时每刻使用系统分配的内存空间。当系统运行所需内存超过实际的物理内存,内核会释 放某些进程所占用但未使用的部分或所有物理内存,将这部分资料存储在磁盘上直到进程下一次调用,并将释放出的内存提供给有需要的进程使用。
在Linux内存管理中,主要是通过“调页Paging”和“交换Swapping”来完成上述的内存调度。
调页算法是将内存中最近不常使用的页面换到磁盘上,把活动页面保留在内存中供进程使用。
交换技术是将整个进程,而不是部分页面,全部交换到磁盘上。
二、vmstat的使用
2.1.用法
2.2 使用说明
字段说明:
Procs(进程)
r: 运行队列中进程数量
b: 等待IO的进程数量
Memory(内存)
swpd: 使用虚拟内存大小
free: 可用内存大小
buff: 用作缓冲的内存大小
cache: 用作缓存的内存大小
Swap
si: 每秒从磁盘写到虚拟内存的大小
so: 每秒写入磁盘的虚拟内存大小
IO
bi: 块设备每秒接收的块数量,这里的块设备是指系统上所有的磁盘和其他块设备,默认块大小是1024byte。
bo: 块设备每秒发送的块数量,例如我们读取文件,bo就要大于0。bi和bo一般都要接近0,不然就是IO过于频繁,需要调整。
系统
in: 每秒中断数,包括时钟中断。
cs: 每秒上下文切换数,例如我们调用系统函数,就要进行上下文切换,线程的切换,也要进程上下文切换,这个值要越小越好,太大了,要考虑调低线程或者进程的数 目,例如在apache和nginx这种web服务器中,我们一般做性能测试时会进行几千并发甚至几万并发的测试,选择web服务器的进程可以由进程或者 线程的峰值一直下调,压测,直到cs到一个比较小的值,这个进程和线程数就是比较合适的值了。系统调用也是,每次调用系统函数,我们的代码就会进入内核空 间,导致上下文切换,这个是很耗资源,也要尽量避免频繁调用系统函数。上下文切换次数过多表示你的CPU大部分浪费在上下文切换,导致CPU干正经事的时间少了,CPU没有充分利用,是不可取的。
CPU
us: 用户进程执行时间(user time)
sy: 系统进程执行时间(system time)
id: 空闲时间(包括IO等待时间)
wa: 等待IO时间
三、案例演示
3.1 空负载状态下vmstat的输出
注意:我们在这里发现一个小bug,vmstat第一次显示的结果往往会不准确,需要看第二、三次的结果
3.2 高CPU使用情况的vmstat输出
和上面对照可以明显的发现,运行队列为2,内存空闲区域减少,中断数值较大,CPU中的user%使用率是100%。
3.3 高CPU和内存使用情况的vmstat输出
从输出结果来看,处在block阻塞状态等待IO操作的数量在8左右,swap使用4G,几乎80%,剩余物理内存100M左右,swap换入换出在60M每秒,中断和上下文次数较多,CPU中user%为20%,wait%为70%。
此时通过top来看,CPU占用最多的进程为系统的kswapd0。iostat查看磁盘使用率100%。
由此推断,swap交换过于频繁,导致IO使用率100%,过多的进程处在阻塞状态,工作效率极低。
而之所以产生很多的swap交换,很可能是因为内存不足造成的。需要升级内存。
内存升到8G以后,在此运行相同的测试程序结果如下:
升级以后,swap使用1G左右,但swap换入换出基本为0,wait%为0,user%为100%,一切都正常了。
参考文章
http://blog.csdn.net/xifeijian/article/details/8209788
建议继续学习:
- Mysql监控指南 (阅读:19774)
- 批量添加主机到cacti+nagios的监控报警系统中 (阅读:13253)
- 我常用的主机监控shell脚本 (阅读:11486)
- 7 天打造前端性能监控系统 (阅读:10083)
- 如何监控HP服务器硬件状态 (阅读:9089)
- Cacti 添加 Nginx 监控 (阅读:8894)
- Linux下三种常用的流量监控软件对比 (阅读:8667)
- Cacti 添加 Memcached 监控 (阅读:8095)
- Cacti 添加 Apache 监控 (阅读:7552)
- 你应该知道的16个Linux服务器监控命令 (阅读:6817)
扫一扫订阅我的微信号:IT技术博客大学习
- 作者:ipcpu 来源: IPCPU--网络之路
- 标签: vmstat 监控
- 发布时间:2015-02-07 21:03:52
- [68] Go Reflect 性能
- [68] 如何拿下简短的域名
- [67] Oracle MTS模式下 进程地址与会话信
- [62] IOS安全–浅谈关于IOS加固的几种方法
- [61] 图书馆的世界纪录
- [60] 【社会化设计】自我(self)部分――欢迎区
- [58] android 开发入门
- [56] 视觉调整-设计师 vs. 逻辑
- [49] 给自己的字体课(一)——英文字体基础
- [48] 读书笔记-壹百度:百度十年千倍的29条法则