linux 資源監控sar命令詳解
詳解
默認監控: sar 1 1 // CPU和IOWAIT統計狀態
(1) sar -b 1 1 // IO傳送速率
(2) sar -B 1 1 // 頁交換速率
(3) sar -c 1 1 // 進程創建的速率
(4) sar -d 1 1 // 塊設備的活躍信息
(5) sar -n DEV 1 1 // 網路設備的狀態信息
(6) sar -n SOCK 1 1 // SOCK的使用情況
(7) sar -n ALL 1 1 // 所有的網絡狀態信息
(8) sar -P ALL 1 1 // 每顆CPU的使用狀態信息和IOWAIT統計狀態
(9) sar -q 1 1 // 隊列的長度(等待運行的進程數)和負載的狀態
(10) sar -r 1 1 // 內存和swap空間使用情況
(11) sar -R 1 1 // 內存的統計信息(內存頁的分配和釋放、系統每秒作爲BUFFER使用內存頁、每秒被cache到的內存頁)
(12) sar -u 1 1 // CPU的使用情況和IOWAIT信息(同默認監控)
(13) sar -v 1 1 // inode, file and other kernel tablesd的狀態信息
(14) sar -w 1 1 // 每秒上下文交換的數目
(15) sar -W 1 1 // SWAP交換的統計信息(監控狀態同iostat 的si so)
(16) sar -x 2906 1 1 // 顯示指定進程(2906)的統計信息,信息包括:進程造成的錯誤、用戶級和系統級用戶CPU的佔用情況、運行在哪顆CPU上
(17) sar -y 1 1 // TTY設備的活動狀態
(18) 將結果輸出到文件(-o)和讀取記錄信息(-f)
(19) sar -h // 查看幫助
-
將命令結果追加到文件並從文件讀取內容
#sar -u -o /tmp/1.txt 2 3 #保存之文件,保存後的文件是二進制的,無法使用vim和cat直接打開
# sar -u -f /tmp/1.txt #從二進制文件讀取
-
CPU監控
注意: -u參數可以省略
sar -u 1 10 或 sar 1 10 (1:每隔一秒刷新一次,10:刷新10次)
sar -p 或 sar -u -p (查看全天)
輸出項 |
詳細說明 |
CPU |
all 表示統計信息爲所有 CPU 的平均值 |
%user | 顯示在用戶級別(application)運行使用 CPU 總時間的百分比 |
%nice | 改變過優先級的進程的CPU使用率 |
%system | 內核空間的CPU使用率,在覈心級別(kernel)運行所使用 CPU 總時間的百分比 |
%iowait | 顯示用於等待I/O操作佔用 CPU 總時間的百分比 |
%steal | 管理程序(hypervisor)爲另一個虛擬進程提供服務而等待虛擬 CPU 的百分比 |
%idle | 顯示 CPU 空閒時間佔用 CPU 總時間的百分比 |
在以上的顯示當中,主要看%iowait和%idle,%iowait過高表示存在I/O瓶頸,即磁盤IO無法滿足業務需求,如果%idle過低表示CPU使用率比較嚴重,需要結合內存使用等情況判斷CPU是否瓶頸。
-
進程隊列長度和CPU平均負載狀態監控
sar -q 1 10 (1:每隔一秒刷新一次,10:刷新10次)
輸出項 |
詳細說明 |
runq-sz |
運行隊列的長度(等待運行的進程數) |
plist-sz | 進程列表中進程(processes)和線程(threads)的數量 |
ldavg-1 | 最後1分鐘的CPU平均負載,即將多核CPU過去一分鐘的負載相加再除以核心數得出的平均值,5分鐘和15分鐘以此類推 |
ldavg-5 | 最後5分鐘的CPU平均負載 |
ldavg-15 | 最後15分鐘的CPU平均負載 |
blocked |
-
內存監控
sar -r 1 10 (1:每隔一秒刷新一次,10:刷新10次)
sar -r (查看全天)
輸出項 |
詳細說明 |
kbmemfree |
這個值和free命令中的free值基本一致,所以它不包括buffer和cache的空間。 |
kbmemused |
這個值和free命令中的used值基本一致,所以它包括buffer和cache的空間。 |
%memused |
這個值是kbmemused和內存總量(不包括swap)的一個百分比。 |
kbbuffers和kbcached |
這兩個值就是free命令中的buffer和cache。 |
kbcommit |
保證當前系統所需要的內存,即爲了確保不溢出而需要的內存(RAM+swap)。 |
%commit |
這個值是kbcommit與內存總量(包括swap)的一個百分比。 (可以看做內存使用量的百分比) |
-
I/O和傳送速率監控
sar -b 1 10 (1:每隔一秒刷新一次,10:刷新10次)
輸出項 |
詳細說明 |
tps | 每秒鐘物理設備的 I/O 傳輸總量 |
rtps | 每秒鐘從物理設備讀入的數據總量 |
%util |
表示一秒中有百分之幾的時間用於I/O操作。 |
wtps |
每秒鐘向物理設備寫入的數據總量 |
bread/s |
每秒鐘從物理設備讀入的數據量,單位爲 塊/s |
bwrtn/s |
每秒鐘向物理設備寫入的數據量,單位爲 塊/s |
-
磁盤使用情況監控
sar -d 1 10 (1:每隔一秒刷新一次,10:刷新10次)
sar -d 1 10 -p(1:每隔一秒刷新一次,10:刷新10次)
參數-p可以打印出sda,hdc等磁盤設備名稱,如果不用參數-p,設備節點則有可能是dev8-0,dev22-0
輸出項 |
詳細說明 |
tps |
每秒從物理磁盤I/O的次數.多個邏輯請求會被合併爲一個I/O磁盤請求,一次傳輸的大小是不確定的. |
rd_sec/s |
每秒讀扇區的次數. |
wr_sec/s |
每秒寫扇區的次數. |
avgrq-sz |
平均每次設備I/O操作的數據大小(扇區). |
avgqu-sz |
磁盤請求隊列的平均長度. |
await |
從請求磁盤操作到系統完成處理,每次請求的平均消耗時間,包括請求隊列等待時間,單位是毫秒(1秒=1000毫秒). |
svctm |
系統處理每次請求的平均時間,不包括在請求隊列中消耗的時間. |
%util |
I/O請求佔CPU的百分比,比率越大,說明越飽和. |
1. avgqu-sz 的值較低時,設備的利用率較高。
2. %util I/O請求佔用的CPU百分比,值越高,說明I/O越慢。