性能監(jiān)控和優(yōu)化

CPU

查看 CPU 型號和個數(shù):grep 'model name' /proc/cpuinfo

uptime

[biocloo@app2 ~]$ uptime
 11:22:44 up 99 days, 14:53,  2 users,  load average: 2.03, 1.70, 1.61
 
// 11:22:44 當(dāng)前時間
// up 99 days, 14:53 系統(tǒng)運(yùn)行時間
// 2 users  正在登陸的用戶數(shù)
// load average 后面的三個數(shù)字分別是過去 1分鐘,5分鐘,15分鐘的平均負(fù)載

top:系統(tǒng)摘要信息以及當(dāng)前由Linux內(nèi)核管理的進(jìn)程或線程列表

# 第一行的含義與使用 uptime 返回的一樣。

# 第二行表示總進(jìn)程數(shù)和線程數(shù),和分類。

# 第三行表示 CPU 狀態(tài)百分比
# user(通??s寫為 us),代表用戶態(tài) CPU 時間。注意,它不包括下面的 nice 時間,但包括了 guest 時間。
# system(通??s寫為 sy),代表內(nèi)核態(tài) CPU 時間。
# nice(通??s寫為 ni),代表低優(yōu)先級用戶態(tài) CPU 時間,也就是進(jìn)程的 nice 值被調(diào)整為 1-19 之間時的 CPU 時間。這里注意,nice 可取值范圍是 -20 到 19,數(shù)值越大,優(yōu)先級反而越低。
# idle(通??s寫為 id),代表空閑時間。注意,它不包括等待 I/O 的時間(iowait)。
# iowait(通??s寫為 wa),代表等待 I/O 的 CPU 時間。
# irq(通??s寫為 hi),代表處理硬中斷的 CPU 時間。
# softirq(通常縮寫為 si),代表處理軟中斷的 CPU 時間。
# steal(通??s寫為 st),代表當(dāng)系統(tǒng)運(yùn)行在虛擬機(jī)中的時候,被其他虛擬機(jī)占用的 CPU 時間。

# 第四行反應(yīng)物理內(nèi)存使用情況,單位為千字節(jié)

# 第五行反應(yīng)虛擬內(nèi)存。

# 第六行
# PID 進(jìn)程ID
# USER 任務(wù)所有者
# PR 優(yōu)先級。rt 表示實時。
# NI 任務(wù)的 nice value。負(fù)的意味著更高的優(yōu)先級,而正的意味著更低的優(yōu)先級。 此字段中的零值僅表示在確定任務(wù)的調(diào)度能力時不會調(diào)整優(yōu)先級。
# VIRT 虛擬內(nèi)存大小。此任務(wù)已使用的虛擬內(nèi)存總量。它包括所有代碼,數(shù)據(jù)和共享庫以及已換出的頁面和已映射但未使用的頁面。
# RES 駐留內(nèi)存大小。任務(wù)正在使用的非交換物理內(nèi)存。
# SHR 共享內(nèi)存大小??捎糜谌蝿?wù)的共享內(nèi)存量,并非所有內(nèi)容通常都是駐留的。 它只是反映了可能與其他進(jìn)程共享的內(nèi)存。
# S 進(jìn)程狀態(tài)。D 不間斷睡眠。R 運(yùn)行。S 睡眠。T 被作業(yè)控制信號停止。t 在 debug 被停止。Z 僵尸。
# %CPU CPU 使用率 
# %MEM 內(nèi)存使用率
# TIME+ 自任務(wù)啟動使用總 CPU 時間。

[biocloo@app2 ~]$ top
top - 15:47:57 up 99 days, 19:18,  1 user,  load average: 0.49, 1.15, 1.61
Tasks:  89 total,   1 running,  88 sleeping,   0 stopped,   0 zombie
%Cpu(s):  5.3 us,  0.8 sy,  0.0 ni, 93.2 id,  0.1 wa,  0.0 hi,  0.6 si,  0.0 st
KiB Mem : 16267724 total,   572080 free,  7713840 used,  7981804 buff/cache
KiB Swap:        0 total,        0 free,        0 used.  8153176 avail Mem 

  PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND                                           
