你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

14 个 Linux 下 CPU 监控工具

[复制链接]
gaosmile 发布时间:2020-5-21 15:55
01. top5 G" V6 I8 o+ o
) t: x1 b8 c/ L( r& g

2 [; _8 K/ k; p3 H+ I5 ?9 Ntop是最常用的查看系统资源使用情况的工具,包括CPU、内存等等资源。
5 @$ J$ K3 p! t: n' M) N( q这里主要关注CPU资源。
+ |8 w1 l  q/ J9 N- N
# ^9 G2 h2 E$ g' @4 a
8 u% D, V& {$ c# L4 e
1.1 /proc/loadavg$ C. R: r: a& `/ U, N9 \4 V
. `$ R: n7 j& r/ G* s" k
" a! x$ |$ f5 Z. X( l1 g8 n
load average取自/proc/loadavg。' R! [* J# c3 s6 P
  1. ' O- Y. N9 c- J) @8 D
  2. 9.53 9.12 8.37 3/889 28165
复制代码

3 b" E$ s4 z/ {" T$ H  v

9 l. E% J+ _% ^0 D前三个数字是1、5、15分钟内进程队列中平均进程数,包括正在运行的进程+准备好等待运行的进程。9 k# b6 h4 }: |6 r( B
第四个数字分子表示正在运行的进程数,分母是进程总数。
/ W- p  V1 G2 R  c- R8 n最后一个数字是最近运行的进程ID号。' f5 ?9 o8 X/ M2 u. M
其中top取的是/proc/loadavg的前三个数。* [: d: l5 h* b: n* U
. z: ^+ V' G0 u0 |  p: t
. C+ F3 P% p( Z! c
1.2 top使用
, k3 X* \, G8 Y- Y3 m: N* i# K
) f1 k9 z2 s5 D) u

6 [1 R* f7 N5 v7 \* N- x$ u打开top,可以指定更新的周期。
4 w& h* g: b/ F0 }5 m0 _2 b; S4 g输入H,打开隐藏的线程;输入1,可以显示单核CPU使用情况。9 A1 m0 h3 ]7 W
top -H -b -d 1 -n 200 > top.txt,每个1秒统计一次,共200次,显示线程细节,并保存到top.txt中。% w( A5 z5 V; s  c( F% ^
top采样来源你还依赖于/proc/stat和/proc//stat两个,这两个的详细介绍参考:/proc/stat[1]和/proc//stat[2]。, M! d6 K9 m7 W7 W" c8 c
其中CPU信息对应的含义如下:
# |8 @1 Z6 r" j, B4 F+ g: @+ i
  1. 9 d: ~* k" C) U- N
  2. us:user,统计nice小于等于0的用户空间进程,也即优先级为100~120。$ v" B* c) w8 s
  3. ni:nice,统计nice大于0的用户空间进程,也即优先级为121~139。( s# a; I, x$ c9 S5 H1 Z
  4. sys:system,统计内核态运行时间,不包括中断。+ |5 A4 h/ @( V, A- [+ Q8 v% l/ M
  5. id:idle,几系统处于空闲态。
    1 r( S6 U! ]- |% [& G  @6 k
  6. wa:iowait,统计io等待时间。8 u7 m2 e* Y9 g8 m0 r  t
  7. hi:hardware interrupt,统计硬件中断时间。5 O# R) A7 q# p$ N0 w$ I
  8. si:software interrupt,统计软中断时间。
    . e& b) J  H- P/ H+ W
  9. st:steal
复制代码

  R* {( q* C: ], R! T: M
9 D5 S) M% F, i# ]% Q- i4 [
微信图片_20200521154539.jpg , P; h1 b( m) K5 ^$ t( i

8 [$ g7 Y6 e2 b+ ]0 K( W, h
) I6 x0 w# i0 X7 x- _9 Q
02. perf
% I$ ]# y, t' p$ @% P. n5 y4 |  t, h) _, P
- i5 y" d( x% F7 \# `
《系统级性能分析工具perf的介绍与使用[3]》有关于perf使用的详细介绍,这里重点关注CPU占用率。* n" Q# M% r: K/ T. A# t. q
通过sudo perf top -s comm,可以查看当前系统运行进程占比。
# t8 y: Z3 Z4 z: X) K* n2 W这里不像top一样区分idle、system、user,这里的占比是各个进程在总运行时间里面占比。' x  g* o6 B1 M5 k. }
通过sudo perf record记录采样信息,然后通过sudo perf report -s comm。' W- l* X0 t7 a, ~6 e
微信图片_20200521154543.png $ v# G3 @' K$ D8 @7 T7 R' o

& K1 j4 n, q0 l4 S7 b! |# r! [, U4 e

; c0 y% [( v2 d1 o# J03. sar和ksar
) G' d# ?" ^5 l) Y' o, X
1 U2 J1 {0 G) g; ~

) s# r$ [- q/ m  D( P6 q  ~sar是System Activity Report的意思,可以用于实时观察当前系统活动,也可以生成历史记录的报告。+ S& r; h  ?) K" y3 h. }+ z4 \
要使用sar需要安装sudo apt install sysstat,然后对sysstat进行配置。% Q  p: d1 n4 B2 ~9 R6 V1 p: E
sar用于记录统计信息,ksar[4]用于将记录的信息图形化输出。
' M1 D+ y! H$ c( U) `9 T  E- vksar下载地址在:http://github.com/vlsi/ksar/releases。4 U" ~4 f/ k1 {2 }7 S

  1. 9 A" p( b7 v2 k9 `4 b2 f; h
  2. # 将 ENABLED=“false“ 改为ENABLED=“true“# |& h" t) B" v2 h, ]" r/ g  u
  3. $ sudo gedit /etc/default/sysstat- y: @7 K, R) i5 ^6 r5 |2 J1 d8 Q2 S

  4. ( X0 o7 B9 P+ w# p+ B$ [
  5. # 修改sar的周期等配置2 l5 \2 C. K- E+ [4 ]
  6. $ sudo gedit /etc/cron.d/sysstat
    $ Z, P$ m2 {+ n8 Z! o
  7. $ e" \4 c" \  ~* ]5 t& @$ i8 `) z
  8. # 重启sar服务
    # F  L5 Z' @- C
  9. $ sudo /etc/init.d/sysstat restart3 k- x0 \5 ^6 |6 x1 F
  10. $ o/ x- H/ m3 b9 O' o' L" U5 ~' z
  11. # sar log存放目录
    7 ^6 t8 k; m  Y8 N8 D
  12. $ ls -l /var/log/sysstat/
复制代码

2 a& Z5 j8 o7 B4 |' R1 c/ D
8 r% h2 f# ^6 C! W* m
使用sar记录开机到目前的统计信息到文件sar.txt。
& [& {* U4 V# V6 e, y; c( K8 W" N7 V

  1. 6 w0 _$ H1 M) N. D4 C7 E' w, ~; Z
  2. LC_ALL=C sar -A > sar.txt
复制代码

/ Z7 w" f4 `! [) o' e' n9 J; \5 P

* n- q* a7 m) c# p6 uPS:这里直接使用sar -A,在ksar中无法正常显示。. ^" L0 E. Y6 }4 I
如下执行java -jar ksar.jar,然后Data->Load from text file...选择保存的sar.txt文件。* f9 _% m- r: g! |
得到如下的图表。8 b; i$ `; r2 |# E  k$ e! p% c
微信图片_20200521154546.jpg   t3 G- q( Z) x5 P

" h( Y% u3 s% c: J. X5 b- \还可以通过sar记录一段时间的信息,指定采样周期和采样次数。9 X* @' p# p1 {0 j0 M
这些命令前加上LC_ALL=C之后保存到文件中,都可以在ksar中图形化显示。) F+ u9 U5 m5 x2 w4 `
  1. ' a: K/ Q  C2 J' [' N1 b% A1 K$ Z
  2. sar 1 100-----------------所有cpu合一的统计信息8 s/ |( L/ Q% j' S
  3. sar -P ALL 1 100--------包括cpu合一以及单个cpu的统计信息; {* h* \# H8 b
  4. sar -B 1 100---------------paging统计信息
    ) w/ j- b3 o1 x* A! x/ \
  5. sar -b 1 100---------------块设备IO统计信息
    / G7 {- g" O# ]; L
  6. sar -d 1 100---------------块设备活动统计信息
    ) h- ~6 B" ?' f2 V1 x# a
  7. sar -F 1 100----------------挂载的文件系统统计信息6 q, S% |: M0 q. Y8 ?2 B
  8. sar -r ALL------------------ 显示详细的内存使用统计信息, \* q1 b! b* Y: U
  9. sar -S ------------------------显示swap空间使用情况统计信息
    ( F8 \( b! ^# `# e1 |' N, z1 W
  10. sar -w----------------------- 显示进程创建以及进程切换统计信息
    8 ]0 E$ o  z- `; f0 [1 y5 f
  11. sar -W-----------------------显示swap换入换出统计信息。
复制代码

; o" Z: V9 K% h3 i1 {/ k  j) E
( {6 C9 ^3 Y/ x
更详细请参考

" n: J: c8 Y8 R- u
•《How To Create sar Graphs With kSar To Identifying Linux Bottlenecks[5]》
  M( b1 U* s+ Q: |) d•《Collect and report Linux System Activity Information with sar[6]》。
4 p3 k3 e) l! Y, J% A5 n
' n% U. j2 Q& o. t6 F1 E4 B

# M0 y7 r" |" K1 E6 U5 @) R5 k04. mpstat. A! V& ^" ]9 W
8 z4 M# Y8 e3 f9 P. \1 @: _6 G9 K7 F
9 u( \$ e! h3 I. b" B1 u* K: B
mpstat是Multiprocessor Statistics。当没有参数时,mpstat显示系统系统以来所有信息平均值。! X0 V: K4 ~* {  g
常见用法如下,-P ALL监控所有CPU,细节显示特定CPU;10表示每10秒监控一次;20表示监控20次。7 n( f: v# F- T% ~% X5 G

  1. 2 S" j: r8 C- u
  2. $ mpstat -P ALL 10 20
复制代码
2 f/ M& G# q  i5 t% P/ {
% N' Z6 n; i/ t8 ?
结果如下:
( J( O6 G9 {' B( o 微信图片_20200521154549.png
9 s, P/ {/ W* O% f; W
  \5 {( ?, e$ R6 P6 p  Wusr表示用户空间进程,nice表示nice值大于0的用户空间进程。
# j0 c1 ?$ q$ C3 P! ]* x. d6 d& S! |sys是内核空间,iowait是I/O等待时间,irq是硬中断,soft是软中断,idle是空闲时间,guest和gnice都是虚拟机时间。5 a) i7 n* Q; R

# F; M9 u6 L6 s6 v% P' i2 `

) y$ V3 p+ \  e$ J. q- C; G7 j05. uptime2 f$ D4 m- c; q+ {# L, r% p  q

9 }8 L4 x/ H$ E/ ]1 A) j
5 x8 G+ ]# j* Q0 t) e( t+ [' H
uptime是一个简单获取系统总共运行多长时间,以及最近1分钟、5分钟、15分钟的平均负载。
  f0 g7 a3 C3 h  e6 q3 E. Ouptime通过/proc/uptime和/proc/loadavg获取相关信息。8 a/ V0 [" e& o% G
up前是当前系统时间,up后是系统运行时长。5 m: d" B. X9 z6 Q6 [+ c, N
load average后是1分钟、5分钟、15分钟平均负载。* i) |: t0 C# I7 n% ?& Z6 M

  1. - J# b" [" X8 u
  2. 11:15:41 up 82 days, 20:34,  8 users,  load average: 0.28, 0.40, 0.43
复制代码
3 F0 Y+ Y. z0 x4 K/ V$ W
+ Q" m$ [0 v& L2 B- z( P  z% }
06. vmstat$ \* A+ x; H  C* F. x# O1 E
$ h. z3 x) f# Z  w

" q$ n6 p- l& ^vmstat主要用于监控系统内存使用情况的工具,但是也包含一些CPU相关信息。
6 u" ^5 {0 g6 ^使用方法vmstat 5 5表示运行5次,每次5秒。结果如下:& |+ G! u) I+ j% [( Z9 D: ~

  1. 2 B2 c8 s% @$ |! b+ H
  2. procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
    - c; L  G" @( [* K% H; ^- Z7 J
  3. r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st2 s# q. k6 H; k# ?  R0 t
  4. 1  0 472576 228688 559092 1061756    0    0     9    39    1    0  8  4 87  0  0+ v3 R& M& U+ l' g! }* b2 `
  5. 1  0 472576 228184 559100 1061756    0    0     0    13 1532 3395 10  6 84  0  0
    + b  ^7 |* y/ w2 o! f( w
  6. 1  0 472576 229308 559100 1061616    0    0     0     0 1446 3449 10  5 85  0  0* d% S$ C& T4 J' _& x6 ?
  7. 0  0 472576 229592 559108 1061616    0    0     0     6 1419 3474 10  5 85  0  08 J: t, p; e1 E# P  m  g' }% ?
  8. 1  0 472576 229804 559108 1061616    0    0     0     0 1446 3439 10  5 85  0  0
复制代码

* m8 C" R! s: {4 |
- a3 ~; p* A9 R- r% Q9 x8 W, R1 D
上面的参数可以分为6大部分:进程、内存、swap、io、中断和进程切换、cpu。
! ~' }. i& g1 C; _0 c 微信图片_20200521154553.jpg ! B" U, L5 P! o: f" D
* D+ U# b8 \% M1 H5 L
更加详细的解释:
9 B- v! h$ E# Y/ r, A" G 微信图片_20200521154556.jpg : V3 E& w& m/ l) I% u9 S. S
. b5 Z( {$ r/ @9 y; L

4 `5 Q9 G5 g' e# ?4 D参考文档:《Linux Performance Measurements using vmstat[7]》% t( i) O6 }" y4 _7 q2 f  {) [

# @% F! w  J* l" O- u0 @
1 G& @$ y" l: o4 x
07. pidstat+ B7 W) f# ^8 C" N, O7 A
7 D) D5 Q: c' e( W
8 e! \2 Z  Y2 c5 A. r& ^) t- p& {% m, M
pidstat主要用于监控全部或指定进程占用系统资源的情况。
5 i/ {2 O1 J* X3 I2 `" E. A" X7 g1 K0 \
% I: Z1 l* u3 ], V3 T1 p

% L. m9 I& \: Q6 V. O- p7.1 查看CPU使用情况
' z8 w* x6 E) D8 ^3 p% ^" X: Q1 t1 q; o0 \  G2 t4 c  t! N! l
5 Q9 ]4 t' g$ c7 Q/ w. H6 {
pidstat首次运行时显示自系统启动开始的各项统计信息,之后运行pidstat将显示自上次运行该命令以后的统计信息。用户可以通过指定统计的次数和时间来获得所需的统计信息。
1 ^3 k3 O7 o( @$ |+ P4 X% y

  1. / t& j, p  b7 c; U+ H4 H7 y
  2. # 显示所有的进程统计信息,包括idle进程。
    2 G/ N  G7 m' r  ^4 ]
  3. pidstat -p ALL
    ) j/ D7 m$ [* }$ P6 g, h$ n
  4. ) T. B# |: N& L) u, @7 \- Y
  5. # 更加详细的显示了线程统计信息。; a6 R$ c: E- f. C, Q1 _
  6. pidstat -p ALL -t
    + v# p1 G+ M5 v
  7. % k' G* h5 Z/ ?" z  G8 n
  8. # 周期采样和采样次数
    4 B# A  W2 p; ^
  9. pidstat [option] interval [count]
复制代码
  O$ E  W3 {* N) K) L% D, R
) k9 c; M3 s- F3 `9 U
除此之外还可以通过-p获取指定进程的统计信息。: s: v2 N# j% j; o# }9 C
pidstat还可以通过-r获取内存使用统计信息,通过-d获取IO使用统计信息。+ Y' u* N8 o5 R) w( [5 _

/ O, R, a4 f1 j) C9 K

: b; p7 u- A8 _6 R2 I7.2 查看内存使用情况2 T8 Q; d  {& n- ^# T! l3 h
* v2 g. V+ E- o5 i

; {& S: E8 H( s, s3 ~9 a; ^& ]pidstat -p ALL -r结果如下:
. E; J+ B' x  ~9 K" e, M

  1. , F8 s3 H/ F) [+ c
  2. 15时18分21秒   UID       PID  minflt/s  majflt/s     VSZ     RSS   %MEM  Command5 S  Z: {4 U; k& J" b* n& r
  3. 15时18分21秒     0         1      0.02      0.00  185316    3028   0.08  systemd6 m( Y" a" z- x7 z/ @  k9 S: y
  4. 15时18分21秒     0         2      0.00      0.00       0       0   0.00  kthreadd4 `/ G- ]& B8 I" D. I' w% _8 [
  5. 15时18分21秒     0         4      0.00      0.00       0       0   0.00  kworker/0:0H
    ) n: m- ^, V4 L- |( e& ~
  6. 15时18分21秒     0         6      0.00      0.00       0       0   0.00  mm_percpu_wq
    $ t) B7 a; K7 O
  7. 15时18分21秒     0         7      0.00      0.00       0       0   0.00  ksoftirqd/0
    # f4 @. j6 [6 Z) B2 ?& k
  8. 15时18分21秒     0         8      0.00      0.00       0       0   0.00  rcu_sched
