Linux 系統管理必需能夠隨時監控及掌控系統的效能狀態,以便可以在必要時加以調整以確保系統的效能。而一般系統效能的監控範圍包括:
- CPU的利用量
- 實體記憶體的使用狀況
- 虛擬記憶體的使用狀況
- 磁碟使用狀況
- 網路使用率及流量
Linux 環境下有許多工具與指令可以用來收集和報告上述系統資源的耗用狀況,最常見的大概是sysstat套件內的sar、iostat、mpstat等工具,不過這些指令大多可提供相雷同或部份重複性的資料,下表整理了Linux系統效能監控指令的異同與比對。
工具指令 | CPU | 記憶體 | 磁碟I/O | 網路流量 |
sar | ▲ (-u) | ▲ (-r) | ▲ (-d -p) | ▲ (-n) |
vmstat | ▲ | ▲ | ▲ (-d) |
|
iostat | ▲ |
| ▲ |
|
mpstat | ▲ |
|
|
|
底下將說明如何使用各種不同的工具來監控或收集各項系統效能。
壹. 監控CPU的使用狀況
若您需要監控目前CPU利用率以便了解CPU的負載量是否過重,可使用的工具還不少,如mpstat、vmstat、top
(1) mpstat
mpstat 為Multiprocessor Statistics的縮寫,用以報告處理器相關的資訊,不但可以查看所有CPU的平均訊息,也可以指定特定CPU的訊息。
mpstat 的基本語法為: mpstat [-P {|ALL}] [間隔 [次數]] -P {|ALL} 表示監控那個CPU, cpu可在 [0,cpu個數-1] 之間的數值 ; |
下面範例每隔五秒取一次CPU的統計資訊,共三次。
# mpstat -P ALL 5 3 14時42分24秒 CPU %usr %nice %sys %iowait %irq %soft %steal %guest %idle 14時42分29秒 CPU %usr %nice %sys %iowait %irq %soft %steal %guest %idle 14時42分34秒 CPU %usr %nice %sys %iowait %irq %soft %steal %guest %idle 平均時間: CPU %usr %nice %sys %iowait %irq %soft %steal %guest %idle
|
(2) vmstat
vmstat 為virtual memory statistics的縮寫,雖然顧名思義,是一個用來檢查記憶體使用狀況的工具,但其也可以用來顯示CPU時間資訊,如下圖所示,它可以依序顯示 us, sy, id, wa, st分別表示:
us (user time) : 執行一般使用者程式(非作業系統核心碼)所花費的時間。
sy (system time) : 執行作業系統核心碼(Kernel code)所花費的時間。
id (idle time) : CPU 閒置時間,此值越大,代表CPU負載量越輕。
wa (waiting time) : CPU等待IO的時間
st (stolen time):虛擬機器執行時花費的時間。
# vmstat 5 5 |
(3) sar : 收集與報告歷史資料
sar 的結果與vmstat、iostat、mpstat 命令相似,但最主要的不同在於sar會顯示歷程記錄,通常您下達sar指令而不加任何選項時,sar會顯示從午夜零點開始後,每隔十分鐘間隔所收集的CPU歷程資訊
# sar 00時00分01秒 CPU %user %nice %system iowait %steal %idle |
貳. 監控記憶體的使用狀況
(1) vmstat
# vmstat 3 4 |
(2) sar -r
# sar -r 00時00分01秒 kbmemfree kbmemused %memused kbbuffers kbcached kbcommit %commit 18時50分01秒 174128 1480160 89.47 192720 527172 1151728 21.57 |
參. 監控磁碟使用狀況
(1) sar –d –p
# sar -d -p 1 3 19時12分40秒 DEV tps rd_sec/s wr_sec/s avgrq-sz avgqu-sz await svctm %util 19時12分41秒 DEV tps rd_sec/s wr_sec/s avgrq-sz avgqu-sz await svctm %util 19時12分42秒 DEV tps rd_sec/s wr_sec/s avgrq-sz avgqu-sz await svctm %util 平均時間: DEV tps rd_sec/s wr_sec/s avgrq-sz avgqu-sz await svctm %util |
(2) iostat –d
# iostat -d Device: tps Blk_read/s Blk_wrtn/s Blk_read Blk_wrtn |
肆. 監控網路效能
(1) sar –n
# sar -n DEV 3 2 19時26分40秒 IFACE rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/s rxmcst/s 19時26分43秒 IFACE rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/s rxmcst/s 平均時間: IFACE rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/s rxmcst/s |
(2) iptraf
iptraf是一個文字介面互動式的網路監視工具,不過需要先在您的系統上安裝它(如 yum –y install iptraf),iptraf可以顯示下列資訊
- TCP連線的流量統計
- 網路卡的IP流量統計
- 通訊協定的網路流量統計
- TCP/UDP 連接埠的網路流量統計
- 第二層位址的網路流量統計
伍. 其它
還有一些Linux命令對於了解系統效能也有所助益。
gnome-system-monitor (X 視窗)
ksysguard
ksysguard提供兩個工作表 - 系統負載頁(下圖)和行程表,而系統負載有3個圖表,每個分別說明 「CPU歷史」,「記憶體和Swap歷史」,「網絡歷史」的負載狀況。如果你將滑鼠指標停在到每個圖上頭,則你會看到帶有顏色的詳細分析。
uptime命令
最後三個數字顯示了過去1、5、15分鐘的平均系統負載量,有趣的是top或w這二個指令所顯示第一行也同樣有這三個數值。
# uptime |