|
|
一、sar命令简介! f5 H1 S$ ?; ^- j" v9 f7 R( U, S
sar(System Activity Reporter系统活动情况报告)是目前 Linux 上最为全面的系统性能分析工具之一,可以从多方面对系统的活动进行报告,包括:文件的读写情况、系统调用的使用情况、磁盘I/O、CPU效率、内存使用状况、进程活动及IPC有关的活动等。本文主要以CentOS 6.3 x64系统为例,介绍sar命令。 n, ^ o' E7 Z) N# L
4 h' F( g- ^; z二、安装(Centos)
0 k; G: R! o+ c! q/ H#yum -y install sysstat #或者 yum install sysstat (自己按y)
; v& s% ~- E$ S( n#whereis sar! {. y$ Z$ h* V! K. G$ `: J
#whereis iostat
3 s0 d" v2 ~( a5 M; U1 J0 N* u% V& @1 w7 N安装完成。3 `" e6 G$ A9 e$ m9 |6 B
3 W6 P: K7 A. ]: F! W5 [三、常见使用方法2 {4 L7 w9 ~" X7 f/ L2 y# O7 R8 ~
t为采样间隔,n为采样次数,默认值是1;
% R7 S# |( R" x-o file表示将命令结果以二进制格式存放在文件中,file 是文件名。" N5 o0 h% Q7 b
options 为命令行选项,sar命令常用选项如下:
; T3 W5 }; m( @, N# w9 m4 e-A:所有报告的总和3 M# h2 X2 d& V! `
-u:输出CPU使用情况的统计信息6 t/ F' V! n; t% \4 H
-v:输出inode、文件和其他内核表的统计信息
S& z0 y0 U$ m6 X8 B-d:输出每一个块设备的活动信息
* g; u* f$ ]5 f5 `5 r! z G5 M-r:输出内存和交换空间的统计信息! q& _1 V9 }( r$ o2 `
-b:显示I/O和传送速率的统计信息8 W. w2 o9 b: D" t E5 [
-a:文件读写情况
6 a. D% s1 s8 t-c:输出进程统计信息,每秒创建的进程数
6 F6 e" D5 B; D9 m-R:输出内存页面的统计信息3 P" [ d: @4 s n( m# O. e5 K
-y:终端设备活动情况
( |8 W9 G/ K1 V) D-w:输出系统交换活动信息& M4 u$ i0 W& m# v+ m. o. A
1、每隔一秒往屏幕输出一次cpu使用信息,共输出5次:
) Q: T; @' a. `- M( B#sar 1 5 0 c. O4 `( Z# k n9 b$ r+ ?
#或者 sar -u 1 59 p1 m& P. v9 N* M
[root@VM_20_68_centos ~]# sar -u 1 5
5 q) `9 F# f3 S0 m# V" lLinux 2.6.32-431.el6.x86_64 (VM_20_68_centos) 2017年04月29日 _x86_64_ (2 CPU)
% r. N' ], W4 d2 a22时38分00秒 CPU %user %nice %system %iowait %steal %idle
$ }* B4 V K, ?! I22时38分01秒 all 0.00 0.00 0.50 0.00 0.00 99.503 @# @3 b; Q* l9 R$ M0 b
22时38分02秒 all 2.00 0.00 4.50 0.00 0.00 93.501 l& V# [7 l1 C, A2 A8 `0 H% A+ ?
22时38分03秒 all 0.00 0.00 0.00 0.00 0.00 100.00
6 W$ l: h% x+ ~# U22时38分04秒 all 0.51 0.00 1.01 15.15 0.00 83.33, z( s2 `, J t
22时38分05秒 all 1.51 0.00 1.01 0.00 0.00 97.49) b$ K! K0 L4 P+ D
平均时间: all 0.80 0.00 1.41 3.02 0.00 94.771 ^6 ]$ M- e2 }. S$ ]$ }# L, C4 _$ m
% X# `4 @( Z; d; k2 a# k/ H7 `! Q2、每2秒采样1次,共10次,把CPU使用数据保存到/opt/cpu.log文件中。
6 T( I$ [2 b, E/ b#sar 2 10 > /opt/cpu.log3 }) h: G7 D, u8 I
[root@VM_20_68_centos ~]# cat /opt/cpu.log5 G8 _. Q3 G+ ?6 \" G4 I- ` ?( ?
+ S, l" k1 N, E/ i. p
Linux 2.6.32-431.el6.x86_64 (VM_20_68_centos) 2017年04月29日 _x86_64_ (2 CPU)" F+ u7 V r! o. f
22时38分23秒 CPU %user %nice %system %iowait %steal %idle; r3 @0 M3 P* k
22时38分25秒 all 0.25 0.00 0.50 0.50 0.00 98.75* O/ a- p5 }/ ?, M" \
22时38分27秒 all 0.25 0.00 0.25 0.00 0.00 99.505 w: |; s' V8 [
22时38分29秒 all 0.25 0.00 0.25 0.00 0.00 99.50
; d# n7 I1 @! R: x4 f6 S22时38分31秒 all 0.00 0.00 0.50 0.50 0.00 98.99; ?$ _" \7 t3 |2 C& @- W
22时38分33秒 all 0.25 0.00 0.25 0.00 0.00 99.506 ]& Y8 e% S& c. @
22时38分35秒 all 0.25 0.00 0.50 0.00 0.00 99.25- Q% L! g# f* ~2 m6 x# s5 d
22时38分37秒 all 0.25 0.00 0.25 0.50 0.00 98.99
) Z: l: h1 e% |22时38分39秒 all 0.00 0.00 0.25 0.00 0.00 99.75
% Y% l+ T" }: n# V22时38分41秒 all 0.50 0.00 1.00 0.00 0.00 98.502 [. l& ?) m+ ~! F
22时38分43秒 all 0.00 0.00 0.25 0.50 0.00 99.24
/ Z. X, A* s: {) |7 a h. \4 G2 d平均时间: all 0.20 0.00 0.40 0.20 0.00 99.20
6 F6 a+ p: D% V3、当前所有核心的数据显示。3 ^( _8 @5 ]8 p5 [' H* {2 i
#sar -P ALL 1 1- W) f j! h4 F m7 c& M( `2 F
[root@VM_20_68_centos ~]# sar -P ALL 1 10 h0 ^1 o; R5 N! N, k G
4 o0 z8 M; @ A1 w( E/ hLinux 2.6.32-431.el6.x86_64 (VM_20_68_centos) 2017年04月29日 _x86_64_ (2 CPU)6 a c# J' [* n* k# |
22时38分23秒 CPU %user %nice %system %iowait %steal %idle
' ^8 E8 N3 Z1 E3 ~# p8 l22时38分25秒 all 0.25 0.00 0.50 0.50 0.00 98.75! Z7 m4 N# t8 E* I
22时38分27秒 all 0.25 0.00 0.25 0.00 0.00 99.502 _: f$ E; T' E2 w
22时38分29秒 all 0.25 0.00 0.25 0.00 0.00 99.50
# `5 q) c/ V! P. _ F22时38分31秒 all 0.00 0.00 0.50 0.50 0.00 98.995 o, r u; C/ o; _+ P1 t2 k9 A
22时38分33秒 all 0.25 0.00 0.25 0.00 0.00 99.50
- l6 _- e1 L/ ^9 z; w! O' Q* ^" Z22时38分35秒 all 0.25 0.00 0.50 0.00 0.00 99.25/ U% o& V( A" m0 a
22时38分37秒 all 0.25 0.00 0.25 0.50 0.00 98.99
: v; w, l. n$ ~2 e) ~( Q22时38分39秒 all 0.00 0.00 0.25 0.00 0.00 99.75
1 N* l% s! A V7 @" ^3 e+ v, d0 s22时38分41秒 all 0.50 0.00 1.00 0.00 0.00 98.50
' P& ~7 Y5 F o22时38分43秒 all 0.00 0.00 0.25 0.50 0.00 99.24
a8 n9 V9 W8 |" J平均时间: all 0.20 0.00 0.40 0.20 0.00 99.20
' _! ~1 c% d+ C4、inode、文件和其他内核表监控6 `4 _" ]7 L M$ e! F& t
例如,每10秒采样一次,连续采样3次,观察核心表的状态,需键入如下命令:
( |% B H/ _- Csar -v 10 3$ x# m$ o, {' ~1 [$ l7 E, L
屏幕显示如下:( P, M- [* i' Y: w. O
* M, [* k" G; P# l5 B
17:10:49 dentunusd file-nr inode-nr pty-nr
j2 @1 |+ S! G9 L M17:10:59 6301 5664 12037 4
' u% Q. e. C/ o2 R% F17:11:09 6301 5664 12037 4! E( y' p# _; t5 h1 Y" n
17:11:19 6301 5664 12037 43 y5 C Q: ~' R+ \. E( s1 o0 \
Average: 6301 5664 12037 4* e) s% H1 u3 v, Y% s
输出项说明:( X2 G4 U" S' G1 v: r3 Q. U# G# N
dentunusd:目录高速缓存中未被使用的条目数量4 W6 V+ j1 z1 ?6 ]9 m9 k c1 G
file-nr:文件句柄(file handle)的使用数量* b! U4 D J) O9 T- `2 Q; U8 I
inode-nr:索引节点句柄(inode handle)的使用数量
. s0 o% @% y! r3 ?2 Z' xpty-nr:使用的pty数量# @8 u- i T/ Y6 X5 d
9 r. q1 |* ^; H( ~# ]5、内存和交换空间监控
0 z, K& h0 S2 v例如,每1秒采样一次,连续采样3次,监控内存分页:/ R1 H' G- w3 m8 }) |0 Z& x
sar -r 1 3
0 L: w- H( ?4 z# P. w[root@VM_20_68_centos ~]# sar -r 1 34 Z: R7 |1 B% S$ w/ X9 W- D
Linux 2.6.32-431.el6.x86_64 (VM_20_68_centos) 2017年04月29日 _x86_64_ (2 CPU)
+ c/ W. C3 S4 H, k0 l22时49分46秒 kbmemfree kbmemused %memused kbbuffers kbcached kbcommit %commit
3 w, w1 T' H! [/ ^- t22时49分47秒 436764 3485988 88.87 184276 2486992 598852 15.277 h) H6 r- p" i; a1 l
22时49分48秒 436896 3485856 88.86 184276 2486984 598852 15.27
- Q' L: O- k0 v! M- x+ O7 w22时49分49秒 436896 3485856 88.86 184276 2486984 598852 15.27
' F/ F5 H- _+ {平均时间: 436852 3485900 88.86 184276 2486987 598852 15.27
8 [% i3 o6 V3 p# ~输出项说明:
) H/ r9 e$ w# X$ a. j1 p6 Bkbmemfree:这个值和free命令中的free值基本一致,所以它不包括buffer和cache的空间.
; L: m# {# Z3 _+ d# S9 ^# M" M2 ]kbmemused:这个值和free命令中的used值基本一致,所以它包括buffer和cache的空间.; b/ T) I% Y( a( g' \. g( K& m8 p" s7 C
%memused:这个值是kbmemused和内存总量(不包括swap)的一个百分比.
- _& V6 o, F" \1 s1 B1 ?- Ckbbuffers和kbcached:这两个值就是free命令中的buffer和cache.
% ]8 g+ [' x) \. W, Ikbcommit:保证当前系统所需要的内存,即为了确保不溢出而需要的内存(RAM+swap).4 d* v0 t6 T6 F. T9 V
%commit:这个值是kbcommit与内存总量(包括swap)的一个百分比.
- ]0 g) r W* A% j3 b. b# o& n1 A ?* f, x
6、I/O和传送速率监控
1 I( |3 p; O6 r8 Y+ Q1 q/ q例如,每10秒采样一次,连续采样3次,报告缓冲区的使用情况,需键入如下命令:
+ N8 j% T9 f$ nsar -b 10 3
y. W+ i7 L( D( u' D9 X9 a屏幕显示如下:
9 t8 T Y! @( ~6 P, O7 d; | i+ F" _
18:51:05 tps rtps wtps bread/s bwrtn/s
0 I: D6 _ `/ P9 H4 u18:51:15 0.00 0.00 0.00 0.00 0.001 `* o; o. O1 p ]# x8 l/ I6 d1 u, E
18:51:25 1.92 0.00 1.92 0.00 22.65- j n* a0 F6 i+ U: m- p* G0 ~/ i
18:51:35 0.00 0.00 0.00 0.00 0.00
! n' C$ D6 T. e J4 YAverage: 0.64 0.00 0.64 0.00 7.59. {5 [( Z( n6 P
输出项说明:* }6 f; G$ H8 M0 h
tps:每秒钟物理设备的 I/O 传输总量* `( P0 o/ V }9 z
rtps:每秒钟从物理设备读入的数据总量: i- i) S' \- ~
wtps:每秒钟向物理设备写入的数据总量
; x) l2 Z5 l( \- w! A V: jbread/s:每秒钟从物理设备读入的数据量,单位为 块/s) q* N S9 |" @
bwrtn/s:每秒钟向物理设备写入的数据量,单位为 块/s
* Z1 }- \# c7 l" g! _0 N: R6 E/ Q6 Q( ]" L
7、进程队列长度和平均负载状态监控
* o' k; j7 [& j例如,每10秒采样一次,连续采样3次,监控进程队列长度和平均负载状态:
) z% L. Z: X3 y) a: s1 }) X" gsar -q 10 3% `/ h. h- [8 O5 q6 W8 c0 a
屏幕显示如下:/ V' m) J( u# e* ^
, Q. b1 {/ }7 y& }" {
19:25:50 runq-sz plist-sz ldavg-1 ldavg-5 ldavg-15
3 q( g* U/ t- s& u$ b% n19:26:00 0 259 0.00 0.00 0.00. f8 R, R* I* r
19:26:10 0 259 0.00 0.00 0.001 @2 p4 }+ K/ K( G7 u) ~9 I6 `
19:26:20 0 259 0.00 0.00 0.00
' S2 E" m$ a9 k/ BAverage: 0 259 0.00 0.00 0.002 b5 U* |( t+ e! q; q8 O
输出项说明:; v2 |8 @; D9 G2 A% M O
runq-sz:运行队列的长度(等待运行的进程数)7 p: L, L8 b1 s, B: c% Z
plist-sz:进程列表中进程(processes)和线程(threads)的数量( |, w" R8 Z* A% |
ldavg-1:最后1分钟的系统平均负载(System load average)
4 [" H8 Z* d6 {; l( T# Bldavg-5:过去5分钟的系统平均负载
F- g: o7 d7 ], Zldavg-15:过去15分钟的系统平均负载
- a2 c5 w# y& ~' a& `5 L' z" _
+ i1 w4 W1 P8 a2 a9 `; T$ E9 V) m8、系统交换活动信息监控
% |2 z7 x, {- w0 C4 p例如,每10秒采样一次,连续采样3次,监控系统交换活动信息:
+ a- R2 w1 r! P& R6 s# Qsar – W 10 3
( h- S" o( `- y+ m2 J# u屏幕显示如下:
0 m* c- ~0 n, f; j* {8 h8 g
+ q! N# p1 g* z* O19:39:50 pswpin/s pswpout/s
4 @7 z& o; |( K+ ?/ z2 x19:40:00 0.00 0.00
$ E0 H- q7 r7 z, [# C- @19:40:10 0.00 0.005 P$ L" i6 h& q9 \' _. _, t s
19:40:20 0.00 0.00 ?& |& C$ ~( @9 W1 k. z
Average: 0.00 0.00
) g! B% i% A/ `/ J输出项说明:
6 }2 l( n- L$ d9 ?" n7 C+ w6 npswpin/s:每秒系统换入的交换页面(swap page)数量. c4 K) d0 Z9 p2 P) w- k( |' n
pswpout/s:每秒系统换出的交换页面(swap page)数量
0 X! g. V1 }3 ?( g# y7 f. U6 M5 m( d% l2 s" c3 j& g1 |
9、设备使用情况监控. }7 o- A, K4 O9 z8 I) A5 ]
例如,每10秒采样一次,连续采样3次,报告设备使用情况,需键入如下命令:( q. }9 x4 ~, k% a, L* e
# sar -d 10 3 –p
7 v# s# Z$ T2 T4 E" B屏幕显示如下:
2 M5 G9 A% B7 f
0 |) v: [' d- i* h1 Q( ]17:45:54 DEV tps rd_sec/s wr_sec/s avgrq-sz avgqu-sz await svctm %util
+ u: w% G* R' ]: G/ K; `! L# m* w17:46:04 scd0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
8 r3 a, d4 N, E5 ]8 O, s17:46:04 sda 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00! ~+ l% L# v1 Q* Q/ d) j9 K. x
17:46:04 vg_livedvd-lv_root 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
8 B: ~- C+ ?: N$ R7 b8 m17:46:04 vg_livedvd-lv_swap 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
/ k" V: I6 N* c' P其中:
9 }' T9 j: J! z+ d" o d参数-p可以打印出sda,hdc等磁盘设备名称,如果不用参数-p,设备节点则有可能是dev8-0,dev22-0
6 t- e) d3 n' A! u: ]& ~' U+ V. O1 Htps:每秒从物理磁盘I/O的次数.多个逻辑请求会被合并为一个I/O磁盘请求,一次传输的大小是不确定的.; j: g: W/ c: G4 Y: o1 o
rd_sec/s:每秒读扇区的次数.
2 i' ~( s9 r3 m) l/ Ywr_sec/s:每秒写扇区的次数.
) q6 W$ W% l4 | r' ~' g0 Cavgrq-sz:平均每次设备I/O操作的数据大小(扇区).- x; y. h" N* V+ m
avgqu-sz:磁盘请求队列的平均长度.) d- z# m! A, ?; E8 ?7 l
await:从请求磁盘操作到系统完成处理,每次请求的平均消耗时间,包括请求队列等待时间,单位是毫秒(1秒=1000毫秒)." z9 Y2 i g" I# f; Z* K& T
svctm:系统处理每次请求的平均时间,不包括在请求队列中消耗的时间.
" [6 y8 R/ e7 F; H%util:I/O请求占CPU的百分比,比率越大,说明越饱和.. V# e8 ?+ ]. u g; ^
1. avgqu-sz 的值较低时,设备的利用率较高。
6 J0 T$ H& u6 O: F9 ]+ e2. 当%util的值接近 1% 时,表示设备带宽已经占满。
0 g9 {/ o- F$ G" _ ^% e& U/ s
. ^% ]# q- j! O, H2 q10、要判断系统瓶颈问题,有时需几个 sar 命令选项结合起来1 {- L/ h1 w8 _- v) D
怀疑CPU存在瓶颈,可用 sar -u 和 sar -q 等来查看
3 F0 B, U) _' t* {+ n) V7 B怀疑内存存在瓶颈,可用 sar -B、sar -r 和 sar -W 等来查看
4 }0 J1 R+ w$ E( ~' s X4 [怀疑I/O存在瓶颈,可用 sar -b、sar -u 和 sar -d 等来查看
9 R+ f+ x# P% ~% \$ C6 B7 E |
|