Linux 效能分析工具與判讀

Linux 效能分析工具與判讀

這篇文章主要說明 Linux 效能分析工具與結果的判讀,對於電腦資源來說,不外乎分為下列幾大類:

因此效能瓶頸,首先要釐清是哪一類的資源耗用上的瓶頸。

  • CPU
  • 記憶體
  • 磁碟
  • 網路

 

Linux Perf

 

CPU 效能瓶頸

指令 uptime
執行結果 17:37:30 up 3 days, 17:06,  7 users,  load average: 1.13, 1.23, 1.15
解析 Load average表示, 過去的 1, 5, 15分鐘,平均每個 CPU 有多少工作。

如果是 2 x CPU,這個值多半介於 2 以下是合理的值。

如果是 4 x CPU,這個值多半會介於  4 以下。

如果是 1 x CPU,這個值長時間高於 1 ,那可能就表示 CPU 的忙碌與效能瓶頸。

 

指令 vmstat 5  10
執行結果
解析 b: 多少工作被 blocked。正常的情況下,這個值預期為 0。

io (bi/bo): 如果是 Disk IO 很高的狀況,這兩個值數字會比較大。

wa: wa 如果值很大,也表示 Disk IO 很高。

swap (si/so): 主要看是否有大量的 memory swap in/so。導致的 high Disk I/O.

 

指令 top
執行結果 4:52pm  up  5:08,  3 users,  load average: 2.77, 5.81, 3.15

37 processes: 36 sleeping, 1 running, 0 zombie, 0 stopped
CPU0 states: 5.1% user, 53.1% system, 0.0% nice, 41.1% idle
CPU1 states: 5.0% user, 52.4% system, 0.0% nice, 41.4% idle
Mem: 511480K av, 43036K used, 468444K free, 0K shrd, 2196K
Swap: 263992K av, 0K used, 263992K free 21432K

PID USER PRI NI SIZE RSS SHARE STAT %CPU %MEM TIME COMMAND
1026 root 2 0 488 488 372 S 1.1 0.0 0:00 chat_s
7490 root 11 0 1012 1012 816 R 0.5 0.1 0:00 top

解析
  • 觀察 CPU average Loading。正常的數值應該會低於 # of CPU。
  • 0 zombie若這個值非0,可以進一步查看看是哪一個 process 變成 zombie

磁碟效能

指令 iostat
執行結果
解析
  • iostat 會列出cpu 的使用效率之外,也會列出每個磁碟讀取的狀況,由於這個指標是動態的結果,所以主要觀察重點是:隨著時間的經過,await平均等待時間是否越來越長? 另一方面,svctm平均服務時間也是否越來越大? %util 是否值超過 50? 這些都會是 Disk IO 瓶頸的特徵。

 

記憶體效能

指令 vmstat
執行結果
解析 vmstat 是一個動態的過程。因此必須注意的是隨著時間經過,

是否有大量或是維持很高的 swap (si/so)?  Memory swap 會間接導致磁碟的讀取

是否有很高的 b (blocked): 表示 high disk IO

是否有很高的 cpu wa (waiting): 表示 high disk IO

網路效能

網路的部分觀察主要是看是否有錯誤發生

指令 netstat -i
執行結果 netstat error
解析 看是否有許多的 RX-ERR or TX-ERR傳輸上的錯誤發生。
指令 netstat -s
執行結果 Ip:
662968 total packets received
0 forwarded
0 incoming packets discarded
659592 incoming packets delivered
162297 requests sent out

 

Tcp:
5721 active connections openings
39 passive connection openings
0 failed connection attempts
0 connection resets received
1 connections established
136759 segments received
152791 segments send out
20660 segments retransmited
3 bad segments received.
1165 resets sent

Udp:
14031 packets received
15 packets to unknown port received.
0 packet receive errors
7519 packets sent

解析
  • 以 TCP 來說,看看是否有大量的 re-transmission、bad segment 或是 reset 的發生。
  • 什麼情況會遇到 reset? 通常 port 不通或是程式異常終止,就會遇到 reset 的現象。

Apache 網站效能

最後,跟 Linux 系統無關,但是常見須要注意的 Apache 設定,可以特別注意下列幾個值:

MaxClients 150
MaxKeepAliveRequests 100
MaxRequestsPerChild 0 ; unlimited
MinSpareServers 5
MaxSpareServers 10

越大越好嗎? not really。主要是讓系統取得一個平衡。

 

 

 

Leave a Reply

Your email address will not be published. Required fields are marked *