26703 biocloo   20   0 7892880 2.026g   7244 S  20.0 13.1   1727:22 java                                              
25533 biocloo   20   0 1264128 143588   4200 S   2.7  0.9   3269:04 filebeat                                          
13217 biocloo   20   0 10.663g 1.859g   8148 S   1.3 12.0 227:15.47 java                                              
 1168 root      20   0 2531604  85292   3016 S   1.0  0.5 616:51.62 java                                              
    9 root      20   0       0      0      0 S   0.3  0.0 157:15.55 rcu_sched                                         
 1091 root      20   0  122040    892    296 S   0.3  0.0  48:07.98 wrapper                                           
 9269 root       0 -20  128384   9228   4652 S   0.3  0.1 194:31.22 AliYunDun                                         
26855 biocloo   20   0 7895992 2.784g   7216 S   0.3 17.9   1287:51 java                                              
    1 root      20   0   43392   2888   1556 S   0.0  0.0   1:30.58 systemd                                           
    2 root      20   0       0      0      0 S   0.0  0.0   0:00.27 kthreadd                                          
    3 root      20   0       0      0      0 S   0.0  0.0   5:34.81 ksoftirqd/0                                       
    5 root       0 -20       0      0      0 S   0.0  0.0   0:00.00 kworker/0:0H                                      
    7 root      rt   0       0      0      0 S   0.0  0.0   0:28.66 migration/0                                       
    8 root      20   0       0      0      0 S   0.0  0.0   0:00.00 rcu_bh                                            
   10 root      rt   0       0      0      0 S   0.0  0.0   0:21.78 watchdog/0                                        
   11 root      rt   0       0      0      0 S   0.0  0.0   0:17.62 watchdog/1                                        
   12 root      rt   0       0      0      0 S   0.0  0.0   0:30.18 migration/1                                       
   13 root      20   0       0      0      0 S   0.0  0.0  16:33.84 ksoftirqd/1                                       
   15 root       0 -20       0      0      0 S   0.0  0.0   0:00.00 kworker/1:0H                                      
   16 root      rt   0       0      0      0 S   0.0  0.0   0:18.12 watchdog/2                                        
   17 root      rt   0       0      0      0 S   0.0  0.0   0:27.21 migration/2                                       
   18 root      20   0       0      0      0 S   0.0  0.0   5:39.52 ksoftirqd/2                                       
   20 root       0 -20       0      0      0 S   0.0  0.0   0:00.00 kworker/2:0H                                      
   21 root      rt   0       0      0      0 S   0.0  0.0   0:17.55 watchdog/3                                        
   22 root      rt   0       0      0      0 S   0.0  0.0   0:29.42 migration/3 

mpstat:每個可用CPU的活動,默認(rèn)是CPU利用率報告。

// -P ALL 表示監(jiān)控所有 CPU,后面數(shù)字 5 表示間隔 5 秒后輸出一組數(shù)據(jù)
[biocloo@app2 ~]$ mpstat -P ALL 5
Linux 3.10.0-693.2.2.el7.x86_64 (app2)  2019年03月08日     _x86_64_    (4 CPU)

11時26分39秒  CPU    %usr   %nice    %sys %iowait    %irq   %soft  %steal  %guest  %gnice   %idle
11時26分44秒  all    8.42    0.00    1.20    0.10    0.00    0.80    0.00    0.00    0.00   89.48
11時26分44秒    0    9.05    0.00    1.21    0.00    0.00    0.40    0.00    0.00    0.00   89.34
11時26分44秒    1    7.26    0.00    1.01    0.00    0.00    0.81    0.00    0.00    0.00   90.93
11時26分44秒    2    9.60    0.00    1.40    0.20    0.00    0.80    0.00    0.00    0.00   88.00
11時26分44秒    3    7.78    0.00    1.40    0.00    0.00    1.00    0.00    0.00    0.00   89.82

11時26分44秒  CPU    %usr   %nice    %sys %iowait    %irq   %soft  %steal  %guest  %gnice   %idle
11時26分49秒  all    7.15    0.00    1.11    0.10    0.00    0.81    0.00    0.00    0.00   90.84
11時26分49秒    0    8.25    0.00    1.21    0.20    0.00    0.80    0.00    0.00    0.00   89.54
11時26分49秒    1    4.23    0.00    0.60    0.00    0.00    0.60    0.00    0.00    0.00   94.56
11時26分49秒    2    9.22    0.00    1.40    0.20    0.00    0.80    0.00    0.00    0.00   88.38
11時26分49秒    3    7.09    0.00    0.81    0.00    0.00    1.01    0.00    0.00    0.00   91.09

pidstat:用于監(jiān)控當(dāng)前由Linux內(nèi)核管理的各個任務(wù)

-u 查看 cpu 使用指標(biāo)

-w 查看進(jìn)程切換指標(biāo)

