Vmstat与iostat zz
上一篇 / 下一篇 2008-06-06 20:10:51 / 个人分类:LAMP
g|"d[{Yt0
%J7Gy"C fP*f2\.E8c0 在Linux下有很多系统性能分析工具,比较常见的有top、free、ps、time、timex、uptime等。下文将介绍几个较为重要的性能分析工具vmstat、iostat和sar及其使用。
^#S:]2E"w(Ps!De#b0木铎校园 BBS 社区$? My#|?6~[0Wv用vmstat监视内存使用情况
5Vh(q@3v(y@A0木铎校园 BBS 社区S(`&\!X+|*X Lk"Hvmstat是Virtual Meomory Statistics(虚拟内存统计)的缩写,可对操作系统的虚拟内存、进程、CPU活动进行监视。它是对系统的整体情况进行统计,不足之处是无法对某个进程进行深入分析。木铎校园 BBS 社区*?1}2fy4~AuN1INB Q
木铎校园 BBS 社区7wx!G ~:? pSvmstat的语法如下:木铎校园 BBS 社区`8Z-b/o[im]
木铎校园 BBS 社区H-F$RWz9fvj vmstat [-V] [-n] [delay [count]]木铎校园 BBS 社区3^3s3`i!@0L
木铎校园 BBS 社区(_ihuceAY k
其中,-V表示打印出版本信息;-n表示在周期性循环输出时,输出的头部信息仅显示一次;delay是两次输出之间的延迟时间;count是指按照这个时间间隔统计的次数。对于vmstat输出各字段的含义,可运行man vmstat查看。
t ^r(Cn6Nu6j/C0.tm:o~{K'u0 用iostat监视I/O子系统情况
7u:?7a!K;`d|*u x0G Y1|e'k#O0 iostat是I/O statistics(输入/输出统计)的缩写,iostat工具将对系统的磁盘操作活动进行监视。它的特点是汇报磁盘活动统计情况,同时也会汇报出 CPU使用情况。同vmstat一样,iostat也有一个弱点,就是它不能对某个进程进行深入分析,仅对系统的整体情况进行分析。木铎校园 BBS 社区)SAU&Fc/p-`e
木铎校园 BBS 社区O*}!`8du'|ZS9u-Ziostat的语法如下:
fj}8t)OxQ0mra T3zHB0
Uff1Auf0iostat [ -c | -d ] [ -k ] [ -t ] [ -V ] [ -x [ device ] ] [ interval [ count ] ]木铎校园 BBS 社区:r%{$~] v9e8\:bx
木铎校园 BBS 社区/tYWkwx
其中,-c为汇报CPU的使用情况;-d为汇报磁盘的使用情况;-k表示每秒按kilobytes字节显示数据;-t为打印汇报的时间;-v表示打印出 版本信息和用法;-x device指定要统计的设备名称,默认为所有的设备;interval指每次统计间隔的时间;count指按照这个时间间隔统计的次数。
9GP.@1_a$d9\9a \kP0木铎校园 BBS 社区!AmR#rM:_y!aLSQiostat一般的输出格式如下:
6v-qSp\?03YB(E S#W0Linux 2.4.18-18smp (builder.linux.com) 2003年03月07日木铎校园 BBS 社区-M j8B?X
木铎校园 BBS 社区)b%G-x8? x HT\avg-cpu: %user %nice %sys %idle
(]Q-Fj0cZ2uo0木铎校园 BBS 社区ca|L\4.81 0.01 1.03 94.15木铎校园 BBS 社区7vS[.\%q#u v1O
木铎校园 BBS 社区"C!FJ.s/U2]Device: tps Blk_read/s Blk_wrtn/s Blk_read Blk_wrtn木铎校园 BBS 社区N&\Z })Es m l
木铎校园 BBS 社区(a t @4O3[)pdev3-0 30.31 1117.68 846.52 16104536 12197374
5xdB)FO o~T,a03`Xm H/MMo B0dev3-1 7.06 229.61 40.40 3308486 582080木铎校园 BBS 社区8K5u9X,@9UvUhW!V
对于输出中各字段的含义,iostat的帮助中有详细的说明。木铎校园 BBS 社区0TR"aH$Lzp3`
木铎校园 BBS 社区Pdx3kR(@Rvmstat 命令报告虚拟内存统计信息和CPU负荷:页面调度,交换,任务交换,CPU利用率。命令的语法是:
b |N:@-zg K^0vmstat [-cisS] [d1 d2 d3 d4] [interval [count]]
W-E O4A:xw*o0当不用选项时,vmstat显示一条曲线表示自从系统启动后活动的信息。如果指定interval(时间间隔),接下来的线是重复显示最后的interval期间活动的情况,直到用户中断命令执行。当同时提供计数器时,统计信息按时间计数来显示。
O$q5}'X8S9P E0如果指定了一个磁盘名(如d1,d2,等等。),这些磁盘得到优先显示。通常,系统上的前4个磁盘设备是显示的,因为只有四个设备能在一线条上显示,这个
选项允许性能分析员修改缺省显示选项。(*磁盘名通常随id,sd,xd,或xy
(取决于类型和I/0界面)加一个数字,如id0,sd2,xd1等等命名而定。)
@*X3|/qR&W$W9O/{R0,vmstat 命令显示若干字段信息:木铎校园 BBS 社区-L#z(j,Q(i'r5jR(U;i
-`4HY3u0sc5j&p+x0procs 报表下面三种状态的进程数:
N?M9|+jCla0r--在运行队列中等候运行
zis\#rUr-A0b--被资源阻塞(I/0,页面调度,等等.)
0G Z He[g0w--可运行但是被换出的
v2U/bXN)y$]
P0memory 报告虚拟内存和实存信息:
\'x#L-AM3Z
Me1brw:v0swap--以千字节为单位的当前可用交换空间的数量木铎校园 BBS 社区6W TIT+]+r
free--以千字节为单位的页自由表大小
"b~M*H(b3z0page 报告每秒页面调度活动数量的信息:木铎校园 BBS 社区Y%tT_5YpM
re-从自由表回收页木铎校园 BBS 社区A'o5x5O"fr~6?U
mf--次要的错误;地址空间或硬件地址转换错误木铎校园 BBS 社区)b/j$K(uw(SCEpA
pi--页入的千字节数
LqDdJ*O"h%pS0po -页出的千字节数木铎校园 BBS 社区&R*`
E]Q^M
fr- 释放的千字节数
U!O?:x F*a5Q.V!h0de--以千字节为单位的可接受的短期内存不足数木铎校园 BBS 社区z6{m+H u8Y
sr--页由时钟算法扫描
]
E+VVCA*Oc ?jk0disk 可以为四个磁盘报告每秒磁盘I/O的数量
$@s1C:d.b-e0faults 报告每秒系统软件中断和硬件中断的速率
b,`K"B+@}!BO%rL6y0in-设备中断,不包括系统时钟中断木铎校园 BBS 社区:aQ+}&@7qc
sy-系统调用
+eHFL`?Ff0cs-CPU任务(上下文)交换木铎校园 BBS 社区$k q8DI5V%MS4U!HK0k
cpu-- CPU故障时间的百分比,在多处理器系统上,这是全部处理器的平均值:木铎校园 BBS 社区(N ?B\R
us- 用户时间
In4ceg;h2b0sy-- 系统时间
D*o#][^o'j0id-- 闲置时间
fV%qB6R2]
y0vmstat命令有四个可选标志可供使用。如果机器有虚拟地址缓存-c标志就改变输出报告缓存刷新统计数据。报告包括自从系统启动后每种缓存刷新全部总量。六个缓存类型是用户,上下文,区域,段,页,部分页。
N{/R;v%v
bP&aB0-i标志 使输出变为报告中断的数量。如果给出设备名,如d1,d2等,监控将在设备级*执行,(*注,参阅第十二章有关打开设备级监控的信息。)并报告每个给定设备的统计信息。
:o~c,hh%z0修改"普通"报告来显示交换而非页面调度活动的信息。这选项改变显示的两个字段:si(换入)和so(换出)替代了re和mf字段。
6~#blU_9L2LTF!dJ0值得注意是,interval 和count选项对-i或-s选项是非法的。
5KL6e7@-t7Z*l2o0vmstat 参数详解
(~#R u&di]'K;P-s^0procs:
.D6`p"q-{0r-->在运行队列中等待的进程数木铎校园 BBS 社区MZ%sP)V#Q$J5O
b-->在等待io的进程数木铎校园 BBS 社区c5m;XE$r)r y
w-->可以进入运行队列但被替换的进程
QqSg#[B0木铎校园 BBS 社区(@
?+Yfet1y
y
memoy
vaOZI4z [-|0swap-->现时可用的交换内存(k表示)
(kI(Ac?0free-->空闲的内存(k表示)木铎校园 BBS 社区RK7i TNr:ThbIcq
+h&t+gk.NFr!u0木铎校园 BBS 社区Kb#X V_9rt
pages木铎校园 BBS 社区wYqh,acg4q$oP&B
re--》回收的页面
Y)T-E*l.t({8v(?6F_0mf--》非严重错误的页面
{`F4sox)\0pi--》进入页面数(k表示)
:qD}C"ya&Mu0po--》出页面数(k表示)木铎校园 BBS 社区
}`9mA't$wjw
fr--》空余的页面数(k表示)木铎校园 BBS 社区-w3` htK(N*mo8UM
de--》提前读入的页面中的未命中数
2B|`h)n.Ryw0sr--》通过时钟算法扫描的页面木铎校园 BBS 社区1w\y'[b
hA-^#Y"|-~
]0disk 显示每秒的磁盘操作。 s表示scsi盘,0表示盘号
j#DR?0B7XUq0fault 显示每秒的中断数
{];c
af M'T|0in--》设备中断
b-n7z?4}~5e`0sy--》系统中断
XNo8Vd\0cy--》cpu交换
:zv]iY9k-lP RY0cpu 表示cpu的使用状态
cs--》用户进程使用的时间木铎校园 BBS 社区v2_B*?k"Zn9fT^
sy--》系统进程使用的时间木铎校园 BBS 社区c+Y3l9TvI
id--》cpu空闲的时间
FIELD DESCRIPTIONS木铎校园 BBS 社区 ]_rkU U2U,~
gGlH:gK$ZK0Procs
5{]T#r:`_0Kg:G#h;l0J9sh _0r: The number of processes waiting for run time.
"j&\7bZ)r0T#Z@&lDr^iO0b: The number of processes in uninterruptable sleep.
#Qr P6X K n(W9F\/N0.H:`+IWO2t#a0w: The number of processes swapped out but otherwise runnable.
!\ br&D;z0EPX5E},Sgi$j9GQ0Thisfield is calculated, but Linux never desperation swaps.
&{ c-x"PVMs0Q1b zOR4I0木铎校园 BBS 社区#V,w7W9qUI/]?
木铎校园 BBS 社区4n"vZ2x'O;iMemory木铎校园 BBS 社区~t3seqd Ja2F h
木铎校园 BBS 社区%v2P9j2N2Sg:| ?swpd: the amount of virtual memory used (kB).木铎校园 BBS 社区p/ZEa i/V xi$n`
7l:j8[ S IMA0free: the amount of idle memory (kB).木铎校园 BBS 社区zORt4U'\4LO
t5Aw2v;VNrZK0buff: the amount of memory used as buffers (kB).
fd5}8?/o"Y Xe^~0Jj|1W @*V.?;o O0
$H)n bSIVY0Lb8mO1d0Swap木铎校园 BBS 社区(cu1I2S%V'\
木铎校园 BBS 社区3y!XdL5`+^$W5jYYsi: Amount of memory swapped in from disk (kB/s). 虚拟内存的页导入(从SWAP DISK导入RAM)木铎校园 BBS 社区1GY&Kj\N2uka
U-z)x2@PI0so: Amount of memory swapped to disk (kB/s). 虚拟内存的页导出.木铎校园 BBS 社区6ejq-y ~tf
木铎校园 BBS 社区ER8Kc']y?7cx(从RAM到SWAP DISK)
o`hyp+V+r&fI0木铎校园 BBS 社区1~4i0z:U#w5[ j木铎校园 BBS 社区:Iz&wP]5[
木铎校园 BBS 社区4O$x1\D2j3bIO
#O;^6m(oZ5qV+U#yQ0#HV`V3Ek0bi: Blocks sent to a block device (blocks/s).
*FWQ[({\&jE0木铎校园 BBS 社区V-~!Q*v+fU+M8u)\bo: Blocks received from a block device (blocks/s).
I7C;iU%^m j'h'@,e(X0u,FCE2p"A0木铎校园 BBS 社区b8aSR M!x4h.Q0l"o!SoY
木铎校园 BBS 社区C_ v$rn8d3A{System
v'zyaCb0~U u`(I0in: The number of interrupts per second, including the clock.
)O ub*_6e5Nj7f0木铎校园 BBS 社区['O]m+i wcs: The number of context switches per second.
s.a*mgT0&Xb\x4[HjB8M I0: CPU木铎校园 BBS 社区{dOe m VQ
木铎校园 BBS 社区 ~l&M"qL@'g},?D%B,AThese are percentages of total CPU time.
7J }tSE0木铎校园 BBS 社区 y!}d~O.o9Kus: user time木铎校园 BBS 社区9X{*tm$Xb*o
7Fz5{ Qh1z q0sy: system time
6g]^0x,]Wi!s(H0:X4q^v(U.q)Z+iA}W0id: idle time木铎校园 BBS 社区0Lh;]G7r4a
木铎校园 BBS 社区7g+J|bR9?如果 r经常大于 4 ,且id经常少于40,表示cpu的负荷很重。木铎校园 BBS 社区)]5?kaK)Q!OoK
如果pi,po 长期不等于0,表示内存不足。木铎校园 BBS 社区%T
w
V:oTY7l{
如果disk 经常不等于0, 且在 b中的队列 大于3, 表示 io性能不好。木铎校园 BBS 社区*crR$x^{q
由vmstat看服务器木铎校园 BBS 社区}:h [p"yG
木铎校园 BBS 社区VK:GH(e.A6|vD木铎校园 BBS 社区!IK
_3Me
说明:由于STATSPACK并不能获取全面分析性能问题所需要的所有信息,所以需要扩展其收集服务器的统计信息。(本文环境REDHAT Linux7.2)
木铎校园 BBS 社区;\\ {#B,a
木铎校园 BBS 社区?2Mn-E d#u)I6PVMSTAT介绍
3?W6hp E v8YB0b%L]D KeJhR0通过STATSPACK收集服务器信息,主要通过收集VMSTAT的信息来展现服务器状况。VMSTAT工具是最常见的UNIX监控工具,可以展现给定时间间隔的服务器的状态值。
`+XYCu'p0木铎校园 BBS 社区%O:m9c['O!n1L _k一般VMSTAT工具的使用是通过两个数字参数来完成的,第一个参数是采样的时间间隔数,单位是秒,第二个参数是采样的次数。如:木铎校园 BBS 社区iU+Fr!U(xaT
!dDU A?$D!w ^0[oracle@brucelau oracle]$ vmstat 1 2木铎校园 BBS 社区MNo y r9? FV'xH
木铎校园 BBS 社区@ fVs(}$eP!Aprocs memory swap io system CPU木铎校园 BBS 社区'HhQt;uk5e`:Y
0T)@Kp%I5@7F*rUG x0r b w swpd free buff cache si so bi bo in cs us sy id木铎校园 BBS 社区R1ZP{r}rT+Z\[
%c1FI*R G.Z)G+]01 0 0 0 271844 186052 255852 0 0 2 6 102 10 0 0 100
5R[ d!uW5D bgNo6z0b0gh5d*i7i T00 0 0 0 271844 186052 255852 0 0 0 0 104 11 0 0 100木铎校园 BBS 社区.m SwQYZ@7i+L
U d\+y FUU1iI0
&d j PR9?-Qw E0木铎校园 BBS 社区6nN)eAt(Ha$e(注:目前系统几乎空闲,并且不同操作系统VMSTAT输出内容有所不同)
U*|$`h[twB0)nB^ HU(N/D0
(C/pE6y6k&Z0/Zi!]T:eN"tyP&C0目前说来,对于服务器监控有用处的度量主要有:
7dt~"SN0f)v-F0木铎校园 BBS 社区W ru;Hs$H3y_K@r(运行队列)木铎校园 BBS 社区3G5~mOb$j~_6h[E#`
vQG%UtbM.K4X5aZ0pi(页导入)
qK-n].y`d%@0v V7i7Kf%b/k0us(用户CPU)木铎校园 BBS 社区#v%aC\G-G'sE
X@r)E9?+a~?%X0sy(系统CPU)
e5K#j:J;e,H,c0[0ls`{;E0id(空闲)
$h-O)TZ.p(X` O*GM0木铎校园 BBS 社区0gF D[0H2fm b1t木铎校园 BBS 社区{!LoOjV e f!_ V
木铎校园 BBS 社区^qo;W_'{!{jG通过VMSTAT识别CPU瓶颈木铎校园 BBS 社区v}#G%G$F7d-Q'Fa
^Il+_)T/Z(O]$L0r(运行队列)展示了正在执行和等待CPU资源的任务个数。当这个值超过了CPU数目,就会出现CPU瓶颈了。
Uf8L1xs SW05}.l&{'| @4MO5V?-^0获得CPU个数的命令(LINUX环境):
~ D(c6w,WO `/]9L0木铎校园 BBS 社区.BQ E }"u R6Z]zcat /proc/cpuinfo|grep processor|wc –l木铎校园 BBS 社区y:\X`y2XOLo5D
木铎校园 BBS 社区5Xan3xa.H G#b当r值超过了CPU个数,就会出现CPU瓶颈,解决办法大体几种:木铎校园 BBS 社区Q.aIyn/u
y@T]*U'nIQ01. 最简单的就是增加CPU个数木铎校园 BBS 社区v,]m_G$TB)r
木铎校园 BBS 社区 ^+zsseE2. 通过调整任务执行时间,如大任务放到系统不繁忙的情况下进行执行,进尔平衡系统任务
WX2I1vIj!^{0$y5d x2|&R7H W:m03. 调整已有任务的优先级木铎校园 BBS 社区~,_ @M&E"J|Zg
木铎校园 BBS 社区0nid t]ao g0M?I]_+e0木铎校园 BBS 社区/FO/x2LN6KG3h通过VMSTAT识别CPU满负荷木铎校园 BBS 社区l5`w smO'Kw1@5Q;yI&~M
木铎校园 BBS 社区:nV/I7HKE2v首 先需要声明一点的是,vmstat中CPU的度量是百分比的。当us+sy的值接近100的时候,表示CPU正在接近满负荷工作。但要注意的是,CPU满 负荷工作并不能说明什么,UNIX总是试图要CPU尽可能的繁忙,使得任务的吞吐量最大化。唯一能够确定CPU瓶颈的还是r(运行队列)的值。木铎校园 BBS 社区;L3Wgg#L'ah
`Kj+S.`;`%i hh-L(?0木铎校园 BBS 社区7O(k.Lkm[]i
木铎校园 BBS 社区Cc#^n&aG通过VMSTAT识别RAM瓶颈
,K pVV^Xk0木铎校园 BBS 社区(?l4C/A&R数据库服务器都只有有限的RAM,出现内存争用现象是Oracle的常见问题。木铎校园 BBS 社区9n/s ofzJR9zv:D
木铎校园 BBS 社区[/U|G'G首先察看RAM的数量,命令如下(LINUX环境):
xoz` g0oZ2x#\0木铎校园 BBS 社区$\&a[|.pu[root@brucelau root]#free木铎校园 BBS 社区3Yn@k1MZ?rM
木铎校园 BBS 社区8d?glO.e5~ L`total used free shared buffers cached
e+N(n1D0H4g|9Ec0木铎校园 BBS 社区 O*b/ZU$s_d`Mem: 1027348 873312 154036 185736 187496 293964
)eza%IW?T!U0木铎校园 BBS 社区f4PlX%N)T T3?cb-/+ buffers/cache: 391852 635496
'Sf4BT.u0木铎校园 BBS 社区Kd}GM&[eaSwap: 2096440 0 2096440木铎校园 BBS 社区"\rs+bB)MhM!vOr