复制代码
" V) s8 }+ |9 h7 I. n+ ^# D  L
; D( @9 r6 T8 u! d4 w6 ?8 @
minflt/s: 每秒次缺页错误次数(minor page faults),次缺页错误次数意即虚拟内存地址映射成物理内存地址产生的page fault次数。* b* ]2 q( X9 Z5 B  {
majflt/s: 每秒主缺页错误次数(major page faults),当虚拟内存地址映射成物理内存地址时,相应的page在swap中,这样的page fault为major page fault,一般在内存使用紧张时产生。% y* F4 t: T  d
VSZ: 该进程使用的虚拟内存(以kB为单位)。3 i) R+ H0 D0 b% h$ ]6 `" O
RSS: 该进程使用的物理内存(以kB为单位)。
( Q4 @6 u9 V1 C1 g( H+ K" T+ {%MEM: 该进程使用内存的百分比。
9 t% X. P1 A  Q( VCommand: 拉起进程对应的命令。$ Q! l( N* s7 V! J

" p$ J, m" C9 Q  G1 S2 |3 I

0 k+ k6 Q% d- @2 e: `+ _. @+ N5 b5 r/ L7.3 查看磁盘使用情况
( d* s, @) y( ?1 I
7 T& n# ~0 R) w8 G8 ?

+ G# u& W; [- h% g: F8 h! `pidstat -p ALL -d结果如下:/ R& A3 C, g7 y7 `( ~
  1. 5 O' c3 X& E% F( I3 K
  2. 15时20分40秒   UID       PID   kB_rd/s   kB_wr/s kB_ccwr/s iodelay  Command9 @6 M7 [% r; p: {" ~
  3. 15时20分40秒     0         1     -1.00     -1.00     -1.00 243523129  systemd, \8 ], q8 j+ s7 ]* d4 n( J) ?
  4. 15时20分40秒     0         2     -1.00     -1.00     -1.00       0  kthreadd- g# S& W- j# X3 `
  5. 15时20分40秒     0         4     -1.00     -1.00     -1.00       0  kworker/0:0H9 b1 f7 V% h. |
  6. 15时20分40秒     0         6     -1.00     -1.00     -1.00       0  mm_percpu_wq4 g1 |8 ~* m$ K) ~% q4 G0 ~
  7. 15时20分40秒     0         7     -1.00     -1.00     -1.00 714512328679  ksoftirqd/0
    $ Y* g% `/ v8 Q. d$ [) G
  8. 15时20分40秒     0         8     -1.00     -1.00     -1.00 417757303594  rcu_sched
复制代码
% ?8 v2 b7 j+ z' m1 B. ]" q' I
4 p9 A" v& r6 O9 q
kB_rd/s: 每秒进程从磁盘读取的数据量(以kB为单位)。" _, W0 H6 b0 L* ]8 Z! T+ B- x. t
kB_wr/s: 每秒进程向磁盘写的数据量(以kB为单位)。
( x/ ?' H* L- C- xkB_ccwr/s:每秒进程被取消向磁盘写的数据量(以kB为单位)。8 U9 @" q6 u0 ?( e
Command::拉起进程对应的命令。
  E: U% j5 ~6 M, m* T3 Z
+ e/ J- s: V  o8 U

% }1 c+ F- U* U4 w* L08. time
6 l  w- d2 L+ K+ H8 d2 n) i( G0 w- v6 s+ Z5 k1 h, |! n

9 B" g! Z5 f: u. l8 e; Y& Etime命令可以被用于统计指定程序的CPU耗时。. I4 l) i7 K6 Z% K0 K
比如time cksum nomachine_6.0.80_1.exe得到如下结果。
* j: l7 I0 w) f, A

  1. / ?( s! \# y  P
  2. 2401940638 32606752 nomachine_6.0.80_1.exe7 ]5 b/ I1 \! i* ?; B. b# v0 i1 g
  3. ! T: {6 {9 J5 q0 H
  4. # 整个操作总耗时,0.263-0.094-0.011=0.158是IO等待耗时。- N; J5 J% w+ _) T  d6 |
  5. real    0m0.263s; m' p- Y" ]1 y4 U

  6. 9 }) j2 U2 p( o" C: F( }
  7. # 用户态耗时* g" v/ _. N" W6 C0 ^
  8. user    0m0.094s$ `7 G+ `7 I$ v. r. x
  9. . C* `4 Y$ l. i6 P! o. O, `+ V! g4 Q$ P
  10. # 内核态耗时0 ]& C8 L' h! C
  11. sys    0m0.011s& f1 f1 }9 g* e) ]- R
  12. 2401940638 32606752 nomachine_6.0.80_1.exe* d1 B* H7 e5 J7 A5 V

  13. . k" Y& y3 ]2 J8 o5 a/ _
  14. # 第二次执行就可以看出等待IO操作的时间基本上没有了。5 X0 R9 A' U* `9 q# o! L
  15. real    0m0.098s. }1 e3 T; ~: Q8 D" c
  16. user    0m0.097s6 _% ~2 n6 ?& G5 w: _: E9 P1 M1 X
  17. sys    0m0.000s
