sar命令詳解

sar 是很是強大性能分析命令,經過 sar 命令能夠全面的獲取系統的 CPU、運行隊列、磁盤 I/O、交換區、內存、 cpu 中斷、網絡等性能數據。
sar 命令行的經常使用格式:
sar [options] [-A] [-o file] t [n]
在命令行中, n 和 t 兩個參數組合起來定義採樣間隔和次數, t 爲採樣間隔, 是必須有的參數, n 爲採樣次數,是可選的,默認值是 1, -o file 表示將命令結果以二進制格式存放在文件中, file 在此處不是關鍵字,是文件名。 options 爲命令行選項, sar 命令的選項不少,下面只列出經常使用選項:
     -A:全部報告的總和。
     -u: CPU 利用率
     -v:進程、節點、文件和鎖表狀態。
  -p:像是當前系統中指定 CPU 使用信息。
    -d:硬盤使用報告。
    -r:顯示系統內存的使用狀況。
  -n: 顯示網絡運行狀態。 參數後面可跟 DEV、 EDEV、 SOCK 和 FULL。 DEV 顯示網絡接口信息, EDEV 顯示網絡錯誤的統計數據, SOCK 顯示套接字信息, FULL 顯示前三參數因此信息。


  -q:顯示運行隊列的大小,它與系統當時的平均負載相同
  -B:內存分頁狀況
  -R:顯示進程在採樣時間內的活動狀況。
    -g:串口 I/O 的狀況。
    -b:緩衝區使用狀況。
    -a:文件讀寫狀況。
    -c:系統調用狀況。
    -R:進程的活動狀況。
    -y:終端設備活動狀況。
    -W:系統交換活動。

sar——監控 CPU數組

複製代碼
[sdk_test@ssdk1 server]$ sar -u 3 5
Linux 2.6.32-431.11.15.el6.ucloud.x86_64 (ssdk1)     10/28/2016     _x86_64_    (4 CPU)

03:42:32 PM     CPU     %user     %nice   %system   %iowait    %steal     %idle
03:42:35 PM     all      1.08      0.00      0.58      0.00      0.00     98.33
03:42:38 PM     all      0.75      0.00      0.50      0.00      0.00     98.75
03:42:41 PM     all      1.25      0.00      0.58      0.00      0.00     98.17
03:42:44 PM     all      0.75      0.00      0.33      0.00      0.00     98.91
03:42:47 PM     all      1.50      0.00      0.75      0.00      0.00     97.75
Average:        all      1.07      0.00      0.55      0.00      0.00     98.38
複製代碼

%usr:用戶進程消耗的 CPU 時間百分比。
 %nice: 運行正常進程消耗的 CPU 時間百分比。
 %system:系統進程消耗的 CPU 時間百分比。
 %iowait: I/O 等待所佔 CPU 時間百分比。
 %steal:在內存緊張環境下, pagein 強制對不一樣的頁面進行的 steal 操做。
 %idle: CPU 空閒狀態的時間百分比。
在全部的顯示中,咱們應主要注意%iow 和%idle, %iow 的值太高,表示硬盤存在 I/O 瓶頸, %idle 值高,表示 CPU 較空閒,若是%idle 值高但系統響應慢時,有多是 CPU 等待分配內存, 此時應加大內存容量。 %idle 值若是持續低於 10,那麼系統的 CPU 處理能力相對較低,表 明系統中最須要解決的資源是 CPU。

sar——內存和交換空間監控網絡

複製代碼
[sdk_test@ssdk1 server]$ sar -r 5 3
Linux 2.6.32-431.11.15.el6.ucloud.x86_64 (ssdk1)     10/28/2016     _x86_64_    (4 CPU)

03:50:06 PM kbmemfree kbmemused  %memused kbbuffers  kbcached  kbcommit   %commit
03:50:11 PM    155580  16115280     99.04    252504  12431540   3873512     23.06
03:50:16 PM    154860  16116000     99.05    252504  12431764   3873512     23.06
03:50:21 PM    155116  16115744     99.05    252504  12432000   3873512     23.06
Average:       155185  16115675     99.05    252504  12431768   3873512     23.06
複製代碼
[sdk_test@ssdk1 server]$ free
             total       used       free     shared    buffers     cached
Mem:      16270860   16113196     157664        464     252644   12430100
-/+ buffers/cache:    3430452   12840408 
Swap:       524280          0     524280 

 Kbmemfree: 這個值和 free 命令中的 free 值基本一致,因此它不包括 buffer 和 cache 的空間。
 kbmemused:這個值和 free 命令中的 used 值基本一致,因此它包括 buffer 和 cache 的空間。
 %memused:這個值是 kbmemused 和內存總量(不包括 swap)的一個百分比。
 kbbuffers 和 kbcached:這兩個值就是 free 命令中的 buffer 和 cache。
 kbcommit:保證當前系統所須要的內存,即爲了確保不溢出而須要的內存(RAM+swap)。
 %commit:這個值是 kbcommit 與內存總量(包括 swap)的一個百分比。

post

sar——內存分頁監控性能

複製代碼
[sdk_test@ssdk1 server]$ sar -B 5 3
Linux 2.6.32-431.11.15.el6.ucloud.x86_64 (ssdk1)     10/28/2016     _x86_64_    (4 CPU)

