a我考网

 找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 91|回复: 0

[综合辅导] Linux认证:关于Linux性能的监控之io篇

[复制链接]
发表于 2012-8-4 12:07:07 | 显示全部楼层 |阅读模式
Linux认证:关于Linux性能的监控之io篇- y5 o! `" B8 Q5 P! k* k( z
关于Linux性能监控相信大家已经小有了解,对于IO篇,让我们先分析一些具体的情况,在这些情况下I/O会成为系统的瓶颈。我们会用到工具top,vmstat,iostat,sar等。每一个工具的输出都从不同的方面反映除系统的性能情况。
! M/ b4 o' {2 c$ ]Linux性能监控情况1:同一时间进行大量的I/O操作
4 N7 D9 t3 p8 p( j在这种情况时我们会发现CPU的wa时间百分比会上升,证明系统的idle时间大部分都是在等待I/O操作。7 K/ M2 h# i+ @  w0 F- A, Z- U7 ^
# vmstat 1
$ P- D( r; Y; K, t7 f& B# hprocs -----memory----- ---swap---io---- --system--cpu----8 f* `! T4 y( C" L( i
r b swpd free buff cache si so bi bo in cs us sy id wa4 I4 Y7 i% u0 m: Q; I
3 2 0 55452 9236 1739020 0 0 9352 0 2580 8771 20 24 0 57% Y, w% |4 X% Q' r: h0 P
2 3 0 53888 9232 1740836 0 0 14860 0 2642 8954 23 25 0 52
' {7 J- h3 |. M  Q. r, k- l* g) J8 ?2 2 0 51856 9212 1742928 0 0 12688 0 2636 8487 23 25 0 52
. |& b8 A6 ?, d; e6 t从这个输出我们可以看到CPU有50%的时间都在等待I/O操作,我们还可以看到系统的bi值很大,证明系统有大量的I/O请求将磁盘内容读入内存。0 Q7 _& W* X0 `! x+ @
没有很好的工具能看到到底是哪个进程在进行I/O读写。但我们可以通过top命令的输出来猜测' j9 [' ?4 J. e% a( U: ?8 u
# top -d 1
/ b/ T1 R9 Q2 h: }top - 19:45:07 up 1:40, 3 users, load average: 6.36, 5.87, 4.40
' A- i! P* G* ~% w! E, V/ `Tasks: 119 total, 3 running, 116 sleeping, 0 stopped, 0 zombie3 C7 j7 d) J9 ~+ N. I; M. C/ B
Cpu(s): 5.9% us, 87.1% sy, 0.0% ni, 0.0% id, 5.9% wa, 1.0% hi, 0.0% si
( p& S4 z& v0 ^Mem: 2075672k total, 2022668k used, 53004k free, 7156k buffers3 u2 Y6 _( F* M$ z7 h
Swap: 2031608k total, 132k used, 2031476k free, 1709372k cached
0 `* A3 Z( {9 x. oPID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ nFLT COMMAND
) X5 @2 N, U" a4 p* t3069 root 5 -10 450m 303m 280m S 61.5 15.0 10:56.68 4562 vmware-vmx
" ^5 o8 x' r* D3016 root 5 -10 447m 300m 280m S 21.8 14.8 12:22.83 3978 vmware-vmx
# d" u" H6 M' t3494 root 5 -10 402m 255m 251m S 3.0 12.6 1:08.65 3829 vmware-vmx
& G6 G7 O* i6 J* M4 K3 ^3624 root 5 -10 401m 256m 251m S 1.0 12.6 0:29.92 3747 vmware-vmx$ V9 ?6 r" K7 m# ^4 O. z0 x
将top的输出通过faults进行排序。我们可以看到vmware产生最多的page faults。也就是说它进行了大量的IO操作。
0 v" w- q7 N) B0 E
  o' F' X; B/ L& N% M: p/ U# r8 ~( n1 x. x3 R; q
Linux性能监控情况2:管道太小8 m& d) Q- M6 c6 T0 R9 L: }3 d' \
任何I/O操作都需要一定的时间,而且这些时间对于硬盘来说是确定的,它包含磁盘旋转的延时RD(rotation delay)和磁头搜索时间DS(disk seek)。RD由磁盘转速(RPM)决定。RD是磁盘旋转一周所需时间的一半。如RPM为10000.5 A7 M/ b2 j" E* y
RPS=RPM/60=166, [/ k4 }- t: c" }
1/166=0.0006=6ms 磁盘旋转一周要6毫秒0 u- }2 R- p5 _& a# }
RD=6ms/2=3ms! o2 t- ~7 @  C2 X4 ^3 g
磁盘平均搜索时间是3ms,数据传输的平均延时是2ms,这样一次I/O操作的平均时间是:
- r+ M/ j3 A2 Y7 X2 k* L3ms+3ms+2ms=8ms& {9 ^3 ?; s# m+ B1 x
IOPS=1000/8=125 这块磁盘的每秒IO数(IOPS)为125。所以对于10000RPM的磁盘来说它所能承受的IO操作在IOPS在120~150之间。如果系统的I/O请求超过这个值,就会使磁盘成为系统的瓶颈。
7 A$ [1 I: Z. z6 D* z3 e对与系统而言有两种不同种类的I/O压力,连续I/O和随机I/O。
2 W* L- d0 ?6 G. h+ e8 y% K连续I/O常常出现在企业级数据库这样的应用中,需要连续的读取大量数据。这种系统的性能依靠它读取和移动数据的大小和快慢。我们用iostat来监控,会发现rKB/s,wKB/s会很高。
+ F" {' o! I) _0 N! s1 F9 j- VDevice: rrqm/s wrqm/s r/s w/s rsec/s wsec/s rkB/s wkB/s avgrq-sz avgqu-sz await svctm %util
; `, _# A" m* f7 z" V/dev/sda 0.00 12891.43 0.00 105.71 0.00 106080.00 0.00 53040.00 1003.46 1099.43 3442.43 26.49 280.000 E; \. ?& T: k& G- U
从输出我们看到w/s=105,wKB/s=53040.所以53040/105=505KB per I/O.
* Z: F5 V& j4 P- k对于随机I/O的系统来说性能的关注点不在搜传输数据的大小和速度,而是在磁盘的IOPS。这类系统的I/O请求比较小但是数量很大,如Web服务器和Mail服务器。他们的性能主要依赖每秒钟可处理的请求数:
. K5 I$ l1 {& C- t1 a* k( D# iostat -x 1% J* t; X- H7 e( N
avg-cpu: %user %nice %sys %idle
& K- ~8 H/ d/ J8 `3 T* Y* M. Z2 u2.04 0.00 97.96 0.00
# k; S6 y: |0 a) PDevice: rrqm/s wrqm/s r/s w/s rsec/s wsec/s rkB/s wkB/s avgrq-sz avgqu-sz await svctm %util! g/ W' p) D. [* d
/dev/sda 0.00 633.67 3.06 102.31 24.49 5281.63 12.24 2640.82 288.89 73.67 113.89 27.22 50.003 K  c& O" g: H
从输出我们看到w/s=102,wKB/s=2640.所以2640/102=23KB per I/O.因此对于连续I/O系统来说我们要关注系统读取大量数据的能力即KB per request.对于随机I/O系统我们注重IOPS值.
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|Woexam.Com ( 湘ICP备18023104号 )

GMT+8, 2024-5-18 00:14 , Processed in 0.219608 second(s), 21 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表