Linux系统监控工具之vmstat详解
上一篇 / 下一篇 2012-06-11 16:31:57 / 天气: 晴朗 / 心情: 高兴 / 个人分类:Linux
vmstat是一个查看虚拟内存(Virtual Memory)使用状况的工具,使用vmstat命令可以得到关于进程、内存、内存分页、堵塞IO、traps及CPU活动的信息。本文介绍了虚拟内存的运行原理,继而介绍了vmstat的用法和使用范例。51Testing软件测试网9|{YZrY
*U/s `;c S{d;BN&Y051Testing软件测试网5Y&UC5R/Y:L)Z8k\9UX
J8{l2no9PI[5A0vmstat是一个十分有用的Linux系统监控工具,使用vmstat命令可以得到关于进程、内存、内存分页、堵塞IO、traps及CPU活动的信息。51Testing软件测试网-q\(oG8XP$r
y'V;Fj3w2^o0
e!W;N2{y,|0lh051Testing软件测试网)R\#b3B0PB-\\J.x
'U%r]tqw0一、前言
-bK(vb l051Testing软件测试网*x~*B K.oQgm很显然从名字中我们就可以知道vmstat是一个查看虚拟内存(Virtual Memory)使用状况的工具,但是怎样通过vmstat来发现系统中的瓶颈呢?在回答这个问题前,还是让我们回顾一下Linux中关于虚拟内存相关内容。
b8Sx y(p&?CF0P\,[QvI4?0二、虚拟内存运行原理51Testing软件测试网X(e y1J?)c
51Testing软件测试网G"wXp.D在系统中运行的每个进程都需要使用到内存,但不是每个进程都需要每时每刻使用系统分配的内存空间。当系统运行所需内存超过实际的物理内存,内核会释 放某些进程所占用但未使用的部分或所有物理内存,将这部分资料存储在磁盘上直到进程下一次调用,并将释放出的内存提供给有需要的进程使用。51Testing软件测试网]Cs\6m0e3cIK
,WaUk{s8O!Q0在Linux内存管理中,主要是通过“调页Paging”和“交换Swapping”来完成上述的内存调度。调页算法是将内存中最近不常使用的页面换到磁盘上,把活动页面保留在内存中供进程使用。交换技术是将整个进程,而不是部分页面,全部交换到磁盘上。
i M@(X/_CH051Testing软件测试网D)[z _\ IR9d分页(Page)写入磁盘的过程被称作Page-Out,分页(Page)从磁盘重新回到内存的过程被称作Page-In。当内核需要一个分页时,但发现此分页不在物理内存中(因为已经被Page-Out了),此时就发生了分页错误(Page Fault)。
1cnYyD0jCj051Testing软件测试网e+j}7C!bX当系统内核发现可运行内存变少时,就会通过Page-Out来释放一部分物理内存。经管Page-Out不是经常发生,但是如果Page-out频 繁不断的发生,直到当内核管理分页的时间超过运行程式的时间时,系统效能会急剧下降。这时的系统已经运行非常慢或进入暂停状态,这种状态亦被称作 thrashing(颠簸)。
*a f0j}%R4Q051Testing软件测试网:U~px,ev.B%Zq三、使用vmstat
b&j e V7` P0B Y [r }HGd01.用法51Testing软件测试网@3OG1Mo$\"g6^7V
y7kZ/E*DU[j0vmstat [-a] [-n] [-S unit] [delay [ count]]51Testing软件测试网6DIXqVhIE,}
t(]^ Ff.kL0vmstat [-s] [-n] [-S unit]
U'VWj+ZsX,}051Testing软件测试网x4`:T2o9o q&`vmstat [-m] [-n] [delay [ count]]
Sd6g9I B3G b3F CCg0&p'T_MxX0vmstat [-d] [-n] [delay [ count]]
-J)]*Go2Z[M n0w N;k3H ?8s-e }]0vmstat [-p disk partition] [-n] [delay [ count]]
.bt%dpMv051Testing软件测试网)yH _*r%P]vmstat [-f]
&U(k7P Uc$V,\`09n `8`_-t5l0vmstat [-V]51Testing软件测试网/@+QyDq QA|&C!n
51Testing软件测试网[d;AsfP)c5z d h-a:显示活跃和非活跃内存51Testing软件测试网9ZX:j?,~C5\c5R_
-@d(RpCuB"CAN#?0-f:显示从系统启动至今的fork数量 。引申閱讀: http://www.cnblogs.com/leoo2sk/archive/2009/12/11/talk-about-fork-in-linux.html51Testing软件测试网+Y6a[_)p7l&}
51Testing软件测试网jw-|s(\-m:显示slabinfo51Testing软件测试网kv1mY0hX'~3V$N
'zf2M#kYcF5pbW_0-n:只在开始时显示一次各字段名称。51Testing软件测试网J ci`,J9a^
2G[/Sq,\*Wq1j3z0-s:显示内存相关统计信息及多种系统活动数量。51Testing软件测试网6j^/L!\(KT3~
g]|Q#M3v#F)r0delay:刷新时间间隔。如果不指定,只显示一条结果。51Testing软件测试网szR`u&U@X
51Testing软件测试网VY)vT5l6bcount:刷新次数。如果不指定刷新次数,但指定了刷新时间间隔,这时刷新次数为无穷。51Testing软件测试网s+b)^ cT'B
K;M2o#T]_j C0-d:显示磁盘相关统计信息。
)R1d PqEAm`c|051Testing软件测试网$N.Zi8{X#F/sa-p:显示指定磁盘分区统计信息
{2MG6vbJ9[F!A051Testing软件测试网2j g%jAuMW_TB3i i(V-S:使用指定单位显示。参数有 k 、K 、m 、M ,分别代表1000、1024、1000000、1048576字节(byte)。默认单位为K(1024 bytes)
9D(``n)@wW0&UH{+Xw,c6A0-V:显示vmstat版本信息。51Testing软件测试网 A ] l&C+G
51Testing软件测试网;^N)J(nd51Testing软件测试网^@QDe7ULl0F
51Testing软件测试网.A0G$vo U
J
9S,VU"J5Jjw*@02.使用说明51Testing软件测试网:wa'`:@t8t}q
%gN FC!DN%| `y"t'P0例子1:每2秒输出一条结果
}-Z(f4VM%T2[7qx051Testing软件测试网i i?9NuM \?mJ0M Bb4T051Testing软件测试网!y*E B.sS字段说明:51Testing软件测试网'pg2ny?c
51Testing软件测试网8u8E}W:J:`AProcs(进程):
7` [ Y6n3V'|0RjI*Nb0r: 运行队列中进程数量
q#iIu/} j0,j?wR``ML0b: 等待IO的进程数量
n7wo,IW4Ei3~1aJ0#|m/MgB{"e0Memory(内存):
Y o@jfZ_#c*n#^051Testing软件测试网,NR V&? g6ss:W6f#Mmjswpd: 使用虚拟内存大小
`7r J*x&a[&Z3~0V"Dz&a3[;^&K;Gb0free: 可用内存大小51Testing软件测试网B"bq hty t&V1C9b
51Testing软件测试网 }0SHw)K;o[$T(S&R.E3@buff: 用作缓冲的内存大小51Testing软件测试网Oh"w4z+^t
&aPF?7nHl v)b0cache: 用作缓存的内存大小51Testing软件测试网jIW~,\
1oW9_9Lq'Z e@0Swap:
!Y5m/@zN,ir*SH$W051Testing软件测试网u(JvS5X#b&t{2?si: 每秒从交换区写到内存的大小51Testing软件测试网2q s XaT7}
51Testing软件测试网8D*f)G1J#C1W ^so: 每秒写入交换区的内存大小
(Y cMa{e$n~0%x N2U0z(pZ g0IO:(现在的Linux版本块的大小为1024bytes)
K)zm ?xnB-O`5v;q#`051Testing软件测试网 P X.Rbmbi: 每秒读取的块数
Kf~-yP.w|0Z:EHn7\g-N"@0bo: 每秒写入的块数51Testing软件测试网El*y3FK(ST