|
|
一、sar命令简介
7 G8 K+ y; Z0 j+ P) P& q9 fsar(System Activity Reporter系统活动情况报告)是目前 Linux 上最为全面的系统性能分析工具之一,可以从多方面对系统的活动进行报告,包括:文件的读写情况、系统调用的使用情况、磁盘I/O、CPU效率、内存使用状况、进程活动及IPC有关的活动等。本文主要以CentOS 6.3 x64系统为例,介绍sar命令。4 S3 W2 H+ Q( d5 D, J7 r! k0 Y7 B
2 o3 Q$ }2 a' E. u. ~* W0 P: i% x二、安装(Centos)
. I4 K! @( l A$ \+ U: Z6 h#yum -y install sysstat #或者 yum install sysstat (自己按y)9 H, R1 B4 ]( q+ c
#whereis sar0 J+ B- {3 ?3 f/ j+ e
#whereis iostat% W- B( a* ~, g) l# `: m
安装完成。
8 r5 |1 \; }; _6 \3 t
0 s% @+ H" o2 k: w( w" v/ C! }( j三、常见使用方法
* B- }( ` l% v, E4 ]* _t为采样间隔,n为采样次数,默认值是1;
) z* o, o. z9 b7 G' P% V-o file表示将命令结果以二进制格式存放在文件中,file 是文件名。
/ Z- M! {( d& W4 ?& goptions 为命令行选项,sar命令常用选项如下:
6 g8 ?) ]6 S1 @0 f- T-A:所有报告的总和
* n& x' i: V; I-u:输出CPU使用情况的统计信息' ] w, G7 g) D; z
-v:输出inode、文件和其他内核表的统计信息( N9 B# S! I! y
-d:输出每一个块设备的活动信息" v. n$ R+ ~9 Z! S) W
-r:输出内存和交换空间的统计信息
z( C0 ~9 Z" S4 i-b:显示I/O和传送速率的统计信息0 G: P0 O$ r* x5 i# q
-a:文件读写情况
4 l, ` G/ H$ {-c:输出进程统计信息,每秒创建的进程数
! I; I: H# p* [/ ~% w-R:输出内存页面的统计信息
2 s2 A$ V C5 T' Q- Y5 q7 F/ D-y:终端设备活动情况
4 ^! Q9 Z( X3 l+ S5 {' }& A8 k-w:输出系统交换活动信息; x' e1 V+ R/ W) r9 s+ `
1、每隔一秒往屏幕输出一次cpu使用信息,共输出5次:
6 \3 C* d8 ^, L P! {" l$ n#sar 1 5
& B2 `4 K# |$ K! f/ L#或者 sar -u 1 5# s, k$ W* [/ a& q4 {% S; L
[root@VM_20_68_centos ~]# sar -u 1 5
/ S+ O8 [" U: m* g3 mLinux 2.6.32-431.el6.x86_64 (VM_20_68_centos) 2017年04月29日 _x86_64_ (2 CPU)
u: L0 Z0 e' O7 M% K% C- W: X3 I22时38分00秒 CPU %user %nice %system %iowait %steal %idle+ z! K7 D: E; A5 W
22时38分01秒 all 0.00 0.00 0.50 0.00 0.00 99.50
R& a! c- l% f' b4 j# ^22时38分02秒 all 2.00 0.00 4.50 0.00 0.00 93.50% Y7 c% ~: B/ Q' _1 i1 p; y
22时38分03秒 all 0.00 0.00 0.00 0.00 0.00 100.00
9 M# `+ X$ `( t% C5 e( J22时38分04秒 all 0.51 0.00 1.01 15.15 0.00 83.33
1 z; b0 g7 u* Q3 O. k4 X22时38分05秒 all 1.51 0.00 1.01 0.00 0.00 97.49/ J4 `" z4 F$ m, v2 s- z
平均时间: all 0.80 0.00 1.41 3.02 0.00 94.77
* s+ v5 { K! \4 g k! U; M9 O! V2 `1 T/ j
2、每2秒采样1次,共10次,把CPU使用数据保存到/opt/cpu.log文件中。$ w- r$ Y% c8 O# Y6 ~
#sar 2 10 > /opt/cpu.log! E7 ^, h3 {3 D# q1 M! n
[root@VM_20_68_centos ~]# cat /opt/cpu.log7 G [- T r( Y8 p
) w. d _0 n- D# Q1 T
Linux 2.6.32-431.el6.x86_64 (VM_20_68_centos) 2017年04月29日 _x86_64_ (2 CPU)
" m! S8 r j) }' a3 d22时38分23秒 CPU %user %nice %system %iowait %steal %idle
, r6 a6 Q+ _, g& b' ?$ J( r22时38分25秒 all 0.25 0.00 0.50 0.50 0.00 98.75
0 P' ]! x" D- J+ m22时38分27秒 all 0.25 0.00 0.25 0.00 0.00 99.50
3 W9 j3 W/ `/ u, f22时38分29秒 all 0.25 0.00 0.25 0.00 0.00 99.503 u( N& @3 }& H: d: e5 X7 p2 p
22时38分31秒 all 0.00 0.00 0.50 0.50 0.00 98.99
: T$ }+ P5 q* ~% w5 W) Y/ I$ r22时38分33秒 all 0.25 0.00 0.25 0.00 0.00 99.50% w: Y: y% s( f) y) q/ t
22时38分35秒 all 0.25 0.00 0.50 0.00 0.00 99.25
8 E9 ?5 `0 q$ T6 C, d! c22时38分37秒 all 0.25 0.00 0.25 0.50 0.00 98.99
& V* f: S% x; X22时38分39秒 all 0.00 0.00 0.25 0.00 0.00 99.750 s1 s1 F* [( ]* z+ O
22时38分41秒 all 0.50 0.00 1.00 0.00 0.00 98.50" l! i5 K0 _ |# v& a; t* ]3 W2 g+ r
22时38分43秒 all 0.00 0.00 0.25 0.50 0.00 99.24! R5 s" c: I; g* l( Y
平均时间: all 0.20 0.00 0.40 0.20 0.00 99.20: X# c5 U |( x' K9 ~0 E4 N- I
3、当前所有核心的数据显示。6 V2 y) x: b: ~* H9 u
#sar -P ALL 1 13 H$ _! P' v8 _1 E5 c6 @
[root@VM_20_68_centos ~]# sar -P ALL 1 11 y7 C* Y1 i- a5 |& }! o, L: N
, A0 [( j1 M! E9 X+ S+ \Linux 2.6.32-431.el6.x86_64 (VM_20_68_centos) 2017年04月29日 _x86_64_ (2 CPU)8 h* Q8 v* ^0 q" ]! O
22时38分23秒 CPU %user %nice %system %iowait %steal %idle
, m( E2 A( u& e4 [$ [22时38分25秒 all 0.25 0.00 0.50 0.50 0.00 98.75
; W0 \7 g9 b" i% D22时38分27秒 all 0.25 0.00 0.25 0.00 0.00 99.50
; A+ y* j, m0 n# c" J( \2 \22时38分29秒 all 0.25 0.00 0.25 0.00 0.00 99.50
, ^9 r% {' k% G- e% T22时38分31秒 all 0.00 0.00 0.50 0.50 0.00 98.99& h' w' ]3 C% |8 H7 \5 s
22时38分33秒 all 0.25 0.00 0.25 0.00 0.00 99.50
; Z: t! W1 u1 L+ v: d22时38分35秒 all 0.25 0.00 0.50 0.00 0.00 99.256 ]% R' x4 q6 P9 n1 k0 T8 J
22时38分37秒 all 0.25 0.00 0.25 0.50 0.00 98.99
) k q# X- \5 v3 e o3 B, I22时38分39秒 all 0.00 0.00 0.25 0.00 0.00 99.75
$ N3 W8 I4 Z* X2 Q: M8 e! d22时38分41秒 all 0.50 0.00 1.00 0.00 0.00 98.50( f1 F- u' F# u6 V1 E" l# ]
22时38分43秒 all 0.00 0.00 0.25 0.50 0.00 99.24& O2 `/ E u; B
平均时间: all 0.20 0.00 0.40 0.20 0.00 99.20
# F Z! R. O+ {% r5 b1 ]/ X/ v0 Z4、inode、文件和其他内核表监控 P, X, G3 A, P W
例如,每10秒采样一次,连续采样3次,观察核心表的状态,需键入如下命令:
2 o8 _& m5 z) ?/ S% |sar -v 10 30 [) \9 M* M q$ V8 ?% l
屏幕显示如下:
; E! h! l/ t4 F9 }- Y6 j6 a7 m2 Q8 }. \0 `
17:10:49 dentunusd file-nr inode-nr pty-nr/ a" T" {1 d! G$ \- @3 m
17:10:59 6301 5664 12037 47 o9 G2 P( C& _ z2 p4 f" ~5 v
17:11:09 6301 5664 12037 4
$ T0 U, B' n: N7 q+ [; j17:11:19 6301 5664 12037 4
/ J) C; a" P, X$ ^Average: 6301 5664 12037 47 v' W( K, r: k5 O
输出项说明:% u. r/ w, J% {9 a0 M
dentunusd:目录高速缓存中未被使用的条目数量& w/ J N8 E4 P) g4 l
file-nr:文件句柄(file handle)的使用数量; i6 c$ F* O% ~8 q! |# o
inode-nr:索引节点句柄(inode handle)的使用数量
" M/ V( ? l4 M- N8 Jpty-nr:使用的pty数量1 E: v3 K. i: b; v
$ x5 a' k8 V) h/ P) [: B' Y- l" x e/ I
5、内存和交换空间监控& z, A. i; p* |$ G! p4 A5 ~6 F* j
例如,每1秒采样一次,连续采样3次,监控内存分页:" M- R _# J* F) n/ }. y
sar -r 1 3# \6 r- }8 V7 p$ g
[root@VM_20_68_centos ~]# sar -r 1 3
7 O' k* I9 M' W/ cLinux 2.6.32-431.el6.x86_64 (VM_20_68_centos) 2017年04月29日 _x86_64_ (2 CPU)7 D+ ?/ Q' g0 h# D+ a: v. c2 `
22时49分46秒 kbmemfree kbmemused %memused kbbuffers kbcached kbcommit %commit
# h- Y1 R2 |- J' @. V. M- C( w/ x22时49分47秒 436764 3485988 88.87 184276 2486992 598852 15.27
& b1 A" e; m, Y. n! j X22时49分48秒 436896 3485856 88.86 184276 2486984 598852 15.27
" w! p0 X' o9 {5 m: x0 L22时49分49秒 436896 3485856 88.86 184276 2486984 598852 15.27
3 v3 ~$ I g2 [) m平均时间: 436852 3485900 88.86 184276 2486987 598852 15.27/ \" n' c! c1 L
输出项说明:
# _ O. Y- s, M, {kbmemfree:这个值和free命令中的free值基本一致,所以它不包括buffer和cache的空间.9 I# G8 |4 w9 T8 s' ~" |9 |5 }
kbmemused:这个值和free命令中的used值基本一致,所以它包括buffer和cache的空间.
* e T) ^0 m0 i8 k, H%memused:这个值是kbmemused和内存总量(不包括swap)的一个百分比.+ F" o' n# R7 T0 }8 l& b
kbbuffers和kbcached:这两个值就是free命令中的buffer和cache.
7 Z, v2 n i9 Fkbcommit:保证当前系统所需要的内存,即为了确保不溢出而需要的内存(RAM+swap).
+ R/ h; G4 T5 p%commit:这个值是kbcommit与内存总量(包括swap)的一个百分比.1 {1 W3 I9 N' O; v: Y
, O v& C1 d- ` w) ~% F" l) G
6、I/O和传送速率监控
' e4 m% u! c* H$ U1 W8 b例如,每10秒采样一次,连续采样3次,报告缓冲区的使用情况,需键入如下命令:
1 z6 B$ O7 E4 T7 c) X" Asar -b 10 33 L' B! P; D! t8 f% U" o, Y
屏幕显示如下:
7 n) X" Q, F1 ^ _/ S( e& l% X" {) ~, ?/ [: ?4 o1 i
18:51:05 tps rtps wtps bread/s bwrtn/s
2 Z9 Q; Y8 Z5 L5 o18:51:15 0.00 0.00 0.00 0.00 0.008 s0 `$ T$ C. u! j& Z* D3 n
18:51:25 1.92 0.00 1.92 0.00 22.65
3 O9 p- o/ k7 w: q18:51:35 0.00 0.00 0.00 0.00 0.00
8 V4 _$ @6 J( s2 P8 q! z e; cAverage: 0.64 0.00 0.64 0.00 7.590 u+ _& ~% ?& A0 T, O _
输出项说明:
3 b2 F0 W) x# I# g( |; t4 |tps:每秒钟物理设备的 I/O 传输总量
& P0 m$ j/ c6 O5 {. w1 L, trtps:每秒钟从物理设备读入的数据总量/ R- \! b) z, r/ ~: Q
wtps:每秒钟向物理设备写入的数据总量
: |- n" ~5 n- Z5 h0 D9 d+ {bread/s:每秒钟从物理设备读入的数据量,单位为 块/s9 o2 j5 T2 t3 _5 J0 _6 t
bwrtn/s:每秒钟向物理设备写入的数据量,单位为 块/s! e- |, w: i6 ?# N* C7 u* T
8 ]2 F0 {* l9 P. r
7、进程队列长度和平均负载状态监控. i2 q3 i, j: t, u/ i9 M% c
例如,每10秒采样一次,连续采样3次,监控进程队列长度和平均负载状态:) G1 Y, \* r3 K$ N3 G
sar -q 10 3
- U. R; W' k4 d0 c7 h屏幕显示如下:5 f% ?* l# ^( I3 f. z' p/ s3 |
( P2 J( J3 Y o7 B0 `( j9 H+ t
19:25:50 runq-sz plist-sz ldavg-1 ldavg-5 ldavg-15
5 X' `9 }" t' m19:26:00 0 259 0.00 0.00 0.002 Y( U7 @' i2 p: u4 S, q) a; c q
19:26:10 0 259 0.00 0.00 0.00
2 g6 o/ [+ P8 u4 H8 L4 _19:26:20 0 259 0.00 0.00 0.00
6 @3 {9 Z# r) i5 IAverage: 0 259 0.00 0.00 0.00. {1 V8 {3 h* A% t3 `6 K. d
输出项说明:
4 H! p$ n/ z7 z, q: Z ^! z. p- Lrunq-sz:运行队列的长度(等待运行的进程数)* ]& U# ?( x; j6 K0 R# m; o, M
plist-sz:进程列表中进程(processes)和线程(threads)的数量( @2 E3 Q( I9 t' ~+ E( I1 x* {1 |
ldavg-1:最后1分钟的系统平均负载(System load average)1 m! Q$ I. K. L# U& K
ldavg-5:过去5分钟的系统平均负载6 y, N+ W( z/ t/ W! T8 P# x5 D
ldavg-15:过去15分钟的系统平均负载+ Q5 I$ }; I( z
3 T; D, e* K' f& n
8、系统交换活动信息监控
: e; O% @& G9 l7 G* p) `0 g/ e% z例如,每10秒采样一次,连续采样3次,监控系统交换活动信息:
4 A. w& i/ x0 L" ysar – W 10 3* w$ c9 `" D2 A/ M) C0 y
屏幕显示如下:
$ |0 P: G# x e' h! P2 E! ?5 K" }7 G
: t, \6 k( w' G19:39:50 pswpin/s pswpout/s
( o( z; @( m* o; y1 L& x19:40:00 0.00 0.00; m! p1 ?: j! {2 q4 y4 G
19:40:10 0.00 0.00
. N7 x( p4 G1 k; U1 H- I19:40:20 0.00 0.004 q9 Z) f8 j- I# v$ v2 D& D
Average: 0.00 0.00, \2 [* k( N4 k/ p4 @
输出项说明:
: y7 K: I2 {. Q4 d! Npswpin/s:每秒系统换入的交换页面(swap page)数量1 }, W2 `5 h$ h2 I
pswpout/s:每秒系统换出的交换页面(swap page)数量- n2 ~; C |. R/ [
: a! P% q+ ~/ G; ]8 q9、设备使用情况监控
5 d( E1 ?' Y2 \6 O. a' Q. c例如,每10秒采样一次,连续采样3次,报告设备使用情况,需键入如下命令:4 D) ?* ?* e6 F( B: y' i
# sar -d 10 3 –p% }! {2 N+ Q, N$ U
屏幕显示如下:+ S( _# b% \" W3 Z1 J3 L
r$ l! A, I$ }% n: y$ X; `0 h
17:45:54 DEV tps rd_sec/s wr_sec/s avgrq-sz avgqu-sz await svctm %util% f# S! k! I; I9 P9 I
17:46:04 scd0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00/ j' z7 {( A w. l% I
17:46:04 sda 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
# p$ V; S! ?; X: e3 m9 S17:46:04 vg_livedvd-lv_root 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
+ G$ h8 |% }5 I8 i8 p0 x0 \17:46:04 vg_livedvd-lv_swap 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
+ v+ g4 K6 M" ?/ i/ n+ X其中:1 E3 u7 G- D( w# a
参数-p可以打印出sda,hdc等磁盘设备名称,如果不用参数-p,设备节点则有可能是dev8-0,dev22-0
: }8 c0 I+ e; Ltps:每秒从物理磁盘I/O的次数.多个逻辑请求会被合并为一个I/O磁盘请求,一次传输的大小是不确定的.. z2 @6 r0 W5 x' y# E7 o6 P
rd_sec/s:每秒读扇区的次数.+ k& z5 n8 [/ h" S' d
wr_sec/s:每秒写扇区的次数.9 E) f2 | [8 e- U
avgrq-sz:平均每次设备I/O操作的数据大小(扇区).+ U7 j3 U3 s3 b0 q8 x8 Z
avgqu-sz:磁盘请求队列的平均长度.
" x1 y0 B, d2 w! P9 o9 Zawait:从请求磁盘操作到系统完成处理,每次请求的平均消耗时间,包括请求队列等待时间,单位是毫秒(1秒=1000毫秒).) F& e6 X. A0 V
svctm:系统处理每次请求的平均时间,不包括在请求队列中消耗的时间.( e: u) {% y T9 i9 C/ D+ E
%util:I/O请求占CPU的百分比,比率越大,说明越饱和.9 M7 z& _4 {0 Y6 s% K
1. avgqu-sz 的值较低时,设备的利用率较高。
& Z. [$ R2 A8 r' T4 c/ N+ c2. 当%util的值接近 1% 时,表示设备带宽已经占满。: z5 g8 Z3 f* [4 |; ?! s+ m& R
8 H( n% B- [" U. v+ `! [ y10、要判断系统瓶颈问题,有时需几个 sar 命令选项结合起来
% p8 o# K4 l0 S$ y2 d4 U# }) P4 V怀疑CPU存在瓶颈,可用 sar -u 和 sar -q 等来查看3 H* j* [ Z" u" \1 r+ z8 A5 m
怀疑内存存在瓶颈,可用 sar -B、sar -r 和 sar -W 等来查看
, E/ B$ i, r7 g; F3 w: Q. S怀疑I/O存在瓶颈,可用 sar -b、sar -u 和 sar -d 等来查看
* D/ o5 g) [! L* e |
|