sar可用於監控Linux系統性能,幫助我們分析性能瓶頸。sar工具的使用方式為”sar [選項] intervar [count]”,其中interval為統計信息采樣時間,count為采樣次數。
下文將說明如何使用sar獲取以下性能分析數據:
- 整體CPU使用統計
- 各個CPU使用統計
- 內存使用情況統計
- 整體I/O情況
- 各個I/O設備情況
- 網絡統計
整體CPU使用統計(-u)
使用-u選項,sar輸出整體CPU的使用情況,不加選項時,默認使用的就是-u選項。以下命令顯示采樣時間為1s,采樣次數為2次,整體CPU的使用情況:
linux:/ # sar -u 1 2 Linux 2.6.16.60-0.21-smp (linux) 06/08/12 11:37:07 CPU %user %nice %system %iowait %steal %idle 11:37:08 all 0.00 0.00 0.25 0.00 0.00 99.75 11:37:09 all 0.00 0.00 0.25 0.00 0.00 99.75 Average: all 0.00 0.00 0.25 0.00 0.00 99.75
以上主要的統計項的解析如下:
%user: 用戶態下CPU使用時間比率
%system: 內核態下CPU使用時間比率
%iowait: CPU等待I/O占用時間比率
%idle: CPU空閑時間比率
各個CPU使用統計(-P)
“-P ALL”選項指示對每個內核輸出統計信息:
linux:~ # sar -P ALL 1 1 Linux 2.6.16.60-0.21-smp (linux) 06/08/12 14:04:37 CPU %user %nice %system %iowait %steal %idle 14:04:38 all 0.50 0.00 0.12 0.00 0.00 99.38 14:04:38 0 0.00 0.00 0.00 0.00 0.00 100.00 14:04:38 1 0.00 0.00 0.00 0.00 0.00 100.00 14:04:38 2 0.00 0.00 0.00 0.00 0.00 100.00 14:04:38 3 0.00 0.00 1.00 0.00 0.00 99.00
其中”CPU”列輸出0,1,2,3指示對應的cpu核。也可針對單獨一個內核顯示,“-P 1”指示顯示第二個內核的統計信息。
內存使用情況統計(-r)
使用-r選項可顯示內存統計信息,以下命令顯示以1秒為采樣時間,顯示2次內存信息:
linux:~ # sar -r 1 2 Linux 2.6.16.60-0.21-smp (linux) 06/08/12 14:22:50 kbmemfree kbmemused %memused kbbuffers kbcached kbswpfree kbswpused %swpused kbswpcad 14:22:51 11727480 4564652 28.02 174460 3995108 8393920 0 0.00 0 14:22:52 11727480 4564652 28.02 174460 3995108 8393920 0 0.00 0 Average: 11727480 4564652 28.02 174460 3995108 8393920 0 0.00 0
上面輸出的內存單位為”kb”,各項的名稱可自解析其含義。
整體I/O情況(-b)
使用-b選項,可以顯示磁盤I/O的使用情況:
linux:~ # sar -b 1 2 Linux 2.6.16.60-0.21-smp (linux) 06/08/12 14:50:33 tps rtps wtps bread/s bwrtn/s 14:50:34 0.99 0.00 0.99 0.00 7.92 14:50:35 4.00 0.00 4.00 0.00 136.00 Average: 2.49 0.00 2.49 0.00 71.64
以上各列的含義為:
tps: 每秒向磁盤設備請求數據的次數,包括讀、寫請求,為rtps與wtps的和。出於效率考慮,每一次IO下發后並不是立即處理請求,而是將請求合並(merge),這里tps指請求合並后的請求計數。
rtps: 每秒向磁盤設備的讀請求次數
wtps: 每秒向磁盤設備的寫請求次數
bread: 每秒從磁盤讀的bytes數量
bwrtn: 每秒向磁盤寫的bytes數量
各個I/O設備情況(-d)
使用-d選項可以顯示各個磁盤的統計信息,再增加-p選項可以以sdX的形式顯示設備名稱:
linux:~ # sar -d -p 1 1 Linux 2.6.16.60-0.21-smp (linux) 06/08/12 15:43:34 DEV tps rd_sec/s wr_sec/s avgrq-sz avgqu-sz await svctm %util 15:43:35 sda 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 15:43:35 sdb 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 15:43:35 sdc 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
以上輸出中DEV列以sdX的方式顯示了設備名稱。
網絡統計(-n)
使用-n選項可以對網絡使用情況進行顯示,-n后接關鍵詞”DEV”可顯示eth0、eth1等網卡的信息:
linux:~ # sar -n DEV 1 1 Linux 2.6.16.60-0.21-smp (linux) 06/08/12 15:50:22 IFACE rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/s rxmcst/s 15:50:23 lo 0.00 0.00 0.00 0.00 0.00 0.00 0.00 15:50:23 eth0 23.76 1.98 1.59 0.26 0.00 0.00 0.00 15:50:23 eth1 0.00 0.00 0.00 0.00 0.00 0.00 0.00 15:50:23 eth2 7.92 0.00 0.60 0.00 0.00 0.00 0.00
以上主要輸出含義如下:
IFACE: 網絡接口名稱
rxpck/s: 每秒收包的數量
txpck/s: 每秒發包的數量
rxkB/s: 每秒收的數據量(kB為單位)
txkB/s: 每秒發的數據量(kB為單位)
sar日志保存(-o)
最后講一下如何保存sar日志,使用-o選項,我們可以把sar統計信息保存到一個指定的文件,對於保存的日志,我們可以使用-f選項讀取:
linux:~ # sar -n DEV 1 10 -o sar.out linux:~ # sar -d 1 10 -f sar.out
相比將結果重定向到一個文件,使用-o選項,可以保存更多的系統資源信息。
Reference: 10 Useful Sar(Sysstat) Examples for UNIX/Linux Performance Monitoring