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

14 个 Linux 下 CPU 监控工具

[复制链接]
gaosmile 发布时间:2020-5-21 15:55
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 {
  1. 5 h, l( L" ~& t2 k9 p
  2. 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

  1. ) G( y  ^) s- C! s+ P  o8 D& t
  2. us:user,统计nice小于等于0的用户空间进程,也即优先级为100~120。! n  n4 }, K8 e$ e1 ^
  3. ni:nice,统计nice大于0的用户空间进程,也即优先级为121~139。% r; N7 ?8 ]! c9 g( w
  4. sys:system,统计内核态运行时间,不包括中断。6 A1 u0 g4 D# G* v
  5. id:idle,几系统处于空闲态。
    - [6 \  Q" Q2 l; W3 m* i
  6. wa:iowait,统计io等待时间。" b5 |/ P" k) j/ F, p, }  {0 `
  7. hi:hardware interrupt,统计硬件中断时间。
    2 s9 T1 v$ B' D% I7 v+ w
  8. si:software interrupt,统计软中断时间。
    5 J3 y& {( x( X1 x$ B  n2 f
  9. st:steal
复制代码
. Z/ n% q; N/ _" o$ ], N0 z' {9 M

( q: j) h0 S2 g8 g; m6 v' n 微信图片_20200521154539.jpg
0 G4 {0 o' q8 m  S; L
; E# V+ {* X0 h4 C) [+ F8 s
7 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 微信图片_20200521154543.png
! 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

  1. " f3 @) T$ j' Z* ^! ^3 Z
  2. # 将 ENABLED=“false“ 改为ENABLED=“true“+ D3 u/ k/ R- y' |7 b3 L' c3 P9 \
  3. $ sudo gedit /etc/default/sysstat
    6 T: f! R4 J7 l% W5 O, l2 ~
  4.   P0 v' K1 q' x) u
  5. # 修改sar的周期等配置
    ( e6 a) w4 A/ s2 L* X
  6. $ sudo gedit /etc/cron.d/sysstat
    8 u1 P4 X% Q) _2 p( R% @  a1 Y

  7. 3 W2 ~# i4 @' _. j' ?' y+ m  h
  8. # 重启sar服务* x$ }6 s0 N* @9 z' C1 b/ O
  9. $ sudo /etc/init.d/sysstat restart' H1 H& W. q8 B* e2 H
  10. 0 F) s" q, A5 Q  x
  11. # sar log存放目录3 S1 h8 U9 d' B' X. X
  12. $ 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% \
  1. 0 f! Q: K1 @" L4 c
  2. 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
微信图片_20200521154546.jpg / 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

  1. & u# h5 Q/ e: _; {$ K
  2. sar 1 100-----------------所有cpu合一的统计信息
    : @+ }  ]- i8 w# j5 \0 H( |9 @
  3. sar -P ALL 1 100--------包括cpu合一以及单个cpu的统计信息* a! N! s5 j! P
  4. sar -B 1 100---------------paging统计信息: L6 C- |' _0 w* t0 K
  5. sar -b 1 100---------------块设备IO统计信息4 g2 n) F, d( D' ]
  6. sar -d 1 100---------------块设备活动统计信息
    4 y" r% q$ L. S+ L% m
  7. sar -F 1 100----------------挂载的文件系统统计信息; C" U+ E5 R) v! \4 Y/ [( z
  8. sar -r ALL------------------ 显示详细的内存使用统计信息1 E& d% E6 g4 B8 Y% y
  9. sar -S ------------------------显示swap空间使用情况统计信息1 [; {8 M5 _9 g$ r( g% e) H* c4 c
  10. sar -w----------------------- 显示进程创建以及进程切换统计信息
    6 ]+ `  R5 ~% u: f1 R" t0 F4 n
  11. 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
  1. 7 ~1 I$ C3 b$ H' P- Q% Z; \
  2. $ 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
微信图片_20200521154549.png
& 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

  1. : A+ k* H; \+ |# ?
  2. 11:15:41 up 82 days, 20:34,  8 users,  load average: 0.28, 0.40, 0.43
复制代码

2 N8 g9 N# S# V( s
1 @- `; `* }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
  1. 0 C# f/ ?  q9 @) Z# c) W6 R. u( k
  2. procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----3 `9 O1 z$ S; {
  3. r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
    9 ?/ ~/ w0 Y2 D7 f
  4. 1  0 472576 228688 559092 1061756    0    0     9    39    1    0  8  4 87  0  0( `* p( S1 g+ f6 A9 f
  5. 1  0 472576 228184 559100 1061756    0    0     0    13 1532 3395 10  6 84  0  0; h1 i2 f0 ~7 N; H# e& ]
  6. 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
  7. 0  0 472576 229592 559108 1061616    0    0     0     6 1419 3474 10  5 85  0  04 c2 l4 `$ ~' ]/ R
  8. 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
微信图片_20200521154553.jpg
. v. }' I- S0 D- v& s% d: ~9 i0 N" v. X8 t
更加详细的解释:+ Y6 P% i, Z$ N/ z( P1 ]
微信图片_20200521154556.jpg 7 e8 r' z0 D3 i# D) I% _

/ H+ e) n5 m$ X2 ^9 N: n( L* E
1 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
  1. , J6 X4 j' P$ F& l
  2. # 显示所有的进程统计信息,包括idle进程。" Q: D; R* ~7 j( I# X& Q* ~
  3. pidstat -p ALL
    ' K4 ?% n0 U; p. f6 p
  4. , `1 t7 k) z% E/ T  W& U
  5. # 更加详细的显示了线程统计信息。
    1 H5 `- I' C& u( b# R/ |) N7 ~
  6. pidstat -p ALL -t
    ! ?; A3 a7 L$ D8 g- J( r0 V
  7. . s4 l4 |0 _& m+ C5 Y8 V; g0 L
  8. # 周期采样和采样次数3 ]# \% W3 n% `" ?6 y' e
  9. 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

  1. 3 _3 s: Y: G* ~  z, h
  2. 15时18分21秒   UID       PID  minflt/s  majflt/s     VSZ     RSS   %MEM  Command4 [9 D/ w$ N) X6 B2 k8 c7 ]
  3. 15时18分21秒     0         1      0.02      0.00  185316    3028   0.08  systemd
    0 B* P  m/ X& R$ _$ F) v
  4. 15时18分21秒     0         2      0.00      0.00       0       0   0.00  kthreadd
    # v$ @* ?& K; W  W
  5. 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
  6. 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
  7. 15时18分21秒     0         7      0.00      0.00       0       0   0.00  ksoftirqd/02 x' J. y4 E3 ]% U
  8. 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  @* [
  1. & Z. _% ~. l+ e: U3 j5 h: [
  2. 15时20分40秒   UID       PID   kB_rd/s   kB_wr/s kB_ccwr/s iodelay  Command5 x2 F( K0 Q' ]: W( N/ J0 }) x
  3. 15时20分40秒     0         1     -1.00     -1.00     -1.00 243523129  systemd& X! h2 s8 z; K
  4. 15时20分40秒     0         2     -1.00     -1.00     -1.00       0  kthreadd) y9 U* f# s$ L
  5. 15时20分40秒     0         4     -1.00     -1.00     -1.00       0  kworker/0:0H
    ; K/ v. A( C7 r# f' j- k
  6. 15时20分40秒     0         6     -1.00     -1.00     -1.00       0  mm_percpu_wq. u+ B* q/ ?/ b' d: u
  7. 15时20分40秒     0         7     -1.00     -1.00     -1.00 714512328679  ksoftirqd/0
    * r) [1 R* C5 j6 K$ Z
  8. 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

  1. . ^6 R. A* Z  W/ r: O# v6 r
  2. 2401940638 32606752 nomachine_6.0.80_1.exe2 {! y) X6 J7 S4 @  ~' g
  3. ; Z; D( |0 y8 ^
  4. # 整个操作总耗时,0.263-0.094-0.011=0.158是IO等待耗时。4 `! w: `3 ]4 |5 `' }  @6 o
  5. real    0m0.263s
    0 E) B9 P7 {( V% g' f

  6. 0 a5 ^$ L7 E, u7 o" L2 U  }$ ]9 X
  7. # 用户态耗时) ]6 n. f7 a: K/ z* a
  8. user    0m0.094s
    : z0 O; H( t. H' N
  9. $ h5 o) l7 ]5 }
  10. # 内核态耗时2 I! Z* x# ^( z: u  a3 g. v0 Z
  11. sys    0m0.011s1 [" b6 B- u, ~( y6 f/ M" h
  12. 2401940638 32606752 nomachine_6.0.80_1.exe2 S) q! d) x  o& d$ O4 k6 Y! b
  13. , d& a' W6 c# t: D" b  ?5 U
  14. # 第二次执行就可以看出等待IO操作的时间基本上没有了。
    ! n* \: q# |) K4 T
  15. real    0m0.098s  j4 Z0 X  U, s/ ~
  16. user    0m0.097s( j: v9 o0 D! H  ?
  17. 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
  1. 7 ~& D6 B7 @4 Q% V5 [
  2. # 显示Load Avg信息和平均频率等+ g- I) U% C& v" ^' s) W
  3. Load Avg 0.66 0.54 0.49, Freq Avg. 1.46 GHz, 4 CPUs online+ ^6 p# [9 m; a  A; r
  4. # 进程切换次数、硬中断、软中断等等统计信息。
    7 }& K; i! _0 F) J2 O
  5. # CPU占用率、用户空间和内核空间占用率等。
    $ g- Y5 d* Q: W
  6. 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
  7.   %CPU   %USR   %SYS   PID S  CPU   Time Task
    # N! _& y9 d) U2 U2 s9 o  P# S
  8. 25.74  25.74   0.00 11435 R    3  2.29w /usr/bin/python39 {2 L' K/ q! Q# {. V, F1 V
  9. 15.84  15.84   0.00  9445 S    0  1.49w /usr/lib/xorg/Xorg4 D8 R) ]% [. t0 B2 @+ m+ M. y
  10. 10.89   9.90   0.99  2722 S    1  1.05w compiz
    , i+ ^" L2 z" S- h2 S0 |; N
  11.   7.92   0.00   7.92 32352 S    2 16.60s [kworker/2:1]
    & q* q. H: ?& d; J$ K
  12.   0.99   0.00   0.99 32397 R    1  0.01s cpustat% [8 T, x0 w% o- M: F8 A3 H
  13.   0.99   0.99   0.00 11046 S    2 16.20h compiz, s1 D( k  S5 `* k. c( ]( R1 H$ h
  14.   0.99   0.99   0.00  1317 S    0  8.76h /usr/NX/bin/nxnode.bin
      h+ g) a/ w. U* a$ n
  15.   0.99   0.00   0.99 10293 S    1  1.24m [kworker/1:2]
    * G' _9 Y9 s: X) |' u: b7 q- g
  16. 64.36  53.47  10.89 Total
    2 i4 o2 E% y+ f7 e8 O7 B( ]
  17. - ?, ?5 z' B% J7 ^- g4 L
  18. Load Avg 0.66 0.54 0.49, Freq Avg. 1.75 GHz, 4 CPUs online
    * }. U( b; Y) c0 |; }: r: @, ~
  19. 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
  20.   %CPU   %USR   %SYS   PID S  CPU   Time Task
    , k) W- `, x$ y) \& j8 {
  21. 25.76  25.76   0.00 11435 R    3  2.29w /usr/bin/python3
    2 _0 v0 K" F0 F/ p  A0 S
  22. 18.18  18.18   0.00  9445 S    0  1.49w /usr/lib/xorg/Xorg2 a9 ~4 C: @% ~6 R
  23.   7.58   7.58   0.00  2722 S    1  1.05w compiz# F: b/ m: R0 P8 m9 g1 U
  24.   6.06   0.00   6.06 32352 S    2 16.64s [kworker/2:1]
    " D4 [( u* f& k) X
  25.   1.52   0.00   1.52 32397 R    1  0.02s cpustat+ R: M/ |& R6 }% L. E9 D  W1 Y; M
  26.   1.52   0.00   1.52     8 S    0  3.00h [rcu_sched]2 {2 K0 a* x5 y! M0 Z) v$ c
  27.   1.52   0.00   1.52 18409 S    0  1.16m update-notifier, L# U3 W1 s0 @7 D# F
  28. 62.12  51.52  10.61 Total8 C/ }  f5 i, ]/ Y3 O; V; H
  29. & P+ g$ x6 m/ B3 Q7 ?7 c3 }1 N
  30. Distribution of CPU utilisation (per Task):/ k$ O0 ~( ?4 a8 ?3 t, t0 K
  31. % CPU Utilisation   Count   (%)
    7 n0 }: Z3 K' W  {
  32.   0.00 -   1.97       706  98.88
    " X; x( y. V! R1 K1 l& T+ o
  33.   1.97 -   3.94         0   0.00
      A/ U/ k% b  W' D7 y6 u
  34.   3.94 -   5.91         0   0.00
    8 S2 ]/ A& V! Y7 D
  35.   5.91 -   7.88         2   0.28- b1 F  y7 H1 A: J! {5 J& C
  36.   7.88 -   9.85         0   0.00- r# C. [$ K* n2 U: G& X! @
  37.   9.85 -  11.82         0   0.003 y; [4 @5 @( D) |1 u
  38. 11.82 -  13.79         1   0.14
    $ o! }& S# q5 w% N! J% B! x! P
  39. 13.79 -  15.76         0   0.000 d9 ^& Q/ H7 N& z3 e2 l2 j  I
  40. 15.76 -  17.73         1   0.14
    . @% k0 j& w8 l4 ^8 I6 j
  41. 17.73 -  19.70         1   0.14
    9 r. U0 I4 ^# C" Q7 Y( \
  42. 19.70 -  21.67         0   0.00
    & g5 R, d* M2 k1 }( j  p+ g
  43. 21.67 -  23.64         0   0.00
    : |) B% \, _3 [, v5 Z! r. H
  44. 23.64 -  25.61         2   0.284 }8 Z; m' p2 ^3 u8 U) n; G$ A
  45. 25.61 -  27.57         0   0.00
    0 ]; r# f; q  `2 k% Y
  46. 27.58 -  29.54         0   0.00
    / d/ |2 X6 x- f
  47. 29.55 -  31.51         0   0.000 u1 y7 q0 n* V8 V) ^: R: Z) Z# \
  48. 31.52 -  33.48         0   0.00
    2 F9 c) y1 X( y; ~4 S: b
  49. 33.48 -  35.45         0   0.00
    : K* @* X9 j8 D! _
  50. 35.45 -  37.42         0   0.00
    ! {7 Q! t5 j# c* G! i) }
  51. 37.42 -  39.39         1   0.141 U  `( g' }- ^1 G* T
  52. " ^1 W) V- M; X1 l! G
  53. Distribution of CPU utilisation (per CPU):----------------------------------------------各CPU占用率,分用户空间和内核空间。; Z% Y# G& Q4 b# a( q$ T% J
  54. CPU#   USR%   SYS%
    + D0 F" T; O, d5 s
  55.     0  17.37   1.20
    + [: ?" N) ?. W7 I
  56.     1   8.98   2.40
    / Q( @8 |, [1 K3 V' {! J
  57.     2   0.60   7.19
    7 ]% r- T$ B( W/ }, ~; _
  58.     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 微信图片_20200521154600.jpg % {* 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
微信图片_20200521154603.jpg
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 微信图片_20200521154606.jpg 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 微信图片_20200521154610.jpg 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
  1. 7 \  ]$ Z& C" T" s
  2. $ sudo apt install pcp pcp-gui
复制代码

* O1 J( {6 |" Z5 U( ?3 a
File->Open View选择需要打开的视图,比如CPU、Disk、Memory等。1 V. o% P( i9 A! x  e2 H$ W& ?. {
微信图片_20200521154613.png
- 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: k
6 }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
  1. / |- `4 }/ F' H/ h- g, i
  2. 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. [
微信图片_20200521154617.png * D8 K+ e. o- s; K- t9 _
collectl还可以显示更多的子系统信息,如果选项存在对应的大写选项,大写选项表示更细节的设备统计信息。, |! a- [8 c. Y3 C# P6 x
  1. % b! W% t$ k1 T; b4 q* u! C
  2. b – buddy info (内存碎片)
    - j. h) L% ^6 t3 Z7 w' O
  3. c – 所有CPU的合一统计信息;C - 单个CPU的统计信息。* D& H, l# n. [( e) d
  4. d – 整个文件系统Disk合一统计信息;C - 单个磁盘的统计信息。
    ! N' Z2 E6 E9 H8 z9 k
  5. f – NFS V3 Data
    1 y5 A3 c3 K: r6 k8 n; y$ |
  6. i – Inode and File System* @0 |* r- Q% I! G
  7. j – 显示每个CPU的Interrupts触发情况;J - 显示每个中断详细触发情况。
    1 F) k1 c" M3 r  M8 \
  8. l – Lustre
    ( _) g# `; w0 P  q8 x! m, V# p
  9. m – 显示整个系统Memory使用情况;M - 按node显示内存使用情况。
    ; s! P/ B* b5 v; {# i7 |& f
  10. n – 显示整个系统的Networks使用情况;N - 分网卡显示网络使用情况。
    3 H8 Q( [" |. Y, V& {
  11. s – Sockets. {3 ?  M' t) S, P. Y2 i
  12. t – TCP
    - z5 }) a6 x! R. C5 G
  13. x – Interconnect
    ( F4 P) ~2 n+ p: G$ @/ u
  14. y – 对系统所有Slabs (系统对象缓存)使用统计信息;Y - 每个slab使用的详细信息。
复制代码
0 C4 {! o7 c1 a/ h, W

: M+ T# i  u# R" C) Tcollectl --all显示所有子系统的统计信息,包括cpu、终端、内存、磁盘、网络、TCP、socket、文件系统、NFS。 微信图片_20200521154620.png
$ l& e6 ^4 }# K  Zcollectl --top可以代替top命令:
4 [0 }, V1 z; J+ C3 g6 t$ ? 微信图片_20200521154623.png & 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 微信图片_20200521154626.png
  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

  1. $ \) G9 V) ~, ~. l
  2. $suod systemctl reload apache2
    ( R8 x4 N; h1 Q$ y: x; t) V
  3. " I6 z" B% r. t9 j9 C5 u" W! b
  4. $ 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大小等等。 微信图片_20200521154629.png ' 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 微信图片_20200521154633.png # P0 c" G/ M5 @

% o4 @: u9 k9 i6 \8 ]/ H/ r2 E
赞 收藏 评论1 发布时间:2020-5-21 15:55

举报

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