|
|
一、sar命令简介
. m3 B; Q" @1 c2 Osar(System Activity Reporter系统活动情况报告)是目前 Linux 上最为全面的系统性能分析工具之一,可以从多方面对系统的活动进行报告,包括:文件的读写情况、系统调用的使用情况、磁盘I/O、CPU效率、内存使用状况、进程活动及IPC有关的活动等。本文主要以CentOS 6.3 x64系统为例,介绍sar命令。
3 A. V. N& k8 ]8 |8 ^2 O9 C! P+ A- P1 z9 [: {. J5 }" ]
二、安装(Centos)* i. B0 N' K1 ]9 ]5 j8 Q
#yum -y install sysstat #或者 yum install sysstat (自己按y)
. k& w3 H a7 e; t/ l0 _#whereis sar9 o9 a7 Q% H1 ]' m5 X7 L3 M7 k
#whereis iostat
' L* t/ e3 P+ a. r: S安装完成。
3 b7 w6 w. R( c3 g' m8 v1 @2 M" W) q2 Q* o: w
三、常见使用方法8 {" J) c' W" d
t为采样间隔,n为采样次数,默认值是1;( R4 R& s8 Z) k, ? J
-o file表示将命令结果以二进制格式存放在文件中,file 是文件名。6 x: z5 E" a! ]4 G+ D; E& |
options 为命令行选项,sar命令常用选项如下:! a5 S: |1 S, |' @0 F5 m) a+ W
-A:所有报告的总和- G+ ]2 j3 u/ H% j
-u:输出CPU使用情况的统计信息
+ w' I/ t. `) F! I8 ^# ~1 g; r-v:输出inode、文件和其他内核表的统计信息
9 p0 V& |! l% U0 U- i! m-d:输出每一个块设备的活动信息
5 @ y. i$ g( p2 Z& S1 |) R-r:输出内存和交换空间的统计信息, a' ?. t4 E& y/ e* ?" p2 w" j! b
-b:显示I/O和传送速率的统计信息
3 f6 S) j8 a) X# u. N9 M# v7 M-a:文件读写情况
) r# j. ~; Y$ l( \( D+ L! a-c:输出进程统计信息,每秒创建的进程数
* }" I# G# G. L) v; ?-R:输出内存页面的统计信息4 v: R3 ]$ P0 s
-y:终端设备活动情况
$ u: x. e" v4 v: V* X+ q8 T: A-w:输出系统交换活动信息( p. h7 x# h& _$ k+ n4 H* m: y0 V# n
1、每隔一秒往屏幕输出一次cpu使用信息,共输出5次:& C) C$ v3 f |7 _5 ?
#sar 1 5 $ v u- m H4 ^
#或者 sar -u 1 5* I0 T/ G- b2 v5 O. E+ T
[root@VM_20_68_centos ~]# sar -u 1 5
: A- J! s/ ?5 TLinux 2.6.32-431.el6.x86_64 (VM_20_68_centos) 2017年04月29日 _x86_64_ (2 CPU), ^% e6 _" Y$ F# b* k6 Z7 b
22时38分00秒 CPU %user %nice %system %iowait %steal %idle r" b3 }/ J1 p/ h) ]
22时38分01秒 all 0.00 0.00 0.50 0.00 0.00 99.50% M( k. ?' x6 D4 i
22时38分02秒 all 2.00 0.00 4.50 0.00 0.00 93.503 Y+ r/ U0 b# S+ \2 y) i
22时38分03秒 all 0.00 0.00 0.00 0.00 0.00 100.00
3 ^2 Q$ D$ b N. @22时38分04秒 all 0.51 0.00 1.01 15.15 0.00 83.339 l0 j& l6 @' N& U# A5 T _5 X
22时38分05秒 all 1.51 0.00 1.01 0.00 0.00 97.49. h. d5 t7 v: D5 h
平均时间: all 0.80 0.00 1.41 3.02 0.00 94.77) w' |* i6 Y+ ^7 Z! h
: V! f3 `/ G9 s Z
2、每2秒采样1次,共10次,把CPU使用数据保存到/opt/cpu.log文件中。8 n7 O4 _; ~0 [
#sar 2 10 > /opt/cpu.log
0 K6 Y) s$ I- f[root@VM_20_68_centos ~]# cat /opt/cpu.log
# N' m' d$ M: C
$ a+ j" ~5 B! q; O0 p( ]* U+ @Linux 2.6.32-431.el6.x86_64 (VM_20_68_centos) 2017年04月29日 _x86_64_ (2 CPU); o/ P0 j" ~2 C5 t% Y
22时38分23秒 CPU %user %nice %system %iowait %steal %idle1 r( O) C( B H# A. I
22时38分25秒 all 0.25 0.00 0.50 0.50 0.00 98.756 t5 C" j/ d" ]2 H8 g/ e# i
22时38分27秒 all 0.25 0.00 0.25 0.00 0.00 99.50
/ }- I; v. x& |3 V+ U22时38分29秒 all 0.25 0.00 0.25 0.00 0.00 99.50! O# x* x9 `8 K! o
22时38分31秒 all 0.00 0.00 0.50 0.50 0.00 98.99
* q: f k: ]; n. |22时38分33秒 all 0.25 0.00 0.25 0.00 0.00 99.509 ?, q/ b8 J9 o' N
22时38分35秒 all 0.25 0.00 0.50 0.00 0.00 99.25
( f; D- S h1 g5 H s22时38分37秒 all 0.25 0.00 0.25 0.50 0.00 98.99
3 {4 \% {8 ~7 |3 U; s' S( d" U22时38分39秒 all 0.00 0.00 0.25 0.00 0.00 99.75( j/ K3 b$ k a) {: b4 g
22时38分41秒 all 0.50 0.00 1.00 0.00 0.00 98.50
$ }. |& k& K$ ~22时38分43秒 all 0.00 0.00 0.25 0.50 0.00 99.24 w2 ?, v1 A* Q) N- V. P# L
平均时间: all 0.20 0.00 0.40 0.20 0.00 99.20
3 j+ E, w# J) S: o, W5 r3、当前所有核心的数据显示。
/ W7 V4 o5 @- g& s#sar -P ALL 1 1
; E$ P: C8 {- Q2 k9 ]: R8 ^* X[root@VM_20_68_centos ~]# sar -P ALL 1 1
3 X8 j4 w/ _5 r; _( C! W3 H- T0 u$ _/ t. d9 h# I
Linux 2.6.32-431.el6.x86_64 (VM_20_68_centos) 2017年04月29日 _x86_64_ (2 CPU)
& \ u3 o5 P3 E1 a2 N7 k- T22时38分23秒 CPU %user %nice %system %iowait %steal %idle
( k6 e# d3 U f/ j22时38分25秒 all 0.25 0.00 0.50 0.50 0.00 98.750 R) D* v% T, g' ~' |
22时38分27秒 all 0.25 0.00 0.25 0.00 0.00 99.500 e8 b: S' |& O) |$ u( X, G
22时38分29秒 all 0.25 0.00 0.25 0.00 0.00 99.50
. U& Q1 k1 W" d. s/ C22时38分31秒 all 0.00 0.00 0.50 0.50 0.00 98.99. o4 |2 Y' |8 x6 U
22时38分33秒 all 0.25 0.00 0.25 0.00 0.00 99.50. Y% D' Z2 a4 z( r# |
22时38分35秒 all 0.25 0.00 0.50 0.00 0.00 99.25
6 V' g' y7 q) W7 o6 ?/ x# E22时38分37秒 all 0.25 0.00 0.25 0.50 0.00 98.99, C- w' ~) v7 G; o/ S# l" L. E8 Z
22时38分39秒 all 0.00 0.00 0.25 0.00 0.00 99.75
. E, k5 J0 z7 v0 t22时38分41秒 all 0.50 0.00 1.00 0.00 0.00 98.508 J+ b1 m, z& V, S9 b; `
22时38分43秒 all 0.00 0.00 0.25 0.50 0.00 99.24
* v5 s+ P; b% V. v5 E' D# C平均时间: all 0.20 0.00 0.40 0.20 0.00 99.20
. B& \$ }) l! J [& E3 B3 p/ y4、inode、文件和其他内核表监控
9 r. M$ O: f1 I3 U9 |例如,每10秒采样一次,连续采样3次,观察核心表的状态,需键入如下命令:: ^' e' |6 T+ z
sar -v 10 39 m2 w! S( B* j
屏幕显示如下:" R4 m) T: w: x$ _# p' ?6 p
) z2 ?- m1 ^+ _- @
17:10:49 dentunusd file-nr inode-nr pty-nr
* C$ k. [2 R3 m8 n17:10:59 6301 5664 12037 4( w' ~* }4 M- i
17:11:09 6301 5664 12037 4
1 @& e' s( M- j8 o17:11:19 6301 5664 12037 4
: [; e0 l M0 T* Z2 R, _! b' sAverage: 6301 5664 12037 4
+ }- j8 M/ n" q5 ~+ ~ F: X& }8 g, X输出项说明:
8 Z2 j/ h* ~' w7 G! X% o9 _0 Bdentunusd:目录高速缓存中未被使用的条目数量
1 ?5 H' V- O, }: `; i& o# [file-nr:文件句柄(file handle)的使用数量" ?- G; D( w4 o# u- {
inode-nr:索引节点句柄(inode handle)的使用数量
0 Q6 |* G% G" B0 {pty-nr:使用的pty数量/ b: H1 {- h4 w9 L" k7 J/ V0 Q
9 e1 P, k7 i7 N# `5、内存和交换空间监控7 i/ T1 Z, V: { K* i' Z
例如,每1秒采样一次,连续采样3次,监控内存分页:3 U. H4 U+ X' l' B' P2 F# E. R
sar -r 1 3
- o* Q8 t( m$ K+ Y- S/ O* w[root@VM_20_68_centos ~]# sar -r 1 3
. n9 e t8 X! Y0 f' f0 n! a3 m$ |( {Linux 2.6.32-431.el6.x86_64 (VM_20_68_centos) 2017年04月29日 _x86_64_ (2 CPU)
' s* c* f; Y% h# V22时49分46秒 kbmemfree kbmemused %memused kbbuffers kbcached kbcommit %commit
# X0 W. @" j6 r( w0 W% `* l8 N22时49分47秒 436764 3485988 88.87 184276 2486992 598852 15.271 {; p! V- |9 y3 l' Z E) D+ J- M
22时49分48秒 436896 3485856 88.86 184276 2486984 598852 15.270 ~- }" Y' Y) K t& V' J5 o! B' [* A" u
22时49分49秒 436896 3485856 88.86 184276 2486984 598852 15.27: q* u; \; x( Q, M- L
平均时间: 436852 3485900 88.86 184276 2486987 598852 15.27
# A0 L i- a$ `' j0 p输出项说明:
- f8 ^3 h3 q ~' G0 ^+ w9 Ykbmemfree:这个值和free命令中的free值基本一致,所以它不包括buffer和cache的空间.
2 t& y! o4 p6 i1 Z( o: I2 \kbmemused:这个值和free命令中的used值基本一致,所以它包括buffer和cache的空间.$ D( h4 Z4 V2 s6 _) X# P
%memused:这个值是kbmemused和内存总量(不包括swap)的一个百分比.& H, Y0 i3 l% b. V5 K' g6 ]- G
kbbuffers和kbcached:这两个值就是free命令中的buffer和cache.
6 b4 w ^0 }+ [1 `8 {- rkbcommit:保证当前系统所需要的内存,即为了确保不溢出而需要的内存(RAM+swap). B3 t. k* d! g6 i% m) @
%commit:这个值是kbcommit与内存总量(包括swap)的一个百分比.! Z. z2 P/ O8 b
5 Q) P; z2 n# g( J* Z. J6、I/O和传送速率监控) S3 j4 o6 z0 k% T2 L
例如,每10秒采样一次,连续采样3次,报告缓冲区的使用情况,需键入如下命令:2 L. V" x/ ?" z4 ?! A8 R# L/ ?
sar -b 10 3
1 y+ L/ C0 v! g+ }& s屏幕显示如下:
! m( l% z6 Q/ {2 w8 x" M$ a% R8 ^1 ~
18:51:05 tps rtps wtps bread/s bwrtn/s
% B$ r ~( f7 m3 f: v4 b18:51:15 0.00 0.00 0.00 0.00 0.008 l7 ?6 Q, q J0 z* b
18:51:25 1.92 0.00 1.92 0.00 22.65
( [: h- A, q- R( \0 X) p18:51:35 0.00 0.00 0.00 0.00 0.004 ^! N* R( B' f& R* _! I
Average: 0.64 0.00 0.64 0.00 7.59
% T6 _& _6 u- r: G6 s" ?, T输出项说明:0 ~7 B. r2 b- u- [9 w' i0 }
tps:每秒钟物理设备的 I/O 传输总量
$ C% y5 J4 V3 {/ \rtps:每秒钟从物理设备读入的数据总量7 `9 Q; S( G5 O% n# D1 I" k% u: b/ K
wtps:每秒钟向物理设备写入的数据总量& ~+ y# u+ w: b# v6 M5 h
bread/s:每秒钟从物理设备读入的数据量,单位为 块/s
# ^6 r4 ~0 Z- V- @bwrtn/s:每秒钟向物理设备写入的数据量,单位为 块/s7 D% ]7 f" ~0 M, D
& L; E2 D1 E2 N; L
7、进程队列长度和平均负载状态监控
" x/ P3 b+ Z# {" d$ u7 x9 I例如,每10秒采样一次,连续采样3次,监控进程队列长度和平均负载状态:+ W' F+ l; ?. a9 \' c9 |$ g/ K
sar -q 10 37 g' t1 d% F5 z# a. |
屏幕显示如下:& {, f. B2 Y1 C) T
+ ^+ O1 D9 l% f" r19:25:50 runq-sz plist-sz ldavg-1 ldavg-5 ldavg-153 ]* D3 r3 ^ L \& _' k
19:26:00 0 259 0.00 0.00 0.000 C8 _3 _2 |! m( s s! {
19:26:10 0 259 0.00 0.00 0.009 f2 i7 V* N& U5 ]
19:26:20 0 259 0.00 0.00 0.00- `; J0 v8 M6 T V2 H
Average: 0 259 0.00 0.00 0.00 F( v. \; q5 W @% p+ o T
输出项说明:
g5 ^% b' T e- h0 \6 B2 }, W L, \8 ^runq-sz:运行队列的长度(等待运行的进程数)
+ X" R' r/ A6 Dplist-sz:进程列表中进程(processes)和线程(threads)的数量
6 v" g# v1 z, P& L: }ldavg-1:最后1分钟的系统平均负载(System load average)
: j, o- {* F7 }8 B# `5 eldavg-5:过去5分钟的系统平均负载3 z# e5 z* j" N
ldavg-15:过去15分钟的系统平均负载
' S# T0 k0 S4 n9 S; o3 D. s; g- R; y8 S4 y7 [' I4 `* @" a
8、系统交换活动信息监控. K* C+ K# u$ D, k2 _" v9 u
例如,每10秒采样一次,连续采样3次,监控系统交换活动信息:6 o, q: Z: S. J0 O2 k( g
sar – W 10 3
) [- {# w/ o( X a% e屏幕显示如下:- k$ A A" y5 a! T @$ S" f5 q
( P: m& l/ T \; N0 B2 m0 p
19:39:50 pswpin/s pswpout/s
' r" Z. P' u: \19:40:00 0.00 0.00
9 A' I9 b( d6 _% C n/ G19:40:10 0.00 0.009 T- b$ Q, d! _/ [1 l2 j b5 F
19:40:20 0.00 0.00
9 p I# A6 g) G& {9 C/ @Average: 0.00 0.009 e) l! j4 G" l |
输出项说明:
1 @; N# m7 ^: {4 A4 Fpswpin/s:每秒系统换入的交换页面(swap page)数量
% P X' C3 X1 |7 \3 rpswpout/s:每秒系统换出的交换页面(swap page)数量
9 o5 C) J9 A" \/ E) n. q* n0 p! G! A# l8 ~7 d( W! Q+ e
9、设备使用情况监控" H. Y) b% Q$ {' B; B2 I
例如,每10秒采样一次,连续采样3次,报告设备使用情况,需键入如下命令:
4 `, y. F' H. h# sar -d 10 3 –p
. [ s0 D2 l& |) E" q; z屏幕显示如下:0 i# ? P9 M: S: X
) [( o/ {6 x) T7 y6 ?1 H
17:45:54 DEV tps rd_sec/s wr_sec/s avgrq-sz avgqu-sz await svctm %util9 a/ f4 s* e# g
17:46:04 scd0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
' q( f/ W% Q$ `* O* m0 _0 X0 c17:46:04 sda 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00) p. T* F/ U" t Q b, c) M4 g. b
17:46:04 vg_livedvd-lv_root 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00( a4 q# y: c. [/ a/ u4 c2 B+ ], u
17:46:04 vg_livedvd-lv_swap 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
i& d4 E+ k4 _6 h. K m其中:
# N* L, Z4 T N( {1 E5 ~4 o7 U6 S参数-p可以打印出sda,hdc等磁盘设备名称,如果不用参数-p,设备节点则有可能是dev8-0,dev22-0
8 @1 s+ z, @2 g9 ?: ]. S R% }tps:每秒从物理磁盘I/O的次数.多个逻辑请求会被合并为一个I/O磁盘请求,一次传输的大小是不确定的.( }& C& \& {; D7 g4 T
rd_sec/s:每秒读扇区的次数.
1 D; s# S% g4 uwr_sec/s:每秒写扇区的次数.: r; S7 @. U, ~$ x) t
avgrq-sz:平均每次设备I/O操作的数据大小(扇区).
$ }1 A! g6 h$ t- Xavgqu-sz:磁盘请求队列的平均长度.
7 W& `6 x- L) E ~7 F& b* tawait:从请求磁盘操作到系统完成处理,每次请求的平均消耗时间,包括请求队列等待时间,单位是毫秒(1秒=1000毫秒).% M5 S+ ?, U, D( T
svctm:系统处理每次请求的平均时间,不包括在请求队列中消耗的时间.
' n, N; W2 }1 E%util:I/O请求占CPU的百分比,比率越大,说明越饱和.
1 c7 ~6 G. }* x/ q: ]! W7 H1. avgqu-sz 的值较低时,设备的利用率较高。' Z/ U: X6 n3 ]' b- v# H3 _
2. 当%util的值接近 1% 时,表示设备带宽已经占满。
: ~' t7 M' f, {3 _; k
5 x# e1 k- P9 b4 a10、要判断系统瓶颈问题,有时需几个 sar 命令选项结合起来
v$ `/ \/ z. [: W1 f+ h怀疑CPU存在瓶颈,可用 sar -u 和 sar -q 等来查看. Z1 F9 z3 F0 A
怀疑内存存在瓶颈,可用 sar -B、sar -r 和 sar -W 等来查看
0 i& W' L4 N3 f% w怀疑I/O存在瓶颈,可用 sar -b、sar -u 和 sar -d 等来查看0 l; u' Z& t0 l! k
|
|