复制代码
5 X" J- u9 X' Q: O3 R

. d0 r" u; x* U3 r' k0 ^- R09. cpustat; ?$ O7 j7 a4 F- V5 f

4 u' D/ h! }% ~" x( U6 j- R
2 y1 a& i3 l5 I: I8 e! e
通过sudo apt install cpustat安装,cpustat -T -D -x结果如下。
( ^  L' r, A. q- k! F( V  I1 w. d2 ?
  1. 7 s! U, H; d1 C  W7 R
  2. # 显示Load Avg信息和平均频率等
    ) ^" _: w0 q  J
  3. Load Avg 0.66 0.54 0.49, Freq Avg. 1.46 GHz, 4 CPUs online% l  j1 `' f0 t
  4. # 进程切换次数、硬中断、软中断等等统计信息。
    + X  e$ ~. Y( o. c
  5. # CPU占用率、用户空间和内核空间占用率等。
    0 b+ D  H( A; X2 Y
  6. 3791.1 Ctxt/s, 1709.9 IRQ/s, 1800.0 softIRQ/s, 0.0 new tasks/s, 1 running, 0 blocked0 o& {4 E( Y' j9 `& y1 z* j
  7.   %CPU   %USR   %SYS   PID S  CPU   Time Task
    9 j, L, B9 ?5 w' \) D+ G/ S& I! g
  8. 25.74  25.74   0.00 11435 R    3  2.29w /usr/bin/python3
    5 b# a1 }0 R: i( J, Q
  9. 15.84  15.84   0.00  9445 S    0  1.49w /usr/lib/xorg/Xorg( v2 P, D4 R( p0 x  y) s
  10. 10.89   9.90   0.99  2722 S    1  1.05w compiz
    " R7 c! m: U8 K1 l& q# Q2 _
  11.   7.92   0.00   7.92 32352 S    2 16.60s [kworker/2:1]
    5 g& H6 L+ D* N) i5 c9 E
  12.   0.99   0.00   0.99 32397 R    1  0.01s cpustat: T- z" @; Y* ]" X* C6 ^
  13.   0.99   0.99   0.00 11046 S    2 16.20h compiz  H/ h: F7 \$ X4 K. f& b$ f* f0 A
  14.   0.99   0.99   0.00  1317 S    0  8.76h /usr/NX/bin/nxnode.bin
    . c0 ^/ n/ j1 ~  |* V+ P
  15.   0.99   0.00   0.99 10293 S    1  1.24m [kworker/1:2]. g0 S! M  Y2 m9 n7 h4 d; k8 j: x  A
  16. 64.36  53.47  10.89 Total! {3 E, q5 k( Q6 g- J

  17. 1 `* n* p2 k" ], j, h! g) C  x' c
  18. Load Avg 0.66 0.54 0.49, Freq Avg. 1.75 GHz, 4 CPUs online. O* R7 o" E* {3 w9 _
  19. 2834.8 Ctxt/s, 1190.9 IRQ/s, 1183.3 softIRQ/s, 0.0 new tasks/s, 4 running, 0 blocked
    % \- f0 H0 c( n2 c/ x& S
  20.   %CPU   %USR   %SYS   PID S  CPU   Time Task
    4 @5 E/ G6 z3 i8 g1 q
  21. 25.76  25.76   0.00 11435 R    3  2.29w /usr/bin/python3
    " F( V- H, |0 c7 _
  22. 18.18  18.18   0.00  9445 S    0  1.49w /usr/lib/xorg/Xorg
    / I+ i( h; z' m
  23.   7.58   7.58   0.00  2722 S    1  1.05w compiz
    - f  J# [: j6 B
  24.   6.06   0.00   6.06 32352 S    2 16.64s [kworker/2:1]) Q  n! }) w( _+ C, P) S
  25.   1.52   0.00   1.52 32397 R    1  0.02s cpustat3 l. E8 n) N- ^
  26.   1.52   0.00   1.52     8 S    0  3.00h [rcu_sched]
    . \  ?8 z- C! |8 O5 j- \
  27.   1.52   0.00   1.52 18409 S    0  1.16m update-notifier9 `- n% E! X0 B; ?# B0 w  `; q- n" n8 K
  28. 62.12  51.52  10.61 Total
    1 R& |% V8 @" H3 c' U* j2 [) k
  29. 1 \5 n: o. G0 a4 b4 p8 v2 t- V/ N
  30. Distribution of CPU utilisation (per Task):
    8 \: m9 O" W- T( _3 n4 F
  31. % CPU Utilisation   Count   (%)& A7 p9 C9 m- p% [- a' g
  32.   0.00 -   1.97       706  98.88
    $ a. [% C' l& H- v, G$ M/ w9 y
  33.   1.97 -   3.94         0   0.00
    * [  D. n; I+ F+ v$ w, [- ~
  34.   3.94 -   5.91         0   0.00
    % O. D6 U- {1 Q+ t0 v7 E  E( s
  35.   5.91 -   7.88         2   0.28
    2 {2 u* @3 U5 M8 R
  36.   7.88 -   9.85         0   0.006 K1 X, S3 r) G8 R7 L3 l
  37.   9.85 -  11.82         0   0.002 M. O3 E9 r" b$ _" w  K+ y
  38. 11.82 -  13.79         1   0.14
    - l7 f+ S( \: C# o7 M$ d3 R) u
  39. 13.79 -  15.76         0   0.00# t6 w8 M- V/ \/ _- K5 b3 c  {/ ]
  40. 15.76 -  17.73         1   0.146 H, F* Q2 i7 O" i. b& v! _
  41. 17.73 -  19.70         1   0.146 |6 b5 h8 B) I8 S0 `/ L# d& f
  42. 19.70 -  21.67         0   0.00
    ; X3 m- C8 X" A$ w5 n+ g. N
  43. 21.67 -  23.64         0   0.008 p9 a* \) K5 p( G' P: N
  44. 23.64 -  25.61         2   0.28
    2 w- ]  Q! r! e) g1 p; o
  45. 25.61 -  27.57         0   0.00( }: I" a8 H" T9 R' U
  46. 27.58 -  29.54         0   0.003 O! O; g3 I4 i7 J  s4 ?! X/ @4 b
  47. 29.55 -  31.51         0   0.00
    1 d& P7 X1 O1 Y& \0 D: g
  48. 31.52 -  33.48         0   0.00
    9 d. \' f9 f' W6 P
  49. 33.48 -  35.45         0   0.00
    ! s& T( Z4 G) M! d
  50. 35.45 -  37.42         0   0.00
    3 u0 s1 X0 w8 b; L' G  h0 T
  51. 37.42 -  39.39         1   0.14* ?  z) {. B- D, @: z' F# F3 s

  52. 6 @6 ~, n  E+ R  t5 J4 G
  53. Distribution of CPU utilisation (per CPU):----------------------------------------------各CPU占用率,分用户空间和内核空间。
    1 ?. q, O6 I) _, a9 o) ^
  54. CPU#   USR%   SYS%2 _; w) \! }- J7 k( Q
  55.     0  17.37   1.20* Y+ B0 p. X6 e* c, W7 l2 N
  56.     1   8.98   2.40
    1 F% i" ^; Q* F$ @% A3 N& f8 O/ m/ t8 h
  57.     2   0.60   7.19
    + h# n. f1 P* C
  58.     3  25.75   0.00
复制代码
6 K5 H6 K; T$ f

: S% C& k2 o( a* [/ P/ j! g10. htop; ]+ H% c6 \+ S2 G' X8 _

/ w* i: Z$ m' m  n

5 T# {; P) G; R3 m7 b4 Chtop和top的功能类似,但是可读性比top更好。在界面按下F5,可以看到进程里面的线程,树形结构表示了父子关系。
. [8 \7 C! c' o3 l# m9 Q
* {# A4 o# [! \$ k  g$ n' e8 j' I

" ]; z/ V+ B* S  |* D  B1 f 微信图片_20200521154600.jpg
+ h% W+ S  H* @0 k, G0 @; \
0 h* f6 U" a2 `$ [! m, N11. atop
) C' u$ V- l% M
( [$ `0 U! J. l# |+ ^
: I: b1 b8 g  `" l/ d7 W, V+ J& D
atop是一个监控系统资源和进程的工具。它通过CPU使用率来对列表中的进程进行降序排列,而每一个进程则包含了CPU、内存、磁盘和网络状态等信息。它的功能与top和htop类似。
  g7 a7 l( A/ y3 R9 F 微信图片_20200521154603.jpg 1 Z( O9 `7 d) E: J9 n

  o8 Y8 T+ h7 a% K6 H' k- S12. glances
3 M" N& G7 f: l5 k8 ^- N( \0 C+ x* S* j( W3 e9 ]$ J- ]  ^4 w$ T( W

6 y) ^& ?+ D6 }* S0 W4 {glances是一个由python编写的,与Nmon功能类似的报告工具,它能够报告统计cpu、内存、网络、磁盘和进程。除了报告统计,glances不支持任何其他特性或功能。当程序运行时点击“h”可以显示帮助页面。
6 H, L) l# N9 _  F 微信图片_20200521154606.jpg
# Z% m3 K5 M$ w. v# P% v3 g) N4 D8 O, j/ W6 F

& b  ^/ V' I- f7 Q9 K8 t13. nmon
$ j" [9 ]$ k8 v3 P5 _2 o
6 l* J+ Z3 f9 @1 w( [
" m5 E# d1 @3 j
Nmon是一个非常容易使用,能够在一个屏幕上监视CPU、内存、网络、磁盘使用状况和进程列表的工具。除了无法管理进程和修改报告显示,Nmon与那些只用于报告的报告工具完全一样。另外,它可以将数据保存到电子表格文件。
1 w$ L7 `- K8 k/ M1 R  }2 r! J 微信图片_20200521154610.jpg $ h7 I2 l0 A9 q: e* n' P

; E7 \" e- s$ V' t8 F0 `8 s& t
3 t3 F! M, v9 n9 I9 m
14. pcp-gui
1 r* I4 F. B; j& ^  g5 f1 q. l4 w
! }& S6 P% `" M: P# S% b7 Q
9 N# s* `# s/ r2 r; ^4 i
Performance Co-Pilot,简称PCP,是一个系统性能和分析框架。它从多个主机整理数据并实时的分析,帮你识别不正常的表现模式。它也提供API让你设计自己的监控和报告解决方案。3 F! d" i6 m- ~- m' w4 l
安装pcp相关工具。9 r+ C& U7 D1 p8 G4 e
  1. 8 E, d7 D/ T- [) H$ ?' J
  2. $ sudo apt install pcp pcp-gui
复制代码

; @+ {8 l" A% Q8 l9 v
File->Open View选择需要打开的视图,比如CPU、Disk、Memory等。  W! B. v3 C4 [5 x
微信图片_20200521154613.png
+ r  i/ f: H/ P; m$ V0 ^
9 l5 v7 l1 W$ L% C9 {15. collectl和colplot
1 l& w8 l/ X! V2 T& s8 a5 @0 h# ^. ?/ d
/ P7 E5 G0 i* ?. P- ?" [/ f
15.1 collectl使用
; c8 @5 U8 z: s( Y' V8 s
) h0 C; ]% o) ?9 J( G' w
. t* F2 l; [5 a
collectl是一款非常优秀并且有着丰富的命令行功能的实用程序,你可以用它来采集描述当前系统状态的性能数据。
  @: Q5 u! {  i9 ^. M不同于大多数其它的系统监控工具,collectl 并非仅局限于有限的系统度量,相反,它可以收集许多不同类型系统资源的相关信息,如 cpu 、disk、memory 、network 、sockets 、 tcp 、inodes 、infiniband 、 lustre 、memory、nfs、processes、quadrics、slabs和buddyinfo等。
% F- y& x1 U& t, |+ Z7 @8 H% @' U同时collectl还可以替代常用工具,比如top、vmstat、ps、iotop等。3 B4 K4 B( p) q1 y1 p% H
安装collectl:
2 I( B. f5 S3 I1 _
  1. & o6 \  U: b1 d# t3 X
  2. sudo apt-get install collectl
复制代码

* c" x. w7 n$ X2 U, E

/ l9 ]' K2 s. Y. C" |% Qcollectl的使用很简单,默认collectl显示cpu、磁盘、网络信息。
* s  J- g8 k: A; H- {0 }: d 微信图片_20200521154617.png
1 ^/ W$ ?5 C) j/ g0 R0 zcollectl还可以显示更多的子系统信息,如果选项存在对应的大写选项,大写选项表示更细节的设备统计信息。. {: ]" |0 ^1 n1 p! T5 z! r/ v

  1. 4 H0 k; X" C3 s% j
  2. b – buddy info (内存碎片)0 T; v# B6 w  W2 T
  3. c – 所有CPU的合一统计信息;C - 单个CPU的统计信息。: T3 W: c& F: ?2 x  C
  4. d – 整个文件系统Disk合一统计信息;C - 单个磁盘的统计信息。
    ; J3 G( Q' @$ W
  5. f – NFS V3 Data' v( [2 m" i$ g# V3 l7 x
  6. i – Inode and File System
    8 N0 [& _4 }1 y4 {. X% ?
  7. j – 显示每个CPU的Interrupts触发情况;J - 显示每个中断详细触发情况。
    7 q' |: T9 z8 l& i! U
  8. l – Lustre
      [( ~+ w! a5 z- _" n0 O  V4 a/ e
  9. m – 显示整个系统Memory使用情况;M - 按node显示内存使用情况。
    . k$ F% m. U/ Q( ^
  10. n – 显示整个系统的Networks使用情况;N - 分网卡显示网络使用情况。
    8 W" z; x) i8 [6 j" A' X
  11. s – Sockets' K5 @# V* k# @9 P1 K
  12. t – TCP. W3 s/ V# _) |; y/ n8 a
  13. x – Interconnect$ O: R# [; }" g# D
  14. y – 对系统所有Slabs (系统对象缓存)使用统计信息;Y - 每个slab使用的详细信息。
复制代码

. g# @; \: l" w
' L  ~8 z7 R! H9 V& V! t2 i1 \8 D
collectl --all显示所有子系统的统计信息,包括cpu、终端、内存、磁盘、网络、TCP、socket、文件系统、NFS。 微信图片_20200521154620.png - w' v. p2 ~% Q0 v. s$ w
collectl --top可以代替top命令:
7 i$ U+ J7 ?6 B; t! i6 ?1 |: r 微信图片_20200521154623.png ; x5 D6 N; {+ Z

; j9 d9 @( K& X) \3 qcollectl --vmstat可以代替vmstat命令:6 K$ }) g0 X$ E% N" N; ~
微信图片_20200521154626.png
; V  e6 R8 ?5 r8 I5 _- m+ a/ U, V3 X9 _9 r8 M+ D* f
collectl -c1 -sZ -i:1可以代替ps命令。
4 i# ]* y8 g0 A6 k0 {" Ucollectl和一些处理分析数据工具(比如colmux、colgui、colplot)结合能提供可视化图形。8 H$ l2 J; s6 S4 r5 W, @
+ n5 f9 x1 m- r  J
- i5 l' {+ B: ]5 x  t9 v2 I( x
15.2 colplot使用
- {+ x+ b  y5 h1 V$ u' x1 T& w* b* Z8 G3 g6 y/ K( _$ q8 e; a
; j3 }. e/ a3 O! m$ u  g
colplot是collectl工具集的一部分,其将collectl收集的数据在浏览器中图形化展示。
" j; s3 q$ P! t+ n" {2 Ccolplot的介绍(http://collectl-utils.sourceforge.net/colplot.html),相关源码可以再collectl-utils]下载:http://sourceforge.net/projects/collectl-utils/files/解压下载的colplot之后,sudo ./INSTALL安装colplot。6 i. L- m- X# G2 r' R0 D9 H9 }
安装之后重启apache服务:
  l* H! X4 d' m3 a' Z  B
  1. # J+ `$ I* i& _9 h  ?& M
  2. $suod systemctl reload apache2
    4 T: z# \# ~8 m, n
  3. ' M; q: J2 g% `4 y5 P2 U% R
  4. $ sudo systemctl restart apache2
复制代码

" P. g* I( d  Y6 ]
在浏览器中输入http://127.0.0.1/colplot/,即可使用colplot。+ L4 D. y+ a& _$ c5 q* d
通过Change Dir选择存放经过collectl -P保存的数据,然后设置Plot细节、显示那些子系统、plot大小等等。 微信图片_20200521154629.png
- o7 W, l: q, `
9 q  V0 G7 n3 G2 ~% V+ \% p) u
4 D+ d+ N$ x& C* V1 F, y# o& N
最后Generate Plot查看结果。
2 M2 Y, y: S, j+ ]% u7 Z 微信图片_20200521154633.png
9 e6 R& M$ A) J% h9 A
3 V" Y2 R7 _; S# k% _9 [( r' }
赞 收藏 评论1 发布时间:2020-5-21 15:55

举报

1个回答
mmuuss586 回答时间:2020-5-21 16:32:47
/ B, @2 Z! b3 r7 q/ Z2 v1 C( x
好东西
关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
人形机器人运动控制、感知与智能配电
半导体创新技术与应用方向
EE架构与软件定义汽车
12V/48V 汽车智能配电(SPD)
区域控制单元(ZCU)与分区架构
关注我们
st-img 微信公众号
st-img 手机版