最近工作需要,研究了一些Liunx性能工具,發現sar這個工具非常優秀。sar是一個非常全面的一個分析工具,對文件的讀寫,系統調用的使用情況,磁碟IO,CPU相關使用情況,記憶體使用情況,進程活動等都可以進行有效的分析。sar工具將對系統當前的狀態進行取樣,然後通過計算數據和比例來表達系統的當前運行狀 ...
最近工作需要,研究了一些Liunx性能工具,發現sar這個工具非常優秀。sar是一個非常全面的一個分析工具,對文件的讀寫,系統調用的使用情況,磁碟IO,CPU相關使用情況,記憶體使用情況,進程活動等都可以進行有效的分析。sar工具將對系統當前的狀態進行取樣,然後通過計算數據和比例來表達系統的當前運行狀態。它的特點是可以連續對系統取樣,獲得大量的取樣數據。取樣數據和分析的結果都可以存入文件,使用它時消耗的系統資源很小。
--help查看一下:
[root@iZuf657isp1alim7einvk6Z ~]# sar --help 用法: sar [ 選項 ] [ <時間間隔> [ <次數> ] ] Options are: [ -A ] [ -b ] [ -B ] [ -C ] [ -d ] [ -h ] [ -m ] [ -p ] [ -q ] [ -r ] [ -R ] [ -S ] [ -t ] [ -u [ ALL ] ] [ -v ] [ -V ] [ -w ] [ -W ] [ -y ] [ -I { <int> [,...] | SUM | ALL | XALL } ] [ -P { <cpu> [,...] | ALL } ] [ -j { ID | LABEL | PATH | UUID | ... } ] [ -n { <keyword> [,...] | ALL } ] [ -o [ <filename> ] | -f [ <filename> ] ] [ --legacy ] [ -i <interval> ] [ -s [ <hh:mm:ss> ] ] [ -e [ <hh:mm:ss> ] ]
-A:所有報告的總和
-u:輸出CPU使用情況的統計信息
-v:輸出inode、文件和其他內核表的統計信息
-d:輸出每一個塊設備的活動信息
-r:輸出記憶體和交換空間的統計信息
-b:顯示I/O和傳送速率的統計信息-R:輸出記憶體頁面的統計信息
-y:終端設備活動情況
-w:輸出系統交換活動信息
-B:顯示換頁狀態;
-e:設置顯示報告的結束時間
-f:從指定文件提取報告
-i:設狀態信息刷新的間隔時間
-p:報告每個CPU的狀態
-q:平均負載分析
下麵介紹幾個常用的:
1、統計CPU使用情況
命令:sar -u 1 3,統計CPU的使用情況,每間隔1秒鐘統計一次總共統計三次。
[root@iZuf657isp1alim7einvk6Z ~]# sar -u 1 3 Linux 2.6.32-754.23.1.el6.x86_64 (iZuf657isp1alim7einvk6Z) 2022年09月04日 _x86_64_ (8 CPU) 23時55分22秒 CPU %user %nice %system %iowait %steal %idle 23時55分23秒 all 14.81 0.00 1.14 8.35 0.00 75.70 23時55分24秒 all 14.34 0.00 1.26 7.42 0.00 76.98 23時55分25秒 all 14.18 0.00 1.01 7.47 0.00 77.34 平均時間: all 14.44 0.00 1.14 7.75 0.00 76.67
%user #用戶空間的CPU使用
%nice 改變過優先順序的進程的CPU使用率
%system 內核空間的CPU使用率
%iowait CPU等待IO的百分比
%steal 虛擬機的虛擬機CPU使用的CPU
%idle 空閑的CPU
在以上的顯示當中,主要看%iowait和%idle,%iowait過高表示存在I/O瓶頸,即磁碟IO無法滿足業務需求,如果%idle過低表示CPU使用率比較嚴重,需要結合記憶體使用等情況判斷CPU是否瓶頸。
2、記憶體統計分析
命令:sar -r 1 3,查看記憶體使用情況,每間隔1秒鐘統計一次總共統計三次。
[root@iZuf657isp1alim7einvk6Z ~]# sar -r 1 3 Linux 2.6.32-754.23.1.el6.x86_64 (iZuf657isp1alim7einvk6Z) 2022年09月05日 _x86_64_ (8 CPU) 00時01分16秒 kbmemfree kbmemused %memused kbbuffers kbcached kbcommit %commit 00時01分17秒 369456 32510660 98.88 128704 7057296 20432776 62.14 00時01分18秒 365828 32514288 98.89 128704 7061612 20432776 62.14 00時01分19秒 359528 32520588 98.91 128704 7066180 20436368 62.15 平均時間: 364937 32515179 98.89 128704 7061696 20433973 62.15
kbmemfree 空閑的物理記憶體大小
kbmemused 使用中的物理記憶體大小
%memused 物理記憶體使用率
kbbuffers 內核中作為緩衝區使用的物理記憶體大小,kbbuffers和kbcached:這兩個值就是free命令中的buffer和cache.
kbcached 緩存的文件大小
kbcommit 保證當前系統正常運行所需要的最小記憶體,即為了確保記憶體不溢出而需要的最少記憶體(物理記憶體+Swap分區)
commit 這個值是kbcommit與記憶體總量(物理記憶體+swap分區)的一個百分比的
3、平均負載統計分析
命令:sar -q 1 3,查看記憶體使用情況,每間隔1秒鐘統計一次總共統計三次。
[root@iZuf657isp1alim7einvk6Z ~]# sar -q 1 3 Linux 2.6.32-754.23.1.el6.x86_64 (iZuf657isp1alim7einvk6Z) 2022年09月05日 _x86_64_ (8 CPU) 00時04分57秒 runq-sz plist-sz ldavg-1 ldavg-5 ldavg-15 00時04分58秒 1 646 1.91 1.82 1.75 00時04分59秒 1 646 1.91 1.82 1.75 00時05分00秒 1 646 1.91 1.82 1.75 平均時間: 1 646 1.91 1.82 1.75
runq-sz 運行隊列的長度(等待運行的進程數,每核的CP不能超過3個)
plist-sz 進程列表中的進程(processes)和線程數(threads)的數量
ldavg-1 最後1分鐘的CPU平均負載,即將多核CPU過去一分鐘的負載相加再除以核心數得出的平均值,5分鐘和15分鐘以此類推
ldavg-5 最後5分鐘的CPU平均負載
ldavg-15 最後15分鐘的CPU平均負載
4、統計swap分區
命令:sar -W 1 3,查看系統swap分區的統計信息:每間隔1秒鐘統計一次總共統計三次。
[root@iZuf657isp1alim7einvk6Z ~]# sar -W 1 3 Linux 2.6.32-754.23.1.el6.x86_64 (iZuf657isp1alim7einvk6Z) 2022年09月05日 _x86_64_ (8 CPU) 00時07分01秒 pswpin/s pswpout/s 00時07分02秒 0.00 0.00 00時07分03秒 0.00 0.00 00時07分04秒 0.00 0.00 平均時間: 0.00 0.00
pswpin/s 每秒從交換分區到系統的交換頁面(swap page)數量
pswpott/s 每秒從系統交換到swap的交換頁面(swap page)的數量
5、查看磁碟使用情況
命令:sar -d 1 3,磁碟使用詳情統計,每間隔1秒鐘統計一次總共統計三次。
[root@iZuf657isp1alim7einvk6Z ~]# sar -d 1 3 Linux 2.6.32-754.23.1.el6.x86_64 (iZuf657isp1alim7einvk6Z) 2022年09月05日 _x86_64_ (8 CPU) 00時09分05秒 DEV tps rd_sec/s wr_sec/s avgrq-sz avgqu-sz await svctm %util 00時09分06秒 dev252-0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 00時09分06秒 dev252-16 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 00時09分06秒 DEV tps rd_sec/s wr_sec/s avgrq-sz avgqu-sz await svctm %util 00時09分07秒 dev252-0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 00時09分07秒 dev252-16 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 00時09分07秒 DEV tps rd_sec/s wr_sec/s avgrq-sz avgqu-sz await svctm %util 00時09分08秒 dev252-0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 00時09分08秒 dev252-16 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 平均時間: DEV tps rd_sec/s wr_sec/s avgrq-sz avgqu-sz await svctm %util 平均時間: dev252-0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 平均時間: dev252-16 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
DEV 磁碟設備的名稱
tps:每秒I/O的傳輸總數
rd_sec/s 每秒讀取的扇區的總數
wr_sec/s 每秒寫入的扇區的總數
avgrq-sz 平均每次次磁碟I/O操作的數據大小(扇區)
avgqu-sz 磁碟請求隊列的平均長度
await 從請求磁碟操作到系統完成處理,每次請求的平均消耗時間,包括請求隊列等待時間,單位是毫秒(1秒等於1000毫秒),等於尋道時間+隊列時間+服務時間
svctm I/O的服務處理時間,即不包括請求隊列中的時間
%util I/O請求占用的CPU百分比,值越高,說明I/O越慢
6、查看磁碟IO
命令:sar -b 1 3,查看I/O和傳遞速率的統計信息,每間隔1秒鐘統計一次總共統計三次。
[root@iZuf657isp1alim7einvk6Z ~]# sar -b 1 3 Linux 2.6.32-754.23.1.el6.x86_64 (iZuf657isp1alim7einvk6Z) 2022年09月05日 _x86_64_ (8 CPU) 00時12分08秒 tps rtps wtps bread/s bwrtn/s 00時12分09秒 0.00 0.00 0.00 0.00 0.00 00時12分10秒 2.08 0.00 2.08 0.00 41.67 00時12分11秒 7.00 0.00 7.00 0.00 144.00 平均時間: 3.07 0.00 3.07 0.00 62.80
tps 磁碟每秒鐘的IO總數,等於iostat中的tps
rtps 每秒鐘從磁碟讀取的IO總數
wtps 每秒鐘從寫入到磁碟的IO總數
bread/s 每秒鐘從磁碟讀取的塊總數
bwrtn/s 每秒鐘此寫入到磁碟的塊總數