01. top4 a5 Q' B0 L5 t) K' T" @
& m6 d4 G$ N' r: b- c$ Q. S" o4 J: k+ X' C& k: a9 H- z$ s+ J
top是最常用的查看系统资源使用情况的工具,包括CPU、内存等等资源。
1 Z. R' ?. e# H# e- }* U这里主要关注CPU资源。
# z& [! G$ J$ j$ Z$ {* e
% {2 _" K6 M5 Q) }$ g9 @+ n) Z! }7 [
N( s$ \ ^9 j1 }7 p1.1 /proc/loadavg" Y# l6 Q2 y v
( h; c) l* O. ?: O
& m$ e( z0 Q3 ?8 \9 pload average取自/proc/loadavg。" i# o; ^+ J3 \' D7 `0 t6 {
- 5 h, l( L" ~& t2 k9 p
- 9.53 9.12 8.37 3/889 28165
复制代码 ! m {7 u8 D+ m
; [$ h' X# J j- G& v
前三个数字是1、5、15分钟内进程队列中平均进程数,包括正在运行的进程+准备好等待运行的进程。! a: I% o# l( g" | v5 L3 ~
第四个数字分子表示正在运行的进程数,分母是进程总数。3 e' x# c) V; h. y" M
最后一个数字是最近运行的进程ID号。
9 h6 k3 _8 X; a) ]7 q" R2 b1 p其中top取的是/proc/loadavg的前三个数。
# ?, E( ~) B \! P W7 M
' t1 l2 y1 u9 O" t% n+ x: A* g8 G. k) c* i% c# j# m
1.2 top使用! U/ Z% `4 i0 z: f/ \
; w1 y' h# Q- R& Q: B$ |
' B6 r. }+ I$ \ c. B' Q, V: K/ D
打开top,可以指定更新的周期。
' e" j0 V# C- I; j8 q# M输入H,打开隐藏的线程;输入1,可以显示单核CPU使用情况。
$ V' K: `9 k. V% A2 Stop -H -b -d 1 -n 200 > top.txt,每个1秒统计一次,共200次,显示线程细节,并保存到top.txt中。7 H, B' \7 @6 {2 g- u( o* [
top采样来源你还依赖于/proc/stat和/proc//stat两个,这两个的详细介绍参考:/proc/stat[1]和/proc//stat[2]。
2 W$ M: w( }1 L+ b# x; w8 e. A其中CPU信息对应的含义如下:
# f) z- N9 Z0 f" r5 k" u9 y
) G( y ^) s- C! s+ P o8 D& t- us:user,统计nice小于等于0的用户空间进程,也即优先级为100~120。! n n4 }, K8 e$ e1 ^
- ni:nice,统计nice大于0的用户空间进程,也即优先级为121~139。% r; N7 ?8 ]! c9 g( w
- sys:system,统计内核态运行时间,不包括中断。6 A1 u0 g4 D# G* v
- id:idle,几系统处于空闲态。
- [6 \ Q" Q2 l; W3 m* i - wa:iowait,统计io等待时间。" b5 |/ P" k) j/ F, p, } {0 `
- hi:hardware interrupt,统计硬件中断时间。
2 s9 T1 v$ B' D% I7 v+ w - si:software interrupt,统计软中断时间。
5 J3 y& {( x( X1 x$ B n2 f - st:steal
复制代码 . Z/ n% q; N/ _" o$ ], N0 z' {9 M
( q: j) h0 S2 g8 g; m6 v' n
0 G4 {0 o' q8 m S; L
; E# V+ {* X0 h4 C) [+ F8 s7 M, m/ U3 q# t& `2 |
02. perf
x) S& _2 c8 O2 p9 E! J( ~) _( V; z: l) F" \
8 x, w% O# P; x% t4 M) ~* p' u《系统级性能分析工具perf的介绍与使用[3]》有关于perf使用的详细介绍,这里重点关注CPU占用率。
, o! b9 J, b( b% H1 j$ ^7 R1 \* M通过sudo perf top -s comm,可以查看当前系统运行进程占比。3 t7 H0 V, {+ p, a; n
这里不像top一样区分idle、system、user,这里的占比是各个进程在总运行时间里面占比。
% q+ i* W6 X$ V# L# c. b; ?1 H通过sudo perf record记录采样信息,然后通过sudo perf report -s comm。
$ O0 C1 ]! ?) z" \- L
! n$ L. y' f: N6 i; j6 f1 h! N4 x$ s
0 ?% A: _5 B$ u+ Z* s* f1 j03. sar和ksar8 l7 n1 u9 m* v/ K* J- W) a
% G+ t8 c9 n; D% t! T! x/ j3 s7 V7 a$ |) n* ?: l
sar是System Activity Report的意思,可以用于实时观察当前系统活动,也可以生成历史记录的报告。. {: y) Z- g3 Q2 ]
要使用sar需要安装sudo apt install sysstat,然后对sysstat进行配置。% a& e) ^5 l4 z2 m
sar用于记录统计信息,ksar[4]用于将记录的信息图形化输出。! f$ P1 ~7 E9 q9 ?4 w7 S- h0 @/ i
ksar下载地址在:http://github.com/vlsi/ksar/releases。
% k* k. x: e) N
" f3 @) T$ j' Z* ^! ^3 Z- # 将 ENABLED=“false“ 改为ENABLED=“true“+ D3 u/ k/ R- y' |7 b3 L' c3 P9 \
- $ sudo gedit /etc/default/sysstat
6 T: f! R4 J7 l% W5 O, l2 ~ - P0 v' K1 q' x) u
- # 修改sar的周期等配置
( e6 a) w4 A/ s2 L* X - $ sudo gedit /etc/cron.d/sysstat
8 u1 P4 X% Q) _2 p( R% @ a1 Y
3 W2 ~# i4 @' _. j' ?' y+ m h- # 重启sar服务* x$ }6 s0 N* @9 z' C1 b/ O
- $ sudo /etc/init.d/sysstat restart' H1 H& W. q8 B* e2 H
- 0 F) s" q, A5 Q x
- # sar log存放目录3 S1 h8 U9 d' B' X. X
- $ ls -l /var/log/sysstat/
复制代码 7 i; Q* z2 S3 O; P$ x1 V V/ Q
, n* m6 E. |+ B$ Y. y% z* D: m
使用sar记录开机到目前的统计信息到文件sar.txt。, i9 w' C- U+ I( s: R% \
- 0 f! Q: K1 @" L4 c
- LC_ALL=C sar -A > sar.txt
复制代码 , M' O u! ^7 l* g- I
8 k" e2 P, X* a U
PS:这里直接使用sar -A,在ksar中无法正常显示。6 [3 q. t6 p! F. D$ C
如下执行java -jar ksar.jar,然后Data->Load from text file...选择保存的sar.txt文件。- w) J7 u; r- H3 S+ @; J8 n
得到如下的图表。. \. i+ k( X. q1 n* H
/ z: K: [- k; y6 k0 d
5 U( d3 Z2 _6 H& S& p( G* @% y
还可以通过sar记录一段时间的信息,指定采样周期和采样次数。
$ A- g- R9 N4 p" R3 x4 e这些命令前加上LC_ALL=C之后保存到文件中,都可以在ksar中图形化显示。# ~8 j% a' `7 ^6 k& q Z! Y
& u# h5 Q/ e: _; {$ K- sar 1 100-----------------所有cpu合一的统计信息
: @+ } ]- i8 w# j5 \0 H( |9 @ - sar -P ALL 1 100--------包括cpu合一以及单个cpu的统计信息* a! N! s5 j! P
- sar -B 1 100---------------paging统计信息: L6 C- |' _0 w* t0 K
- sar -b 1 100---------------块设备IO统计信息4 g2 n) F, d( D' ]
- sar -d 1 100---------------块设备活动统计信息
4 y" r% q$ L. S+ L% m - sar -F 1 100----------------挂载的文件系统统计信息; C" U+ E5 R) v! \4 Y/ [( z
- sar -r ALL------------------ 显示详细的内存使用统计信息1 E& d% E6 g4 B8 Y% y
- sar -S ------------------------显示swap空间使用情况统计信息1 [; {8 M5 _9 g$ r( g% e) H* c4 c
- sar -w----------------------- 显示进程创建以及进程切换统计信息
6 ]+ ` R5 ~% u: f1 R" t0 F4 n - sar -W-----------------------显示swap换入换出统计信息。
复制代码 $ O- c; d, f; M% I8 \; ~- r
, M$ l6 W/ D# W3 W0 n+ P
更详细请参考: ?/ }0 J0 {" H9 f8 E7 M+ a! E- B
•《How To Create sar Graphs With kSar To Identifying Linux Bottlenecks[5]》7 X' G9 w2 n! T% d
•《Collect and report Linux System Activity Information with sar[6]》。3 c0 z- |& r0 s' T! Y1 Z
, t5 X% _8 \) p6 q( z
# |" [4 w7 _' p0 _& q% I$ _- \
04. mpstat
2 w6 d1 @: ]) \6 V2 a' d4 R/ i: _4 L4 n) ^$ F% C6 z, o4 j; I2 j' f4 I
$ B& p# I2 L6 N
mpstat是Multiprocessor Statistics。当没有参数时,mpstat显示系统系统以来所有信息平均值。) X6 y+ {' C2 @
常见用法如下,-P ALL监控所有CPU,细节显示特定CPU;10表示每10秒监控一次;20表示监控20次。8 G" c: l/ W' }' m
- 7 ~1 I$ C3 b$ H' P- Q% Z; \
- $ mpstat -P ALL 10 20
复制代码 ; w j. A3 B4 ^& r) ^, ~# f
* `7 U* S0 {. D. ?, _( n# n结果如下:( w6 c6 _, b. y- U3 O( U( X
& w `( X9 e5 ^; v v
9 R* c( i `* d5 S; n( Y' [7 @usr表示用户空间进程,nice表示nice值大于0的用户空间进程。
4 B9 h e& b4 a& h& r. bsys是内核空间,iowait是I/O等待时间,irq是硬中断,soft是软中断,idle是空闲时间,guest和gnice都是虚拟机时间。5 Q* B1 w9 U' T( t j o
* a- ^; X: Q: k7 H3 D& `- @
x3 h( M- x. Y0 {& K2 F% g0 b
05. uptime3 J1 w% W; c: x" ?6 l2 U' P3 j. G' J
, N1 g- i; l$ V% B" t% }8 k# Y/ ^% m* l l* B* L
uptime是一个简单获取系统总共运行多长时间,以及最近1分钟、5分钟、15分钟的平均负载。$ E6 d* [% e( b( ]' [* x& {
uptime通过/proc/uptime和/proc/loadavg获取相关信息。
1 e3 j1 C- T; x% a* Iup前是当前系统时间,up后是系统运行时长。
/ w: s3 z& a/ Y! S+ ]" tload average后是1分钟、5分钟、15分钟平均负载。7 m; C; k# w+ q* l( w8 L" A
: A+ k* H; \+ |# ?- 11:15:41 up 82 days, 20:34, 8 users, load average: 0.28, 0.40, 0.43
复制代码
2 N8 g9 N# S# V( s1 @- `; `* }0 h7 N/ x' r! i
06. vmstat
! H; q. K5 B6 Z
# |% M& ]# }+ |, n# Q! ?: v
* v& |; h7 a/ L* qvmstat主要用于监控系统内存使用情况的工具,但是也包含一些CPU相关信息。* w% U: L: L7 N# i$ p
使用方法vmstat 5 5表示运行5次,每次5秒。结果如下:
* Y" @: t- O0 \0 P# t/ Q7 w& o+ q- 0 C# f/ ? q9 @) Z# c) W6 R. u( k
- procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----3 `9 O1 z$ S; {
- r b swpd free buff cache si so bi bo in cs us sy id wa st
9 ?/ ~/ w0 Y2 D7 f - 1 0 472576 228688 559092 1061756 0 0 9 39 1 0 8 4 87 0 0( `* p( S1 g+ f6 A9 f
- 1 0 472576 228184 559100 1061756 0 0 0 13 1532 3395 10 6 84 0 0; h1 i2 f0 ~7 N; H# e& ]
- 1 0 472576 229308 559100 1061616 0 0 0 0 1446 3449 10 5 85 0 0
& w/ P7 H: j$ W# w6 [6 Y - 0 0 472576 229592 559108 1061616 0 0 0 6 1419 3474 10 5 85 0 04 c2 l4 `$ ~' ]/ R
- 1 0 472576 229804 559108 1061616 0 0 0 0 1446 3439 10 5 85 0 0
复制代码 @" j! x3 B) t" L$ I- ^
& ~9 `: H, [# I& ~, ^! }8 X# w# P
上面的参数可以分为6大部分:进程、内存、swap、io、中断和进程切换、cpu。) Y5 G( b1 n+ s6 c/ U
. v. }' I- S0 D- v& s% d: ~9 i0 N" v. X8 t
更加详细的解释:+ Y6 P% i, Z$ N/ z( P1 ]
7 e8 r' z0 D3 i# D) I% _
/ H+ e) n5 m$ X2 ^9 N: n( L* E1 l* h. b* g' Z/ v& w' a
参考文档:《Linux Performance Measurements using vmstat[7]》& E w7 U2 o& a, i3 l+ S9 y) U
% i( m$ a0 R7 w8 f' |1 y- J
! n2 q7 c$ x, B5 p% q6 L
07. pidstat, q7 Q/ C5 E# T- H+ {- }/ s% M) |
+ o4 c- D* P6 |
. r* U7 ?* W( Y4 A: b, [
pidstat主要用于监控全部或指定进程占用系统资源的情况。
* J" e6 K5 i! F- ]# p
1 ]+ ~6 S3 V, ]1 J, o
$ _2 A% X' o& g$ t" T* k7.1 查看CPU使用情况6 ]$ x# A# I: U
! e2 r$ ^, }" q( H5 q
/ S9 z# C4 f# X' D# g) qpidstat首次运行时显示自系统启动开始的各项统计信息,之后运行pidstat将显示自上次运行该命令以后的统计信息。用户可以通过指定统计的次数和时间来获得所需的统计信息。; ~4 k1 C+ G3 I5 E
- , J6 X4 j' P$ F& l
- # 显示所有的进程统计信息,包括idle进程。" Q: D; R* ~7 j( I# X& Q* ~
- pidstat -p ALL
' K4 ?% n0 U; p. f6 p - , `1 t7 k) z% E/ T W& U
- # 更加详细的显示了线程统计信息。
1 H5 `- I' C& u( b# R/ |) N7 ~ - pidstat -p ALL -t
! ?; A3 a7 L$ D8 g- J( r0 V - . s4 l4 |0 _& m+ C5 Y8 V; g0 L
- # 周期采样和采样次数3 ]# \% W3 n% `" ?6 y' e
- pidstat [option] interval [count]
复制代码 ; ]! @# Z) W; R% g
8 ]( E9 n. ]+ T' ~5 l. I
除此之外还可以通过-p获取指定进程的统计信息。! {1 [1 c% R7 i) B
pidstat还可以通过-r获取内存使用统计信息,通过-d获取IO使用统计信息。
4 \: t, i/ R. x) F
6 _2 S, r T2 E- J: r, l
2 f! j, G& Y# Y0 Y5 i6 c7.2 查看内存使用情况
Z: E9 K5 t# d' `7 q* ?' v p3 y& ?6 a4 c1 k
' N* V) P' d: o* P* cpidstat -p ALL -r结果如下:- j$ R( p# Q5 D3 M" d
3 _3 s: Y: G* ~ z, h- 15时18分21秒 UID PID minflt/s majflt/s VSZ RSS %MEM Command4 [9 D/ w$ N) X6 B2 k8 c7 ]
- 15时18分21秒 0 1 0.02 0.00 185316 3028 0.08 systemd
0 B* P m/ X& R$ _$ F) v - 15时18分21秒 0 2 0.00 0.00 0 0 0.00 kthreadd
# v$ @* ?& K; W W - 15时18分21秒 0 4 0.00 0.00 0 0 0.00 kworker/0:0H5 P% F5 m1 e9 Y3 u/ o0 J6 E6 X
- 15时18分21秒 0 6 0.00 0.00 0 0 0.00 mm_percpu_wq
8 x& M0 n$ m+ {/ S. D) L, n0 r - 15时18分21秒 0 7 0.00 0.00 0 0 0.00 ksoftirqd/02 x' J. y4 E3 ]% U
- 15时18分21秒 0 8 0.00 0.00 0 0 0.00 rcu_sched
复制代码 : |2 n: b0 t5 d: `$ E5 w! v
: ?& a2 p0 g( s$ L/ t9 _ m: Dminflt/s: 每秒次缺页错误次数(minor page faults),次缺页错误次数意即虚拟内存地址映射成物理内存地址产生的page fault次数。! ` t1 |; L" y! a/ n
majflt/s: 每秒主缺页错误次数(major page faults),当虚拟内存地址映射成物理内存地址时,相应的page在swap中,这样的page fault为major page fault,一般在内存使用紧张时产生。% \/ I6 o/ w# d* k' y% n
VSZ: 该进程使用的虚拟内存(以kB为单位)。
- [/ z! o2 _; ~; {8 hRSS: 该进程使用的物理内存(以kB为单位)。, Y6 z+ H3 o) F+ h0 r0 F& a- j
%MEM: 该进程使用内存的百分比。
# d6 H$ | C$ h8 E. h( YCommand: 拉起进程对应的命令。% k- O7 g) l& Q8 J
4 `: E. T0 C" l) C
2 W) H% }( L0 V) d7 ?0 w, }! [/ H) f/ M
7.3 查看磁盘使用情况
+ Q! g5 r# x% y+ n# }7 \+ v* Y7 y! g# `4 ^8 u+ i9 d" l
L8 S2 _5 C1 q& w; I" H# K
pidstat -p ALL -d结果如下:
! H( R1 _, J @* [- & Z. _% ~. l+ e: U3 j5 h: [
- 15时20分40秒 UID PID kB_rd/s kB_wr/s kB_ccwr/s iodelay Command5 x2 F( K0 Q' ]: W( N/ J0 }) x
- 15时20分40秒 0 1 -1.00 -1.00 -1.00 243523129 systemd& X! h2 s8 z; K
- 15时20分40秒 0 2 -1.00 -1.00 -1.00 0 kthreadd) y9 U* f# s$ L
- 15时20分40秒 0 4 -1.00 -1.00 -1.00 0 kworker/0:0H
; K/ v. A( C7 r# f' j- k - 15时20分40秒 0 6 -1.00 -1.00 -1.00 0 mm_percpu_wq. u+ B* q/ ?/ b' d: u
- 15时20分40秒 0 7 -1.00 -1.00 -1.00 714512328679 ksoftirqd/0
* r) [1 R* C5 j6 K$ Z - 15时20分40秒 0 8 -1.00 -1.00 -1.00 417757303594 rcu_sched
复制代码
/ \) \% ~* W/ U2 @' |
0 _' m+ ^1 g. b( R: i7 ykB_rd/s: 每秒进程从磁盘读取的数据量(以kB为单位)。
/ a6 L6 s4 g! ` M; KkB_wr/s: 每秒进程向磁盘写的数据量(以kB为单位)。
+ S. O/ ^# J3 L/ L5 p! Y+ ~kB_ccwr/s:每秒进程被取消向磁盘写的数据量(以kB为单位)。
$ I/ N. c* U i+ q( ECommand::拉起进程对应的命令。
4 ^+ ]9 z! ~; R; {- \' h5 S( Y/ ^" J, U$ m. b5 U! Q4 J
% ~# W9 I \* q08. time) }: T5 N! ]7 w4 t! t) r3 i3 x
* r7 ~1 ?) J# V! u6 i' V
{8 p# }2 a8 _
time命令可以被用于统计指定程序的CPU耗时。* \4 }6 L7 _* Y. z. D! h1 }
比如time cksum nomachine_6.0.80_1.exe得到如下结果。
7 N, p0 Q% h# Y" ?- O
. ^6 R. A* Z W/ r: O# v6 r- 2401940638 32606752 nomachine_6.0.80_1.exe2 {! y) X6 J7 S4 @ ~' g
- ; Z; D( |0 y8 ^
- # 整个操作总耗时,0.263-0.094-0.011=0.158是IO等待耗时。4 `! w: `3 ]4 |5 `' } @6 o
- real 0m0.263s
0 E) B9 P7 {( V% g' f
0 a5 ^$ L7 E, u7 o" L2 U }$ ]9 X- # 用户态耗时) ]6 n. f7 a: K/ z* a
- user 0m0.094s
: z0 O; H( t. H' N - $ h5 o) l7 ]5 }
- # 内核态耗时2 I! Z* x# ^( z: u a3 g. v0 Z
- sys 0m0.011s1 [" b6 B- u, ~( y6 f/ M" h
- 2401940638 32606752 nomachine_6.0.80_1.exe2 S) q! d) x o& d$ O4 k6 Y! b
- , d& a' W6 c# t: D" b ?5 U
- # 第二次执行就可以看出等待IO操作的时间基本上没有了。
! n* \: q# |) K4 T - real 0m0.098s j4 Z0 X U, s/ ~
- user 0m0.097s( j: v9 o0 D! H ?
- sys 0m0.000s
复制代码
$ F! P: K6 U* w4 [! ?9 m) R( N
& j- i, u7 V' R; w09. cpustat9 `' @+ K. d+ o o7 [) {" ]
4 K( h, a- S% ? a, M5 ]
4 I1 [6 P8 ^* Q% @5 I, j通过sudo apt install cpustat安装,cpustat -T -D -x结果如下。
# [9 h- K/ H/ h* G; w* U- 7 ~& D6 B7 @4 Q% V5 [
- # 显示Load Avg信息和平均频率等+ g- I) U% C& v" ^' s) W
- Load Avg 0.66 0.54 0.49, Freq Avg. 1.46 GHz, 4 CPUs online+ ^6 p# [9 m; a A; r
- # 进程切换次数、硬中断、软中断等等统计信息。
7 }& K; i! _0 F) J2 O - # CPU占用率、用户空间和内核空间占用率等。
$ g- Y5 d* Q: W - 3791.1 Ctxt/s, 1709.9 IRQ/s, 1800.0 softIRQ/s, 0.0 new tasks/s, 1 running, 0 blocked7 y# H1 I$ ~2 m2 Y, t
- %CPU %USR %SYS PID S CPU Time Task
# N! _& y9 d) U2 U2 s9 o P# S - 25.74 25.74 0.00 11435 R 3 2.29w /usr/bin/python39 {2 L' K/ q! Q# {. V, F1 V
- 15.84 15.84 0.00 9445 S 0 1.49w /usr/lib/xorg/Xorg4 D8 R) ]% [. t0 B2 @+ m+ M. y
- 10.89 9.90 0.99 2722 S 1 1.05w compiz
, i+ ^" L2 z" S- h2 S0 |; N - 7.92 0.00 7.92 32352 S 2 16.60s [kworker/2:1]
& q* q. H: ?& d; J$ K - 0.99 0.00 0.99 32397 R 1 0.01s cpustat% [8 T, x0 w% o- M: F8 A3 H
- 0.99 0.99 0.00 11046 S 2 16.20h compiz, s1 D( k S5 `* k. c( ]( R1 H$ h
- 0.99 0.99 0.00 1317 S 0 8.76h /usr/NX/bin/nxnode.bin
h+ g) a/ w. U* a$ n - 0.99 0.00 0.99 10293 S 1 1.24m [kworker/1:2]
* G' _9 Y9 s: X) |' u: b7 q- g - 64.36 53.47 10.89 Total
2 i4 o2 E% y+ f7 e8 O7 B( ] - - ?, ?5 z' B% J7 ^- g4 L
- Load Avg 0.66 0.54 0.49, Freq Avg. 1.75 GHz, 4 CPUs online
* }. U( b; Y) c0 |; }: r: @, ~ - 2834.8 Ctxt/s, 1190.9 IRQ/s, 1183.3 softIRQ/s, 0.0 new tasks/s, 4 running, 0 blocked
Z% j8 v0 o' }' E" U2 e0 _/ b" o - %CPU %USR %SYS PID S CPU Time Task
, k) W- `, x$ y) \& j8 { - 25.76 25.76 0.00 11435 R 3 2.29w /usr/bin/python3
2 _0 v0 K" F0 F/ p A0 S - 18.18 18.18 0.00 9445 S 0 1.49w /usr/lib/xorg/Xorg2 a9 ~4 C: @% ~6 R
- 7.58 7.58 0.00 2722 S 1 1.05w compiz# F: b/ m: R0 P8 m9 g1 U
- 6.06 0.00 6.06 32352 S 2 16.64s [kworker/2:1]
" D4 [( u* f& k) X - 1.52 0.00 1.52 32397 R 1 0.02s cpustat+ R: M/ |& R6 }% L. E9 D W1 Y; M
- 1.52 0.00 1.52 8 S 0 3.00h [rcu_sched]2 {2 K0 a* x5 y! M0 Z) v$ c
- 1.52 0.00 1.52 18409 S 0 1.16m update-notifier, L# U3 W1 s0 @7 D# F
- 62.12 51.52 10.61 Total8 C/ } f5 i, ]/ Y3 O; V; H
- & P+ g$ x6 m/ B3 Q7 ?7 c3 }1 N
- Distribution of CPU utilisation (per Task):/ k$ O0 ~( ?4 a8 ?3 t, t0 K
- % CPU Utilisation Count (%)
7 n0 }: Z3 K' W { - 0.00 - 1.97 706 98.88
" X; x( y. V! R1 K1 l& T+ o - 1.97 - 3.94 0 0.00
A/ U/ k% b W' D7 y6 u - 3.94 - 5.91 0 0.00
8 S2 ]/ A& V! Y7 D - 5.91 - 7.88 2 0.28- b1 F y7 H1 A: J! {5 J& C
- 7.88 - 9.85 0 0.00- r# C. [$ K* n2 U: G& X! @
- 9.85 - 11.82 0 0.003 y; [4 @5 @( D) |1 u
- 11.82 - 13.79 1 0.14
$ o! }& S# q5 w% N! J% B! x! P - 13.79 - 15.76 0 0.000 d9 ^& Q/ H7 N& z3 e2 l2 j I
- 15.76 - 17.73 1 0.14
. @% k0 j& w8 l4 ^8 I6 j - 17.73 - 19.70 1 0.14
9 r. U0 I4 ^# C" Q7 Y( \ - 19.70 - 21.67 0 0.00
& g5 R, d* M2 k1 }( j p+ g - 21.67 - 23.64 0 0.00
: |) B% \, _3 [, v5 Z! r. H - 23.64 - 25.61 2 0.284 }8 Z; m' p2 ^3 u8 U) n; G$ A
- 25.61 - 27.57 0 0.00
0 ]; r# f; q `2 k% Y - 27.58 - 29.54 0 0.00
/ d/ |2 X6 x- f - 29.55 - 31.51 0 0.000 u1 y7 q0 n* V8 V) ^: R: Z) Z# \
- 31.52 - 33.48 0 0.00
2 F9 c) y1 X( y; ~4 S: b - 33.48 - 35.45 0 0.00
: K* @* X9 j8 D! _ - 35.45 - 37.42 0 0.00
! {7 Q! t5 j# c* G! i) } - 37.42 - 39.39 1 0.141 U `( g' }- ^1 G* T
- " ^1 W) V- M; X1 l! G
- Distribution of CPU utilisation (per CPU):----------------------------------------------各CPU占用率,分用户空间和内核空间。; Z% Y# G& Q4 b# a( q$ T% J
- CPU# USR% SYS%
+ D0 F" T; O, d5 s - 0 17.37 1.20
+ [: ?" N) ?. W7 I - 1 8.98 2.40
/ Q( @8 |, [1 K3 V' {! J - 2 0.60 7.19
7 ]% r- T$ B( W/ }, ~; _ - 3 25.75 0.00
复制代码
/ d1 K* ~$ ? }, S0 E0 p
1 H. W. e, u5 W- k8 C+ R F10. htop! S, |4 Z! G3 W" j$ i
, C' x$ j- C! }6 {2 t
3 C$ {; ?) U+ C4 E% G
htop和top的功能类似,但是可读性比top更好。在界面按下F5,可以看到进程里面的线程,树形结构表示了父子关系。
, E% g% g+ `7 r# G; ^& \% h O! A' U! L$ m% u
& K, P2 s1 k8 I( R. i
% {* Y+ W# c9 p8 \+ H/ y2 n8 p
# ^, l: ?% j3 S. b' g* K% P11. atop
! g4 `; i8 g# K& Q. E- {
6 B6 K f7 J% t$ a
# F' q; H+ Y; b, U- u/ ~atop是一个监控系统资源和进程的工具。它通过CPU使用率来对列表中的进程进行降序排列,而每一个进程则包含了CPU、内存、磁盘和网络状态等信息。它的功能与top和htop类似。! F0 F& Q3 C5 Y$ X' ?3 U
0 e. I6 S# I8 g# U. j6 [+ X4 |3 U+ `
12. glances
+ D/ v0 X6 z0 v' {! P+ c3 I1 ]( r$ D4 x1 p3 n
1 m) D# {: ]* Z5 mglances是一个由python编写的,与Nmon功能类似的报告工具,它能够报告统计cpu、内存、网络、磁盘和进程。除了报告统计,glances不支持任何其他特性或功能。当程序运行时点击“h”可以显示帮助页面。
/ n+ _, l% [% q
7 }; f! l5 Q* e/ O1 I4 t6 Z- j
( S+ `6 `6 v9 h' t
0 H5 J/ p+ e6 B0 t13. nmon
: r% Q T. F% J& h3 ^& ]7 S6 J4 g- u1 \# f. g2 { }& O8 W x
& b3 x, b7 c) s: r* g% }) i2 z! M: P
Nmon是一个非常容易使用,能够在一个屏幕上监视CPU、内存、网络、磁盘使用状况和进程列表的工具。除了无法管理进程和修改报告显示,Nmon与那些只用于报告的报告工具完全一样。另外,它可以将数据保存到电子表格文件。
, N+ }$ l: S f7 p; z3 P
4 b0 @ C) s* y0 X
7 ~! A1 C) Q4 x& d, V
( n$ l% C3 Y+ t9 I6 g& [* T14. pcp-gui) y% A) n# c! U9 s9 _& m. u0 X4 `
4 U- N, j& q2 G# b
8 w" D$ X) K; BPerformance Co-Pilot,简称PCP,是一个系统性能和分析框架。它从多个主机整理数据并实时的分析,帮你识别不正常的表现模式。它也提供API让你设计自己的监控和报告解决方案。
; S0 M5 G+ ]! z" S7 f1 {( \安装pcp相关工具。8 ` N. s I+ n, O
- 7 \ ]$ Z& C" T" s
- $ sudo apt install pcp pcp-gui
复制代码
* O1 J( {6 |" Z5 U( ?3 aFile->Open View选择需要打开的视图,比如CPU、Disk、Memory等。1 V. o% P( i9 A! x e2 H$ W& ?. {
- M; c f* P' ? _; R$ x7 \! V& E) l7 A0 B
15. collectl和colplot
3 t/ b# u0 z3 h/ E( x; j, g6 m/ q9 N: X) n' f1 |
% L! w* {! E& w; z' F15.1 collectl使用
$ U' ^- D; E6 [2 d$ @
* B. L q1 V% |/ h* U7 W: k6 }4 Y7 J& N0 p# A6 C
collectl是一款非常优秀并且有着丰富的命令行功能的实用程序,你可以用它来采集描述当前系统状态的性能数据。0 y: N5 ?, _5 S' I Q
不同于大多数其它的系统监控工具,collectl 并非仅局限于有限的系统度量,相反,它可以收集许多不同类型系统资源的相关信息,如 cpu 、disk、memory 、network 、sockets 、 tcp 、inodes 、infiniband 、 lustre 、memory、nfs、processes、quadrics、slabs和buddyinfo等。1 L# \% U8 i: _5 T* G. i: R1 r
同时collectl还可以替代常用工具,比如top、vmstat、ps、iotop等。
1 ~( H2 j; V* v; K5 o安装collectl:6 o% K) \4 n' I3 ` x' C, F
- / |- `4 }/ F' H/ h- g, i
- sudo apt-get install collectl
复制代码 1 f: H) k" u, k: f& E% X* J
2 x# r+ u9 U% O7 O7 M0 I* x, i( L
collectl的使用很简单,默认collectl显示cpu、磁盘、网络信息。5 c, F2 P$ o% n; @/ N. [
* D8 K+ e. o- s; K- t9 _
collectl还可以显示更多的子系统信息,如果选项存在对应的大写选项,大写选项表示更细节的设备统计信息。, |! a- [8 c. Y3 C# P6 x
- % b! W% t$ k1 T; b4 q* u! C
- b – buddy info (内存碎片)
- j. h) L% ^6 t3 Z7 w' O - c – 所有CPU的合一统计信息;C - 单个CPU的统计信息。* D& H, l# n. [( e) d
- d – 整个文件系统Disk合一统计信息;C - 单个磁盘的统计信息。
! N' Z2 E6 E9 H8 z9 k - f – NFS V3 Data
1 y5 A3 c3 K: r6 k8 n; y$ | - i – Inode and File System* @0 |* r- Q% I! G
- j – 显示每个CPU的Interrupts触发情况;J - 显示每个中断详细触发情况。
1 F) k1 c" M3 r M8 \ - l – Lustre
( _) g# `; w0 P q8 x! m, V# p - m – 显示整个系统Memory使用情况;M - 按node显示内存使用情况。
; s! P/ B* b5 v; {# i7 |& f - n – 显示整个系统的Networks使用情况;N - 分网卡显示网络使用情况。
3 H8 Q( [" |. Y, V& { - s – Sockets. {3 ? M' t) S, P. Y2 i
- t – TCP
- z5 }) a6 x! R. C5 G - x – Interconnect
( F4 P) ~2 n+ p: G$ @/ u - y – 对系统所有Slabs (系统对象缓存)使用统计信息;Y - 每个slab使用的详细信息。
复制代码 0 C4 {! o7 c1 a/ h, W
: M+ T# i u# R" C) Tcollectl --all显示所有子系统的统计信息,包括cpu、终端、内存、磁盘、网络、TCP、socket、文件系统、NFS。
$ l& e6 ^4 }# K Zcollectl --top可以代替top命令:
4 [0 }, V1 z; J+ C3 g6 t$ ?
& t0 M6 w7 Z* C, I1 z
+ G v% y0 E C. F1 T0 E: i) icollectl --vmstat可以代替vmstat命令:
1 h( ^0 V6 P k4 s# M5 g* ~2 z. V
K, @- D# ?+ c( @' E; w6 `
& }, Z2 ?& O- F' w5 y, ccollectl -c1 -sZ -i:1可以代替ps命令。, J; Y- s& Z; K4 i5 r
collectl和一些处理分析数据工具(比如colmux、colgui、colplot)结合能提供可视化图形。" R H2 j$ {1 X+ y- _+ E7 t/ W6 M
- b" B. @" i% U) o Y
1 x! X$ T V/ A A% C
15.2 colplot使用
) W8 E# j- k) F y Z( l9 O9 F# g& M! v) h
4 t. A& [7 a xcolplot是collectl工具集的一部分,其将collectl收集的数据在浏览器中图形化展示。
0 V( O% J8 D/ |; s+ F! Q1 ~colplot的介绍(http://collectl-utils.sourceforge.net/colplot.html),相关源码可以再collectl-utils]下载:http://sourceforge.net/projects/collectl-utils/files/解压下载的colplot之后,sudo ./INSTALL安装colplot。8 W5 K. e0 N+ O+ R
安装之后重启apache服务:
# h R3 {$ a- p4 f" M( p, H+ o
$ \) G9 V) ~, ~. l- $suod systemctl reload apache2
( R8 x4 N; h1 Q$ y: x; t) V - " I6 z" B% r. t9 j9 C5 u" W! b
- $ sudo systemctl restart apache2
复制代码 7 ?4 ]& ~* l$ g; B
在浏览器中输入http://127.0.0.1/colplot/,即可使用colplot。. |/ u, y5 s* b- r2 M& P
通过Change Dir选择存放经过collectl -P保存的数据,然后设置Plot细节、显示那些子系统、plot大小等等。
' S7 h; Y/ g& \5 b+ U/ @
, |; G' O' ?( O
* K2 O$ P- p/ A- ~3 h
最后Generate Plot查看结果。
$ t. Z Y4 P s9 D1 ~! d5 V1 T
# P0 c" G/ M5 @
% o4 @: u9 k9 i6 \8 ]/ H/ r2 E |
好东西