|
|
一、sar命令简介6 t* c: c- c+ @7 w+ C! E
sar(System Activity Reporter系统活动情况报告)是目前 Linux 上最为全面的系统性能分析工具之一,可以从多方面对系统的活动进行报告,包括:文件的读写情况、系统调用的使用情况、磁盘I/O、CPU效率、内存使用状况、进程活动及IPC有关的活动等。本文主要以CentOS 6.3 x64系统为例,介绍sar命令。7 W4 t6 m- l3 @0 p- t0 X/ @3 ^
$ z/ N. a, O' U6 S: p1 p0 t+ W
二、安装(Centos)
; J& x" y/ W0 w#yum -y install sysstat #或者 yum install sysstat (自己按y), C: O) m5 P% }6 T4 C1 ~, p
#whereis sar% T- \. ^" a& s0 Q3 x7 H
#whereis iostat1 A& d9 b" d) p
安装完成。
: l* p' \$ O- r' A: a' K1 m( R
& k% x+ }/ c' j' m三、常见使用方法* e# G% l5 ]. t2 P) n0 @) K, S
t为采样间隔,n为采样次数,默认值是1;
q; f/ w# U( V; b-o file表示将命令结果以二进制格式存放在文件中,file 是文件名。/ Q3 u2 `1 w4 U$ c. e! e
options 为命令行选项,sar命令常用选项如下:
: v9 E! m Y Z7 y6 D-A:所有报告的总和4 j6 R9 E8 @4 V% W2 n, \
-u:输出CPU使用情况的统计信息
# I; X7 P7 H: \2 B-v:输出inode、文件和其他内核表的统计信息
! N9 e/ [; y% a t2 E0 I. [8 A$ p1 K-d:输出每一个块设备的活动信息
$ m0 E/ D8 y& u! A3 W I0 B$ [; L" x-r:输出内存和交换空间的统计信息
+ `( C1 w, a7 s5 L-b:显示I/O和传送速率的统计信息
" [" Q! L5 w. @8 F' _. o& t. S-a:文件读写情况4 n2 Z) F2 c4 V4 z
-c:输出进程统计信息,每秒创建的进程数
0 e* Q8 |# U }9 y& K7 V" {& x-R:输出内存页面的统计信息( Q. @3 [% B) }6 x. c+ I: I
-y:终端设备活动情况, `& c5 \$ F; h7 F: [ p, ]1 I2 P
-w:输出系统交换活动信息+ v; O, t: z* b* O, A2 N
1、每隔一秒往屏幕输出一次cpu使用信息,共输出5次:
7 T- @7 Q; J0 b0 [, ?) F#sar 1 5
( g% e! J- T4 `3 |#或者 sar -u 1 5# W3 x+ R! J9 C+ c6 X8 R
[root@VM_20_68_centos ~]# sar -u 1 52 c h+ V' r3 a) `& h
Linux 2.6.32-431.el6.x86_64 (VM_20_68_centos) 2017年04月29日 _x86_64_ (2 CPU)
. `9 h- m' r1 z9 R- m22时38分00秒 CPU %user %nice %system %iowait %steal %idle/ d* x( Q8 N5 r m( i) ]# D
22时38分01秒 all 0.00 0.00 0.50 0.00 0.00 99.50
* m, T1 M; L& Y& x" j22时38分02秒 all 2.00 0.00 4.50 0.00 0.00 93.50
K5 ]1 D& l( t! ]( r# G, s22时38分03秒 all 0.00 0.00 0.00 0.00 0.00 100.00
) X$ X* C9 Q P+ k22时38分04秒 all 0.51 0.00 1.01 15.15 0.00 83.33
2 i, s' C& T7 ~) i: {8 a/ W6 u; H$ p22时38分05秒 all 1.51 0.00 1.01 0.00 0.00 97.49
. \8 J+ q" o. P$ ?% G平均时间: all 0.80 0.00 1.41 3.02 0.00 94.77: [/ f+ C9 G4 K- P' e4 O# w; O+ O- z0 _
) ?$ ~# H* D2 d' ]+ u& P# c1 t. W/ k. G. V2、每2秒采样1次,共10次,把CPU使用数据保存到/opt/cpu.log文件中。
- r; b6 w& |, [" k/ a' [#sar 2 10 > /opt/cpu.log
! o4 E1 \7 v3 U! r2 B3 p( u[root@VM_20_68_centos ~]# cat /opt/cpu.log
& E3 m+ }. s }: v/ ?* K0 ^9 ]1 N+ a0 c- L
Linux 2.6.32-431.el6.x86_64 (VM_20_68_centos) 2017年04月29日 _x86_64_ (2 CPU)
% b8 X7 P! Y+ k0 k22时38分23秒 CPU %user %nice %system %iowait %steal %idle n& q- V8 y0 w
22时38分25秒 all 0.25 0.00 0.50 0.50 0.00 98.75. V Z7 }" U/ U; {5 `
22时38分27秒 all 0.25 0.00 0.25 0.00 0.00 99.50/ G2 U5 X9 O; t1 y0 U
22时38分29秒 all 0.25 0.00 0.25 0.00 0.00 99.506 w( N0 t: s) F1 a
22时38分31秒 all 0.00 0.00 0.50 0.50 0.00 98.99% ]5 b/ U" X- [- V0 Q6 N! U
22时38分33秒 all 0.25 0.00 0.25 0.00 0.00 99.507 S+ S b+ a2 l1 @9 G2 ~6 i9 u
22时38分35秒 all 0.25 0.00 0.50 0.00 0.00 99.25) T6 P) l6 ~% b
22时38分37秒 all 0.25 0.00 0.25 0.50 0.00 98.99* U; S3 P: z* w4 b$ o& D7 x
22时38分39秒 all 0.00 0.00 0.25 0.00 0.00 99.75
+ W& z* W9 f8 _22时38分41秒 all 0.50 0.00 1.00 0.00 0.00 98.508 W: @! F) K$ J: _8 q
22时38分43秒 all 0.00 0.00 0.25 0.50 0.00 99.24& x9 l# t4 J/ V& A4 u
平均时间: all 0.20 0.00 0.40 0.20 0.00 99.20
7 ]; `( f4 \6 z! H9 |, |8 A3、当前所有核心的数据显示。5 @! b: h+ C) w" ] g; i C8 @
#sar -P ALL 1 1
8 H: r% @2 Z6 C; }) s+ |& i[root@VM_20_68_centos ~]# sar -P ALL 1 1$ O( r, v6 w% ~& d, q$ P4 a
2 g, N" \( N- N, V3 d! K. m9 V% w6 ~$ DLinux 2.6.32-431.el6.x86_64 (VM_20_68_centos) 2017年04月29日 _x86_64_ (2 CPU)( e u/ y' c( ~5 y* _ l6 ~
22时38分23秒 CPU %user %nice %system %iowait %steal %idle8 I, k( |1 \. _* |9 S+ x; \% D- r
22时38分25秒 all 0.25 0.00 0.50 0.50 0.00 98.75
! [2 `$ S6 v9 u$ j22时38分27秒 all 0.25 0.00 0.25 0.00 0.00 99.50
. M( m% E6 Y) Y& @22时38分29秒 all 0.25 0.00 0.25 0.00 0.00 99.50
( l# L2 Z0 `, w; @! X22时38分31秒 all 0.00 0.00 0.50 0.50 0.00 98.99
3 ~( p# D6 H* f. c8 K22时38分33秒 all 0.25 0.00 0.25 0.00 0.00 99.50. j. I! e9 v$ Z; _' q
22时38分35秒 all 0.25 0.00 0.50 0.00 0.00 99.25
: a/ k9 d: ~# i4 `, @5 d& Y22时38分37秒 all 0.25 0.00 0.25 0.50 0.00 98.99
& M, e$ _$ a7 i; e5 K$ m _22时38分39秒 all 0.00 0.00 0.25 0.00 0.00 99.75
! n* G9 d3 A6 e P3 u0 @22时38分41秒 all 0.50 0.00 1.00 0.00 0.00 98.50: w4 A, |2 V3 x3 r& j c
22时38分43秒 all 0.00 0.00 0.25 0.50 0.00 99.24
- H. E) ]1 _0 L平均时间: all 0.20 0.00 0.40 0.20 0.00 99.20
6 \' W- u+ S( }4、inode、文件和其他内核表监控4 N) d( s; O7 g1 \! d y. m7 P
例如,每10秒采样一次,连续采样3次,观察核心表的状态,需键入如下命令:
/ j# C/ _" s2 ?; G+ Gsar -v 10 3
3 J" q [* B$ u ~; `, ~, U屏幕显示如下:
5 m4 T$ c0 J4 A1 C' O$ v. w" t0 @* @
17:10:49 dentunusd file-nr inode-nr pty-nr( p) l6 {7 U$ M* D8 @6 ?5 T
17:10:59 6301 5664 12037 4# F) j# M3 b4 n3 A u4 j
17:11:09 6301 5664 12037 4
! Z) Q; p7 ?! ~& {" F1 a/ o7 w17:11:19 6301 5664 12037 4
1 d- x- t4 c! a0 M3 V5 ^# T; NAverage: 6301 5664 12037 4
5 ]$ h- a% l, ]; ?9 b; ]输出项说明:
+ s& A9 ^5 ~# w4 G: W& Edentunusd:目录高速缓存中未被使用的条目数量
. n4 I, D) h2 z+ Xfile-nr:文件句柄(file handle)的使用数量
: D" i: P+ E, ^5 w3 D2 F) x, dinode-nr:索引节点句柄(inode handle)的使用数量4 D, C+ w2 x. X6 w* E
pty-nr:使用的pty数量' O2 K1 @( b2 x" |* ]% B3 ^& o6 Z/ C
$ q4 x i1 p# `; _' H3 S/ T5、内存和交换空间监控! S. S0 v6 X$ O
例如,每1秒采样一次,连续采样3次,监控内存分页:% }4 i4 q' w! X1 R
sar -r 1 3
6 n2 t/ N: E2 B3 S[root@VM_20_68_centos ~]# sar -r 1 3/ |% S. P5 I# X7 h
Linux 2.6.32-431.el6.x86_64 (VM_20_68_centos) 2017年04月29日 _x86_64_ (2 CPU)
7 ~8 x7 F: ~) V/ H! V2 k( K2 Y5 A. p22时49分46秒 kbmemfree kbmemused %memused kbbuffers kbcached kbcommit %commit
k4 S9 d- h' U6 ?22时49分47秒 436764 3485988 88.87 184276 2486992 598852 15.27
' X& h, ?* C- [8 w# F22时49分48秒 436896 3485856 88.86 184276 2486984 598852 15.27
! e( l! s. z& v$ J6 n% q( o22时49分49秒 436896 3485856 88.86 184276 2486984 598852 15.27' w9 s$ [, K/ X0 U) k$ p9 g
平均时间: 436852 3485900 88.86 184276 2486987 598852 15.27! U: Y R' d( P6 D2 H
输出项说明:( [* R" `( Q, `+ _/ c$ Y
kbmemfree:这个值和free命令中的free值基本一致,所以它不包括buffer和cache的空间.
8 k& X. o3 ^1 \5 r; U! xkbmemused:这个值和free命令中的used值基本一致,所以它包括buffer和cache的空间.& z1 V0 W: |; I
%memused:这个值是kbmemused和内存总量(不包括swap)的一个百分比.
' x4 p7 i5 g0 E" i6 Nkbbuffers和kbcached:这两个值就是free命令中的buffer和cache.
6 }$ [+ T- O# f& A5 x7 A# Tkbcommit:保证当前系统所需要的内存,即为了确保不溢出而需要的内存(RAM+swap).
/ s- [1 |" k! q) G3 }! h* m! {%commit:这个值是kbcommit与内存总量(包括swap)的一个百分比.$ U; U- e1 F1 X( R ?- a
9 X, G: Y; s: P& j6 M6、I/O和传送速率监控
/ Z7 Y" W3 S2 {7 Q8 d6 A例如,每10秒采样一次,连续采样3次,报告缓冲区的使用情况,需键入如下命令:
( o6 p7 U) n2 a! P8 F6 Esar -b 10 3
& J( t6 S# N, M/ E屏幕显示如下:
& T3 J8 i9 C7 w% y$ ~$ j8 {2 v
% D+ x6 m% r9 ]$ h( T18:51:05 tps rtps wtps bread/s bwrtn/s
0 N0 g/ o. j2 M; z; I18:51:15 0.00 0.00 0.00 0.00 0.00
4 d/ @2 `9 \- N+ w, D+ ]18:51:25 1.92 0.00 1.92 0.00 22.65
Q3 d F2 w+ ^/ _0 `9 q18:51:35 0.00 0.00 0.00 0.00 0.00: h/ M4 i" t8 c2 G5 ]& J
Average: 0.64 0.00 0.64 0.00 7.59
0 ^3 b7 C) z6 Q% M5 T输出项说明:
$ V- N0 g" b- f2 A! w) y1 M% otps:每秒钟物理设备的 I/O 传输总量! d3 E6 L* X% [- Q9 W+ B4 k
rtps:每秒钟从物理设备读入的数据总量6 D) g9 s% K+ [1 M. E0 F! p$ r
wtps:每秒钟向物理设备写入的数据总量
) g/ A: U$ l9 m1 B* Obread/s:每秒钟从物理设备读入的数据量,单位为 块/s& ^9 f4 u3 P5 V* ?
bwrtn/s:每秒钟向物理设备写入的数据量,单位为 块/s% i6 ~ L/ ^+ z
( x+ w# E2 k6 g& t7、进程队列长度和平均负载状态监控
1 l* |" ?/ q' h8 \( D7 E' F例如,每10秒采样一次,连续采样3次,监控进程队列长度和平均负载状态:
* G. R& `- ]# Isar -q 10 3
6 z9 @8 a2 E' c) U1 N. C7 X屏幕显示如下:
" j8 V( ^! k2 K6 E
5 }- b% M8 V4 _" k1 y0 S6 h* R19:25:50 runq-sz plist-sz ldavg-1 ldavg-5 ldavg-155 z9 k; h1 n: u8 e5 C
19:26:00 0 259 0.00 0.00 0.00
! I' H$ s/ d) |+ t$ S19:26:10 0 259 0.00 0.00 0.00
. J5 m6 u; H& K6 J v: B19:26:20 0 259 0.00 0.00 0.007 b5 R8 K; D0 y
Average: 0 259 0.00 0.00 0.00* g/ M! [' _1 ?; N& r6 i- S
输出项说明:
, q% c3 G6 h# [runq-sz:运行队列的长度(等待运行的进程数)
, b+ @# R* p0 Xplist-sz:进程列表中进程(processes)和线程(threads)的数量# C* ?* R( W. y$ _/ v% X
ldavg-1:最后1分钟的系统平均负载(System load average)6 W$ M, J$ u l
ldavg-5:过去5分钟的系统平均负载
2 L0 C4 |5 o' F$ H U& Ildavg-15:过去15分钟的系统平均负载
5 L+ Q6 R% S! F* h
8 m' [1 d+ R: L9 q2 J5 h# e8、系统交换活动信息监控
- I q7 R$ a: z7 w6 D例如,每10秒采样一次,连续采样3次,监控系统交换活动信息:
& Q, F* T( M7 a J# f/ ]$ Jsar – W 10 3+ @. ?' C- z. Y x9 z; L* Y
屏幕显示如下:: E- T8 t0 K/ r7 d' B5 R7 g
% k% Q, \: ~' B/ b- \8 U
19:39:50 pswpin/s pswpout/s( _3 u& J n) C1 y9 R- D2 I: r8 P
19:40:00 0.00 0.00; }* f4 R0 n( U8 B, `+ X
19:40:10 0.00 0.00& V* ] ?% u4 x2 n ?* S' R
19:40:20 0.00 0.008 ^. {1 y: V! ^2 s- A
Average: 0.00 0.00
% M% A, N7 Z# M9 [. r输出项说明:
/ a' d8 o" J9 P+ C ^& ^/ Zpswpin/s:每秒系统换入的交换页面(swap page)数量; y0 C# d/ R9 Q/ R9 \, i
pswpout/s:每秒系统换出的交换页面(swap page)数量
- a& y/ B) }& g/ }7 n9 q2 H
6 t7 {3 R# f8 H) R# m; ^7 c9、设备使用情况监控
1 T% ]% z* q* \4 N例如,每10秒采样一次,连续采样3次,报告设备使用情况,需键入如下命令:; R6 D; H( u; u, N* X
# sar -d 10 3 –p% L# |3 c* u$ h: i# `( R
屏幕显示如下:! b3 b: ~1 ^* N+ \4 }) W
5 _* s% Z: w4 q+ L' {8 _17:45:54 DEV tps rd_sec/s wr_sec/s avgrq-sz avgqu-sz await svctm %util
2 X$ n/ ~- b. P% b17:46:04 scd0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.002 T$ U4 V9 P0 A( I3 U
17:46:04 sda 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00/ a) s/ l5 N. D- Y" J& |
17:46:04 vg_livedvd-lv_root 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
% U* R, U8 n" B# h17:46:04 vg_livedvd-lv_swap 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00- j1 @) I% [ Y* b
其中:
5 [0 P' G4 W% R9 A4 }参数-p可以打印出sda,hdc等磁盘设备名称,如果不用参数-p,设备节点则有可能是dev8-0,dev22-0
" B9 G2 k6 Q0 i( Ztps:每秒从物理磁盘I/O的次数.多个逻辑请求会被合并为一个I/O磁盘请求,一次传输的大小是不确定的.# x) Y1 V, e) K5 V+ [9 s0 \4 ]
rd_sec/s:每秒读扇区的次数.7 J. J4 m8 A, y' H0 [/ |2 {
wr_sec/s:每秒写扇区的次数.
, k, w( J! X) _avgrq-sz:平均每次设备I/O操作的数据大小(扇区).0 g3 Q3 x) S- T6 E- p/ x) s
avgqu-sz:磁盘请求队列的平均长度.& u+ p3 ^' K! r# x3 m) b
await:从请求磁盘操作到系统完成处理,每次请求的平均消耗时间,包括请求队列等待时间,单位是毫秒(1秒=1000毫秒)., _1 Q1 p" K4 w% V$ z
svctm:系统处理每次请求的平均时间,不包括在请求队列中消耗的时间.
4 P2 }0 k C" L+ O7 g' a%util:I/O请求占CPU的百分比,比率越大,说明越饱和.
# F+ X! z/ n- R; C1. avgqu-sz 的值较低时,设备的利用率较高。6 Y" _0 u$ w3 L2 _" T
2. 当%util的值接近 1% 时,表示设备带宽已经占满。
- o# o9 J( _4 @, J8 [5 |0 v9 _' @8 h8 D( O( R; h
10、要判断系统瓶颈问题,有时需几个 sar 命令选项结合起来
3 d# C" Z0 v% r/ s7 x2 S怀疑CPU存在瓶颈,可用 sar -u 和 sar -q 等来查看
) d: e# K. F& i6 n' m怀疑内存存在瓶颈,可用 sar -B、sar -r 和 sar -W 等来查看
& o8 `+ S2 j$ g4 y. Y怀疑I/O存在瓶颈,可用 sar -b、sar -u 和 sar -d 等来查看0 E: o5 _! O J1 P6 o1 V
|
|