1. 程式人生 > >Linux使用sar進行性能分析

Linux使用sar進行性能分析

hang 大於 .com rtp 百分比 workload 定向 等待時間 模式

轉: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進行性能分析