Linux下面监控系统性能的工具-vmstat
顾名思义,vmstat是virtual memory统计工具。不过,vmstat其实不仅仅可以汇报内存使用情况,磁盘活动,cpu利用情况等也会同时显示出来,因为这些和virtual memory活动也是有关联的,或者相互影响的。首先,什么是virtual memory?简单的说,linux支持应用程序使用比实际内存更大的内存空间,这是通过将硬盘上一个特定的分区(swap分区)或者一个特定的文件作为内存的扩展来做到的。当实际内存不够用时,linux根据某种策略,将内存中的部分空间写到交换分区以便留出应用程序运行所需要的内存空间(参考:Understanding Virtual Memory ,What is Vitual Memory)。但是,一旦开始使用交换空间,磁盘活动自然就多起来,cpu利用率就降低下来(因为磁盘的速度比内存和cpu慢多了)。这就是为什么vmstat会同时显示磁盘和cpu活动情况的原因。
vmstat输出的各个字段的含义可以参考man vmstat的解释,下面就我的理解说一下vmstat常用的几种使用方式。
1 观察磁盘活动情况磁盘活动情况主要从以下几个指标了解:
bi:表示从磁盘每秒读取的块数(blocks/s)。数字越大,表示读磁盘的活动越多。
bo:表示每秒写到磁盘的块数(blocks/s)。数字越大,表示写磁盘的活动越多。
wa:cpu等待磁盘I/O(未决的磁盘IO)的时间比例。数字越大,表示文件系统活动阻碍cpu的情况越严重,因为cpu在等待慢速的磁盘系统提供数据。wa为0是最理想的。如果wa经常大于10,可能文件系统就需要进行性能调整了。
2 观察cpu活动情况vmstat比top更能反映出cpu的使用情况:
us:用户程序使用cpu的时间比例。这个数字越大,表示用户进程越繁忙。
sy:系统调用使用cpu的时间比例。注意,NFS由于是在内核里面运行的,所以NFS活动所占用的cpu时间反映在sy里面。这个数字经常很大的话,就需要注意是否某个内核进程,比如NFS任务比较繁重。如果us和sy同时都比较大的话,就需要考虑将某些用户程序分离到另外的服务器上面,以免互相影响。
id:cpu空闲的时间比例。
wa:cpu等待未决的磁盘IO的时间比例。
<div class="archiver_post">嘻哈小宝 2008-2-27 16:49
<div class="archiver_postbody">Vmstat详细解释
vmstat:报告关于内核进程,虚拟内存,磁盘,cpu的的活动状态的工具
主要有几个用法:
1.vmstat 间隔 测试数量
输出如下
kthr memory page faults cpu
----- ----------- ------------------------ ------------ -----------
r b avm fre re pi po fr sr cy in sy cs us sy id wa
0 0 26258 18280 0 0 0 7 20 0 127 227 64 1 2 96 1
其中:
kthr--内核进程的状态
--r 运行队列中的进程数,在一个稳定的工作量下,应该少于5 (r <5)
--b 等待队列中的进程数(等待I/O),通常情况下是接近0的. (b=0)
memory--虚拟和真实内存的使用信息
--avm 活动虚拟页面,在进程运行中分配到工作段的页面空间数.
--fre 空闲列表的数量.一般不少于120,当fre少于120时,系统开始自动的kill进程去释放
free list
page--页面活动的信息
--re 页面i/o的列表
--pi 从页面输入的页(一般不大于5)
--po 输出到页面的页
--fr 空闲的页面数(可替换的页面数)
--sr 通过页面置换算法搜索到的页面数
--cy 页面置换算法的时钟频率
faults--在取样间隔中的陷阱及中断数
--in 设备中断
--sy 系统调用中断
--cs 内核进程前后交换中断
cpu--cpu的使用率
--us 用户进程的时间
--sy 系统进程的时间
--id cpu空闲的时间
--wa 等待i/o的时间
一般us+sy 在单用户系统中不大于90,在多用户系统中不大于80.
wa时间一般不大于40.
2.vmstat -s
显示系统自初始化以来的页面信息.
页:
[1]