-t 與所選任務(wù)關(guān)聯(lián)的線程的統(tǒng)計信息。

# UID 用戶ID
# PID 任務(wù)ID
# %usr:用戶態(tài) CPU 使用率。
# %system:內(nèi)核態(tài) CPU 使用率。
# %guest 運(yùn)行虛擬機(jī) CPU 使用率。
# %wait 等待 CPU 使用率。
# %CPU 以及總的 CPU 使用率。
# CPU 任務(wù)在第幾個 CPU 上運(yùn)行。

# 每間隔5秒輸出一組數(shù)據(jù),一共輸出3組。
[biocloo@app2 ~]$ pidstat -u 5 3
Linux 3.10.0-693.2.2.el7.x86_64 (app2)  2019年03月08日     _x86_64_    (4 CPU)

11時32分31秒   UID       PID    %usr %system  %guest    %CPU   CPU  Command
11時32分36秒     0        41    0.00    0.20    0.00    0.20     2  kswapd0
11時32分36秒     0       281    0.00    0.20    0.00    0.20     3  jbd2/vda1-8
11時32分36秒     0      1168    0.20    0.00    0.00    0.20     1  java
11時32分36秒     0      1312    0.20    0.00    0.00    0.20     1  aliyun-service
11時32分36秒     0      9269    0.20    0.20    0.00    0.40     0  AliYunDun
11時32分36秒  1000     13217    3.19    0.60    0.00    3.79     0  java
11時32分36秒  1000     25533    3.59    0.20    0.00    3.79     2  filebeat
11時32分36秒  1000     26703   24.95    3.59    0.00   28.54     0  java
11時32分36秒  1000     26855    0.20    0.00    0.00    0.20     2  java

11時32分36秒   UID       PID    %usr %system  %guest    %CPU   CPU  Command
11時32分41秒     0         9    0.00    0.20    0.00    0.20     1  rcu_sched
11時32分41秒     0      1168    0.20    0.20    0.00    0.40     1  java
11時32分41秒  1000      4153    0.00    0.20    0.00    0.20     1  pidstat
11時32分41秒     0      9269    0.00    0.20    0.00    0.20     1  AliYunDun
11時32分41秒  1000     13217    3.40    0.40    0.00    3.80     0  java
11時32分41秒  1000     25533    3.60    1.00    0.00    4.60     2  filebeat
11時32分41秒  1000     26703   27.40    4.20    0.00   31.60     0  java
11時32分41秒  1000     26855    0.00    0.20    0.00    0.20     2  java

11時32分41秒   UID       PID    %usr %system  %guest    %CPU   CPU  Command
11時32分46秒     0         9    0.00    0.20    0.00    0.20     1  rcu_sched
11時32分46秒     0      1168    0.60    0.00    0.00    0.60     1  java
11時32分46秒     0      9269    0.20    0.00    0.00    0.20     1  AliYunDun
11時32分46秒  1000     13217    1.80    0.40    0.00    2.20     0  java
11時32分46秒  1000     25533    3.80    0.00    0.00    3.80     2  filebeat
11時32分46秒  1000     26703   27.60    2.60    0.00   30.20     0  java

平均時間:   UID       PID    %usr %system  %guest    %CPU   CPU  Command
平均時間:     0         9    0.00    0.13    0.00    0.13     -  rcu_sched
平均時間:     0        41    0.00    0.07    0.00    0.07     -  kswapd0
平均時間:     0       281    0.00    0.07    0.00    0.07     -  jbd2/vda1-8
平均時間:     0      1168    0.33    0.07    0.00    0.40     -  java
平均時間:     0      1312    0.07    0.00    0.00    0.07     -  aliyun-service
平均時間:  1000      4153    0.00    0.07    0.00    0.07     -  pidstat
平均時間:     0      9269    0.13    0.13    0.00    0.27     -  AliYunDun
平均時間:  1000     13217    2.80    0.47    0.00    3.26     -  java
平均時間:  1000     25533    3.66    0.40    0.00    4.06     -  filebeat
平均時間:  1000     26703   26.65    3.46    0.00   30.11     -  java
平均時間:  1000     26855    0.07    0.07    0.00    0.13     -  java

vmstat:虛擬內(nèi)存,上下文切換統(tǒng)計信息。

//* r(Running or Runnable):是就緒隊列的長度,也就是正在運(yùn)行和等待 CPU 的進(jìn)程數(shù)。
//* b(Blocked):則是處于不可中斷睡眠狀態(tài)的進(jìn)程數(shù)。

