Linux使用sar進行性能分析
轉:https://blog.csdn.net/xusensen/article/details/54606401#sar%E7%AE%80%E4%BB%8B
Linux使用sar進行性能分析
- Linux使用sar進行性能分析
- sar簡介
- sar命令常用格式
- sar常用性能數據分析
- 整體CPU使用統計-u
- 各個CPU使用統計-P
- 內存使用情況統計-r
- 整體IO情況-b
- 各個IO設備情況-d
- 網絡統計-n
- sar日誌保存-o
- References
sar簡介
sar(System Activity Reporter, 系統活動情況報告): 是用於監控Linux系統各個性能的優秀工具,包括:文件的讀寫情況、系統調用的使用情況、磁盤I/O、CPU效率、內存使用狀況、進程活動及IPC有關的活動等。
sar命令常用格式
sar [ options ] [ <interval> [ <count> ] ]
其中:
interval: 采樣周期,單位是秒;
count:采樣次數,默認值是連續采樣;
options:命令行選項。
sar命令的選項很多,下面只列出常用選項:
-A:所有報告的總和
-u:輸出整體CPU使用情況的統計信息
-v:輸出inode、文件和其他內核表的統計信息
-d:輸出每一個塊設備的活動信息
-r:輸出內存和交換空間的統計信息
-b:顯示I/O和傳送速率的統計信息
-a:文件讀寫情況
-c:輸出進程統計信息,每秒創建的進程數
-R:輸出內存頁面的統計信息
-y:終端設備活動情況
-w:輸出系統交換活動信息
sar常用性能數據分析
下文將說明如何使用sar獲取以下性能分析數據:
- 整體CPU使用統計
- 各個CPU使用統計
- 內存使用情況統計
- 整體I/O情況
- 各個I/O設備情況
- 網絡統計
整體CPU使用統計(-u)
使用-u選項,sar輸出整體CPU的使用情況,不加選項時,默認使用的就是-u選項。以下命令顯示采樣時間為3s,采樣次數為2次,整體CPU的使用情況:
sar 3 2 (或者 sar -u 3 2)
[root@HB05-uhost-130-157 tmp]# sar 3 2
Linux 2.6.32-279.19.31.el6.ucloud.x86_64 (HB05-uhost-130-157) 01/17/2017 _x86_64_ (32 CPU)
11:58:50 PM CPU %user %nice %system %iowait %steal %idle
11:58:53 PM all 13.25 0.00 3.16 3.72 0.00 79.87
11:58:56 PM all 12.69 0.00 3.04 4.77 0.00 79.50
Average: all 12.97 0.00 3.10 4.25 0.00 79.69
[root@HB05-uhost-130-157 tmp]# sar -u 3 2
Linux 2.6.32-279.19.31.el6.ucloud.x86_64 (HB05-uhost-130-157) 01/17/2017 _x86_64_ (32 CPU)
11:59:02 PM CPU %user %nice %system %iowait %steal %idle
11:59:05 PM all 22.24 0.00 3.60 8.14 0.00 66.02
11:59:08 PM all 21.26 0.00 4.28 6.95 0.00 67.51
Average: all 21.75 0.00 3.94 7.55 0.00 66.77
14
輸出項說明:
CPU:all表示統計信息為所有CPU的平均值。
%usr:CPU在用戶態執行進程的時間百分比。
%nice:CPU在用戶態模式下,用於nice操作,所占用CPU總時間的百分比。
%system:CPU處在內核態執行進程的時間百分比。
%iowait:CPU用於等待I/O操作占用CPU總時間的百分比。
%steal:管理程序(hypervisor)為另一個虛擬進程提供服務而等待虛擬CPU的百分比。
%idle:CPU空閑時間百分比。
1. 若 %iowait 的值過高,表示硬盤存在I/O瓶頸
2. 若 %idle 的值高但系統響應慢時,有可能是 CPU 等待分配內存,此時應加大內存容量
3. 若 %idle 的值持續低於1,則系統的 CPU 處理能力相對較低,表明系統中最需要解決的資源是 CPU
各個CPU使用統計(-P)
“-P ALL”選項指示對每個內核輸出統計信息:
其中”CPU”列輸出0,1,2,3,4,5指示對應的cpu核。也可針對單獨一個內核顯示,“-P 1”指示顯示第二個內核的統計信息。
內存使用情況統計(-r)
使用-r選項可顯示內存統計信息,以下命令顯示以1秒為采樣時間,顯示2次內存信息:
sar -r 1 2
參數參數 | 意義 |
---|---|
kbmemfree | Amount of free memory available in kilobytes. |
kbmemused | Amount of used memory in kilobytes. This does not take into account memory used by the kernel itself. |
%memused | Percentage of used memory |
kbbuffers | Amount of memory used as buffers by the kernel in kilobytes. |
kbcached | Amount of memory used to cache data by the kernel in kilobytes. |
kbcommit | Amount of memory in kilobytes needed for current workload. This is an estimate of how much RAM/swap is needed to guarantee that there never is out of memory. |
%commit | Percentage of memory needed for current workload in relation to the total amount of memory (RAM+swap). This number may be greater than 100% because the kernel usually overcommits memory. |
整體I/O情況(-b)
使用-b選項,可以顯示磁盤I/O的使用情況:Report I/O and transfer rate statistics.
sar -b 3 2
輸出項說明:
tps: 每秒向磁盤設備請求數據的次數,包括讀、寫請求,為rtps與wtps的和。出於效率考慮,每一次IO下發後並不是立即處理請求,而是將請求合並(merge),這裏tps指請求合並後的請求計數。
rtps: 每秒向磁盤設備的讀請求次數
wtps: 每秒向磁盤設備的寫請求次數
bread/s:每秒鐘從物理設備讀入的數據量,單位為 塊/s
bwrtn/s:每秒鐘向物理設備寫入的數據量,單位為 塊/s
各個I/O設備情況(-d)
使用-d選項可以顯示各個磁盤的統計信息,再增加-p選項可以以sdX的形式顯示設備名稱:
sar -d -p 3 2
輸出項說明:
rd_sec/s: 每秒從設備讀取的扇區數
wr_sec/s: 每秒往設備寫入的扇區數
avgrq-sz: 發送給設備的請求的平均大小(以扇區為單位)
avgqu-sz: 發送給設備的請求隊列的平均長度
await :服務等待I/O請求的平均時間,包括請求隊列等待時間 (單位毫秒)
svctm :設備處理I/O請求的平均時間,不包括請求隊列等待時間 (單位毫秒)
%util :一秒中有百分之多少的時間用於 I/O 操作,即被io消耗的cpu百分比。
備註:
- 如果 %util 接近 100%,說明產生的I/O請求太多,I/O系統已經滿負荷,該磁盤可能存在瓶頸。
- 如果 svctm 比較接近 await,說明 I/O 幾乎沒有等待時間;如果 await 遠大於 svctm,說明I/O 隊列太長,io響應太慢,則需要進行必要優化。
- 如果avgqu-sz比較大,也表示有當量io在等待。
網絡統計(-n)
使用-n選項可以對網絡使用情況進行顯示,-n後接關鍵詞”DEV”可顯示eth0、eth1等網卡的信息:
sar -n DEV 1 1
以上主要輸出含義如下:
IFACE: Name of the network interface for which statistics are reported.
rxpck/s: Total number of packets received per second.
txpck/s: Total number of packets transmitted per second.
rxkB/s: Total number of kilobytes(kB) received per second.
txkB/s: Total number of kilobytes(kB) transmitted per second.
rxcmp/s: Number of compressed packets received per second (for cslip etc.).
txcmp/s: Number of compressed packets transmitted per second.
rxmcst/s: Number of multicast packets received per second.
sar日誌保存(-o)
最後講一下如何保存sar日誌,使用-o選項,我們可以把sar統計信息保存到一個指定的文件,對於保存的日誌,我們可以使用-f選項讀取:
linux:~ # sar -n DEV 1 10 -o sar.out
linux:~ # sar -d 1 10 -f sar.out
相比將結果重定向到一個文件,使用-o選項,可以保存更多的系統資源信息。
References:
1 http://www.thegeekstuff.com/2011/03/sar-examples/
2 http://www.cnblogs.com/bangerlee/articles/2545747.html
3 http://www.cnblogs.com/xianghang123/archive/2011/08/25/2153591.html
4 http://www.chinaz.com/server/2013/0401/297942.shtml
Linux使用sar進行性能分析