高性能:4-用於資源分析的方法【bpf performance tools讀書筆記】

用於資源分析的USE方法

對於每種資源,檢查:

1、 Utilization  使用率

2、 Saturation  飽和度

3、 Errors 錯誤

 

image.png



Linux 60秒分析

這個內容來自性能分析大神和Netflix性能工程團隊

1、  uptime

2、  dmesg | tail

3、  vmstat 1

4、  mpstat -P ALL 1

5、  pidstat 1

6、  iostat -xz 1

7、  free -m

8、  sar -n DEV 1

9、  sar -n TCP,ETCP 1

10、  top


uptime

這是查看平均負載的快速方法,該平均負載指示要運行的任務(進程)的數量。在Linux系統上,這些數字包括要在CPU上運行的進程以及在不可中斷I / O(通常是磁盤I / O)中阻塞的進程。這給出了資源負載(或需求)的高級概念,然後可以使用其他工具進一步探索。

首次響應問題時,可以檢查平均負載,以查看問題是否仍然存在。在容錯環境中,遇到性能問題的服務器可能會在您登錄查看時自動從服務中刪除。15分鐘的平均負載過高,而1分鐘的平均負載過低,則表明您登錄得太遲而無法發現問題。


dmesg | tail

 

 [1880957.563150] perl invoked oom-killer: gfp_mask=0x280da, order=0, oom_score_adj=0
[...]
[1880957.563400] Out of memory: Kill process 18694 (perl) score 246 or sacrifice child
[1880957.563408] Killed process 18694 (perl) total-vm:1972392kB, anon-rss:1953348kB,
file-rss:0kB
[2320864.954447] TCP: Possible SYN flooding on port 7001. Dropping request.  Check
SNMP counters.


這將顯示過去的10條系統消息(如果有的話),查找可能導致性能問題的錯誤。

上面的示例包括OOM killerTCP SYN flooding造成的連接丟棄情況。TCP消息甚至指向您進行下一個分析區域:SNMP計數器。


vmstat 1

這是起源於BSD的虛擬內存統計工具,它還顯示其他系統指標。

請注意,第一行數字是自啓動以來的摘要(內存計數器除外)

image.png



mpstat -P ALL 1

$ mpstat -P ALL 1
[...]
03:16:41 AM  CPU   %usr  %nice  %sys %iowait  %irq  %soft %steal %guest %gnice  %idle
03:16:42 AM  all  14.27   0.00  0.75    0.44  0.00   0.00   0.06   0.00   0.00  84.48
03:16:42 AM    0 100.00   0.00  0.00    0.00  0.00   0.00   0.00   0.00   0.00   0.00
03:16:42 AM    1   0.00   0.00  0.00    0.00  0.00   0.00   0.00   0.00   0.00 100.00
03:16:42 AM    2   8.08   0.00  0.00    0.00  0.00   0.00   0.00   0.00   0.00  91.92
03:16:42 AM    3  10.00   0.00  1.00    0.00  0.00   0.00   1.00   0.00   0.00  88.00
03:16:42 AM    4   1.01   0.00  0.00    0.00  0.00   0.00   0.00   0.00   0.00  98.99
03:16:42 AM    5   5.10   0.00  0.00    0.00  0.00   0.00   0.00   0.00   0.00  94.90
03:16:42 AM    6  11.00   0.00  0.00    0.00  0.00   0.00   0.00   0.00   0.00  89.00
03:16:42 AM    7  10.00   0.00  0.00    0.00  0.00   0.00   0.00   0.00   0.00  90.00
[...]

此命令顯示按CPU時間劃分成狀態的時間。

輸出顯示了一個問題:CPU 0達到了100%的用戶時間,這是單線程瓶頸的證據。

還需要注意到是否有iowait很高的情況出現。以及可以通過syscallkernel tracing以及CPU分析來探索的%sys時間。


pidstat 1

pidstat(1)顯示每個進程的CPU使用率。top(1)是用於此目的的流行工具;但是,pidstat(1)默認提供滾動輸出,以便可以看到隨時間的變化。

 

$ pidstat 1
Linux 4.13.0-19-generic (...)       08/04/2018     _x86_64_     (16 CPU)
 
03:20:47 AM   UID       PID    %usr %system  %guest    %CPU   CPU  Command
03:20:48 AM     0      1307    0.00    0.98    0.00    0.98     8  irqbalance
03:20:48 AM    33     12178    4.90    0.00    0.00    4.90     4  java
03:20:48 AM    33     12569  476.47   24.51    0.00  500.98     0  java
03:20:48 AM     0    130249    0.98    0.98    0.00    1.96     1  pidstat
 
03:20:48 AM   UID       PID    %usr %system  %guest    %CPU   CPU  Command
03:20:49 AM    33     12178    4.00    0.00    0.00    4.00     4  java
03:20:49 AM    33     12569  331.00   21.00    0.00  352.00     0  java
03:20:49 AM     0    129906    1.00    0.00    0.00    1.00     8  sshd
03:20:49 AM     0    130249    1.00    1.00    0.00    2.00     1  pidstat
03:20:49 AM   UID       PID    %usr %system  %guest    %CPU   CPU  Command
03:20:50 AM    33     12178    4.00    0.00    0.00    4.00     4  java
03:20:50 AM   113     12356    1.00    0.00    0.00    1.00    11  snmp-pass
03:20:50 AM    33     12569  210.00   13.00    0.00  223.00     0  java
03:20:50 AM     0    130249    1.00    0.00    0.00    1.00     1  pidstat
[...]


 

此輸出表明Java進程每秒消耗的CPU數量是變化的。注意這些百分比是所有CPU的總和,所以500%等於五個CPU100%。

 

 

 

iostat -xz 1

此工具顯示存儲設備I / O指標。每個磁盤設備的輸出列都在此處用換行符表示,因此很難讀取。

image.png


free -m

 

推薦使用 -w 參數, 顯示的更詳細


sar -n DEV 1

sar工具具有用於不同度量標準組的多種模式。

在這裏,我使用它來查看網絡設備指標。檢查接口吞吐量rxkB/stxkB/s,以查看是否已達到任何限制。

圖上可以看到 enp2s0f0received接收到的流量在 985 2817kb/s sended 發出的流量在 847.7965.78kb/s的樣子。

image.png



sar -n TCP,ETCP 1

現在,我們使用sar(1)查看TCP指標和TCP錯誤。要檢查的列:

 

active/s    每秒本地啓動的TCP連接數(例如,通過connect()) ,主動對外發起連接(可以理解爲client模式)

passive/s 每秒遠程啓動的TCP連接數(例如,通過accept())  ,被動接收外部連接請求(可以理解爲server模式)

retrans/s 每秒TCP重傳的次數

 

主動和被動連接計數對於表徵工作負載很有用。重新傳輸是網絡或遠程主機問題的跡象。

image.png



top

 

top命令,可以具備uptime的功能。此外還能按照cpu或者內存使用率排序、搜索指定進程。 總體而言,top命令具備很強大的processcpumem瓶頸分析功能。這裏不過多介紹。

 






發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章