// swpd:使用的虛擬內(nèi)存量。
// free:空閑內(nèi)存量。
// buff:用作緩沖區(qū)的內(nèi)存量。
// cache:用作緩存的內(nèi)存量。

// si:從磁盤交換的內(nèi)存量。
// so:交換到磁盤的內(nèi)存量。

// bi:從塊設(shè)備接收的塊。
// bo:發(fā)送到塊設(shè)備的塊。

//* in(interrupt)則是每秒中斷的次數(shù)。
//* cs(context switch)是每秒上下文切換的次數(shù)。

// us:運(yùn)行非內(nèi)核代碼所花費(fèi)的時間。
// sy:運(yùn)行內(nèi)核代碼所花費(fèi)的時間。
// id:空閑時間。在Linux 2.5.41之前,這包括IO等待時間。
// wa:等待IO的時間。在Linux 2.5.41之前,包含在空閑狀態(tài)。
// st:從虛擬機(jī)中竊取的時間。在Linux 2.6.11之前,未知。

// 每隔 1 秒統(tǒng)計一次,共統(tǒng)計一次。
[biocloo@app2 ~]$ vmstat 1 1
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
 2  0      0 382140 255512 7938204    0    0    19   103    0    1  6  1 93  0  0
 2  0      0 379664 255520 7940528    0    0     0   113 7891 6022  8  2 91  0  0
 0  0      0 380408 255512 7940004    0    0     0   154 7483 5758  7  2 91  0  0
 0  0      0 383244 255476 7938936    0    0     0  2791 9373 7165  9  2 88  0  0
 0  0      0 384320 255484 7941596    0    0     0   103 9010 6962  9  2 89  0  0

perf:Linux 性能分析

Overhead ,是該符號的性能事件在所有采樣中的比例,用百分比來表示。
Shared ,是該函數(shù)或指令所在的動態(tài)共享對象(Dynamic Shared Object),如內(nèi)核、進(jìn)程名、動態(tài)鏈接庫名、內(nèi)核模塊名等。
Object ,是動態(tài)共享對象的類型。比如 [.] 表示用戶空間的可執(zhí)行程序、或者動態(tài)鏈接庫,而 [k] 則表示內(nèi)核空間。
Symbol 是符號名,也就是函數(shù)名。當(dāng)函數(shù)名未知時,用十六進(jìn)制的地址來表示。

[root@centos ~]# perf top
Samples: 625  of event 'cpu-clock', Event count (approx.): 130078096
Overhead  Shared Object                    Symbol
  11.45%  [kernel]                         [k] _raw_spin_unlock_irqrestore
   4.41%  [kernel]                         [k] finish_task_switch
   3.48%  [kernel]                         [k] tick_nohz_idle_enter
   3.24%  [kernel]                         [k] module_get_kallsym
   3.09%  [kernel]                         [k] __memcpy
   3.09%  [kernel]                         [k] kallsyms_expand_symbol.constprop.1
   2.83%  perf                             [.] __symbols__insert
   2.80%  [kernel]                         [k] vsnprintf
   2.67%  [kernel]                         [k] format_decode
   2.32%  perf                             [.] rb_next
   2.26%  [kernel]                         [k] clear_page_c
   1.95%  perf                             [.] rb_insert_color
   1.91%  perf                             [.] __dso__load_kallsyms
   1.79%  libc-2.17.so                     [.] _int_malloc
   1.77%  [kernel]                         [k] number.isra.2
   1.62%  libc-2.17.so                     [.] __strcmp_sse42
   1.32%  [kernel]                         [k] string.isra.7
   1.32%  perf                             [.] 0x00000000000ca264
   1.25%  beam.smp                         [.] sched_spin_wait
   1.23%  [kernel]                         [k] rcu_gp_kthread
   1.18%  [kernel]                         [k] strnlen
   1.18%  perf                             [.] 0x00000000000ca277
   1.08%  [kernel]                         [k] rcu_process_callbacks
   1.03%  libc-2.17.so                     [.] _IO_getdelim
   1.03%  libc-2.17.so                     [.] __memcpy_sse2
   1.03%  perf                             [.] hex2u64
   0.97%  perf                             [.] 0x000000000019bc27
   0.95%  libc-2.17.so                     [.] __libc_calloc
   0.88%  [kernel]                         [k] pointer.isra.19

perf top 是實時的,不能保存數(shù)據(jù),perf record采樣數(shù)據(jù)。使用 perf report 查看保存的數(shù)據(jù)。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容