03:49:40 PM  pgpgin/s pgpgout/s   fault/s  majflt/s  pgfree/s pgscank/s pgscand/s pgsteal/s    %vmeff
03:49:45 PM      0.00     18.47      9.64      0.00    101.20      0.00      0.00      0.00      0.00
03:49:50 PM      0.00     14.46    362.05      0.00    149.80      0.00      0.00      0.00      0.00
03:49:55 PM      0.00    136.82   1683.70      0.00    552.31      0.00      0.00      0.00      0.00
Average:         0.00     56.53    684.46      0.00    267.58      0.00      0.00      0.00      0.00
複製代碼

 pgpgin/s:表示每秒從磁盤或 SWAP 置換到內存的字節數(KB)。
 pgpgout/s:表示每秒從內存置換到磁盤或 SWAP 的字節數(KB)。
 fault/s:每秒鐘系統產生的缺頁數,即主缺頁與次缺頁之和(major + minor)。
 majflt/s:每秒鐘產生的主缺頁數。

this

sar——I/O 和傳送速率監控spa

複製代碼
[sdk_test@ssdk1 server]$ sar -b 5 3
Linux 2.6.32-431.11.15.el6.ucloud.x86_64 (ssdk1)     10/28/2016     _x86_64_    (4 CPU)

03:49:18 PM       tps      rtps      wtps   bread/s   bwrtn/s
03:49:23 PM      0.80      0.00      0.80      0.00     16.00
03:49:28 PM      3.62      0.00      3.62      0.00    291.35
03:49:33 PM      2.40      0.00      2.40      0.00    189.18
Average:         2.27      0.00      2.27      0.00    165.24
複製代碼

 tps:每秒鐘物理設備的 I/O 傳輸總量。
 rtps:每秒鐘從物理設備讀入的數據總量。
 wtps:每秒鐘向物理設備寫入的數據總量。
 bread/s:每秒鐘從物理設備讀入的數據量,單位爲 塊/s。
 bwrtn/s:每秒鐘向物理設備寫入的數據量,單位爲 塊/s。

命令行

sar——進程隊列長度和平均負載狀態監控線程

複製代碼
[sdk_test@ssdk1 server]$ sar -q 5 3
Linux 2.6.32-431.11.15.el6.ucloud.x86_64 (ssdk1)     10/28/2016     _x86_64_    (4 CPU)

03:48:56 PM   runq-sz  plist-sz   ldavg-1   ldavg-5  ldavg-15
03:49:01 PM         0       535      0.02      0.02      0.00
03:49:06 PM         0       536      0.01      0.02      0.00
03:49:11 PM         0       536      0.01      0.02      0.00
Average:            0       536      0.01      0.02      0.00
複製代碼

 runq-sz:運行隊列的長度(等待運行的進程數)。
 plist-sz:進程列表中進程(processes)和線程(threads)的數量。
 ldavg-1:最後 1 分鐘的系統平均負載(System load average)。
 ldavg-5:過去 5 分鐘的系統平均負載。
 ldavg-15:過去 15 分鐘的系統平均負載。

code

sar——系統交換活動信息監控server

複製代碼
[sdk_test@ssdk1 server]$ sar -W 3 5
Linux 2.6.32-431.11.15.el6.ucloud.x86_64 (ssdk1)     10/28/2016     _x86_64_    (4 CPU)

03:45:41 PM  pswpin/s pswpout/s
03:45:44 PM      0.00      0.00
03:45:47 PM      0.00      0.00
03:45:50 PM      0.00      0.00
03:45:53 PM      0.00      0.00
03:45:56 PM      0.00      0.00
Average:         0.00      0.00
複製代碼

 pswpin/s:每秒系統換入的交換頁面(swap page)數量。
 pswpout/s:每秒系統換出的交換頁面(swap page)數量。

sar——設備使用狀況監控

複製代碼
[sdk_test@ssdk1 server]$ sar -d 5 3
Linux 2.6.32-431.11.15.el6.ucloud.x86_64 (ssdk1)     10/28/2016     _x86_64_    (4 CPU)

04:16:22 PM       DEV       tps  rd_sec/s  wr_sec/s  avgrq-sz  avgqu-sz     await     svctm     %util
04:16:27 PM  dev252-0      0.40      0.00      6.41     16.00      0.00      0.00      0.00      0.00
04:16:27 PM dev252-16      0.80      0.00    155.51    194.00      0.00      1.00      1.00      0.08

04:16:27 PM       DEV       tps  rd_sec/s  wr_sec/s  avgrq-sz  avgqu-sz     await     svctm     %util
04:16:32 PM  dev252-0      1.80      0.00     16.03      8.89      0.00      0.00      0.00      0.00
04:16:32 PM dev252-16      1.20      0.00    142.69    118.67      0.00      1.50      0.83      0.10

04:16:32 PM       DEV       tps  rd_sec/s  wr_sec/s  avgrq-sz  avgqu-sz     await     svctm     %util
04:16:37 PM  dev252-0      1.20      0.00     20.80     17.33      0.00      0.00      0.00      0.00
04:16:37 PM dev252-16      1.00      0.00     68.80     68.80      0.00      1.40      1.00      0.10

Average:          DEV       tps  rd_sec/s  wr_sec/s  avgrq-sz  avgqu-sz     await     svctm     %util
Average:     dev252-0      1.13      0.00     14.42     12.71      0.00      0.00      0.00      0.00
Average:    dev252-16      1.00      0.00    122.30    122.13      0.00      1.33      0.93      0.09
複製代碼

 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 的值接近 1% 時,表示設備帶寬已經佔滿。

總結

 要判斷系統瓶頸問題,有時需幾個 sar 命令選項結合起來 懷疑 CPU 存在瓶頸,可用 sar -u 和 sar -q 等來查看 懷疑內存存在瓶頸,可用 sar -B、 sar -r 和 sar -W 等來查看 懷疑 I/O 存在瓶頸,可用 sar -b、 sar -u 和 sar -d 等來查看

相關文章
相關標籤/搜索