Linux sar命令

mikeliuy發表於2016-07-05
# cat /etc/redhat-release
Red Hat Enterprise Linux Server release 6.6 (Santiago)
# sar -h
Usage: sar [ options ] [ <interval> [ <count> ] ]
Main options and reports:
    -b    I/O and transfer rate statistics                    IO和傳輸率統計
    -B    Paging statistics                                   頁統計
    -d    Block device statistics                             塊裝置統計
    -I { <int> | SUM | ALL | XALL }    
        Interrupts statistics                                 中斷統計
    -m    Power management statistics                         電源管理統計
    -n { <keyword> [,...] | ALL }
        Network statistics                                    網路統計
        Keywords are:
        DEV    Network interfaces                             網路介面
        EDEV    Network interfaces (errors)                   網路介面(錯誤)
        NFS        NFS client                                 NFS客戶端
        NFSD    NFS server                                    NFS服務端
        SOCK    Sockets    (v4)                               套接字
        IP        IP traffic    (v4)                          IP流量
        EIP        IP traffic    (v4) (errors)                IP流量(錯誤)
        ICMP    ICMP traffic    (v4)                          ICMP流量
        EICMP    ICMP traffic    (v4) (errors)                ICMP流量(錯誤)
        TCP        TCP traffic    (v4)                        TCP流量
        ETCP    TCP traffic    (v4) (errors)
        UDP        UDP traffic    (v4)                        UDP流量
        SOCK6    Sockets    (v6)
        IP6        IP traffic    (v6)                       
        EIP6    IP traffic    (v6) (errors)
        ICMP6    ICMP traffic    (v6)
        EICMP6    ICMP traffic    (v6) (errors)
        UDP6    UDP traffic    (v6)
    -q    Queue length and load average statistics            佇列長度和平均載入統計
    -r    Memory utilization statistics                       記憶體利用率統計
    -R    Memory statistics                                   記憶體統計
    -S    Swap space utilization statistics                   SWAP交換空間統計
    -u [ ALL ]
         CPU utilization statistics                           CPU利用率統計
    -v    Kernel table statistics                             核心表統計
    -w    Task creation and system switching statistics       任務交換和系統切換統計
    -W    Swapping statistics                                 正交換統計
    -y    TTY device statistics                               TTY裝置統計
    
# sar --help
Usage: sar [ options ] [ <interval> [ <count> ] ]
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> ] ]

在命令列中,<interval> 和<count> 兩個引數組合起來定義取樣間隔和次數,<interval>為取樣間隔,在某些較早版本是必須有的引數;<count>為取樣次數,是可選的。預設值是1。
-o filename表示將命令結果以二進位制格式存放在檔案中。

舉例說明:
一、每10秒取樣一次,連續取樣6次,觀察CPU的使用情況,並將取樣結果以二進位制形式存入當前目錄下的檔案test中:

# sar -u -o test 10 6
Linux 2.6.32-504.el6.x86_64 (node186.test.com)     07/05/2016     _x86_64_    (16 CPU)

09:49:48 AM     CPU     %user     %nice   %system   %iowait    %steal     %idle
09:49:58 AM     all      0.13      0.00      0.09      0.00      0.00     99.78
09:50:08 AM     all      0.16      0.00      0.11      0.00      0.00     99.72
09:50:18 AM     all      0.13      0.00      0.11      0.00      0.00     99.76
09:50:28 AM     all      0.16      0.00      0.12      0.00      0.00     99.72
09:50:38 AM     all      0.14      0.00      0.10      0.00      0.00     99.76
09:50:48 AM     all      0.13      0.00      0.10      0.00      0.00     99.77
Average:        all      0.14      0.00      0.11      0.00      0.00     99.75

說明:
CPU:all 表示統計資訊為所有 CPU 的平均值。
%user:在使用者級別(application)執行使用 CPU 總時間的百分比。
%nice:在使用者級別,用於nice操作,所佔用 CPU 總時間的百分比。
%system:在核心級別(kernel)執行所使用 CPU 總時間的百分比。
%iowait:用於等待I/O操作佔用 CPU 總時間的百分比。
%steal:管理程式(hypervisor)為另一個虛擬程式提供服務而等待虛擬 CPU 的百分比。
%idle:CPU 空閒時間佔用 CPU 總時間的百分比。

一般情況:
1. 若 %iowait 的值過高,表示硬碟存在I/O瓶頸
2. 若 %idle 的值高但系統響應慢時,有可能是 CPU 等待分配記憶體,此時應加大記憶體容量
3. 若 %idle 的值持續低於1,則系統的 CPU 處理能力相對較低,表明系統中最需要解決的資源是 CPU 。

生成的二進位制檔案test,是不能用cat、vim等工具檢視的,需要用下面的命令檢視。
# sar -f test
Linux 2.6.32-504.el6.x86_64 (node186.test.com)     07/05/2016     _x86_64_    (16 CPU)

09:56:41 AM     CPU     %user     %nice   %system   %iowait    %steal     %idle
09:56:51 AM     all      0.13      0.00      0.11      0.01      0.00     99.76
09:57:01 AM     all      0.16      0.00      0.11      0.00      0.00     99.73
09:57:11 AM     all      0.11      0.00      0.09      0.00      0.00     99.80
09:57:21 AM     all      0.14      0.00      0.11      0.00      0.00     99.75
09:57:31 AM     all      0.17      0.00      0.09      0.00      0.00     99.74
09:57:41 AM     all      0.16      0.00      0.11      0.00      0.00     99.74
Average:        all      0.14      0.00      0.10      0.00      0.00     99.75

二、每10秒取樣一次,連續取樣6次,檢視核心表的狀態:
# sar -v 10 6
Linux 2.6.32-504.el6.x86_64 (node186.test.com)     07/05/2016     _x86_64_    (16 CPU)

10:03:40 AM dentunusd   file-nr  inode-nr    pty-nr
10:03:50 AM     97452     15904     44591         2
10:04:00 AM     97460     15904     44593         2
10:04:10 AM     97468     15904     44595         2
10:04:20 AM     97476     15904     44597         2
10:04:30 AM     97488     15904     44600         2
10:04:40 AM     97496     15904     44602         2
Average:        97473     15904     44596         2

說明:
dentunusd:目錄快取記憶體中未被使用的條目數量
file-nr:檔案控制程式碼(file handle)的使用數量
inode-nr:索引節點控制程式碼(inode handle)的使用數量
pty-nr:使用的pty數量

三、每10秒取樣一次,連續取樣6次,監控記憶體分頁:
# sar -r 10 6
Linux 2.6.32-504.el6.x86_64 (node186.test.com)     07/05/2016     _x86_64_    (16 CPU)

10:09:55 AM kbmemfree kbmemused  %memused kbbuffers  kbcached  kbcommit   %commit
10:10:05 AM   1746008   6254368     78.18    503100   1349700   6978880     43.11
10:10:15 AM   1745140   6255236     78.19    503108   1349716   6979372     43.11
10:10:25 AM   1745256   6255120     78.19    503112   1350140   6978892     43.11
10:10:35 AM   1744768   6255608     78.19    503124   1350196   6979384     43.11
10:10:45 AM   1745388   6254988     78.18    503128   1350212   6978892     43.11
10:10:55 AM   1745016   6255360     78.19    503128   1350220   6979384     43.11
Average:      1745263   6255113     78.19    503117   1350031   6979134     43.11

說明:
kbmemfree:這個值和free命令中的free值基本一致,不包括buffer和cache的空間.
kbmemused:這個值和free命令中的used值基本一致,包括buffer和cache的空間.
%memused:這個值是kbmemused和記憶體總量(不包括swap)的一個百分比.
kbbuffers和kbcached:這兩個值就是free命令中的buffer和cache.
kbcommit:保證當前系統所需要的記憶體,即為了確保不溢位而需要的記憶體(RAM+swap).
%commit:這個值是kbcommit與記憶體總量(包括swap)的一個百分比.

四、每10秒取樣一次,連續取樣6次,監控記憶體分頁:
# sar -B 10 6
Linux 2.6.32-504.el6.x86_64 (node186.test.com)     07/05/2016     _x86_64_    (16 CPU)

10:33:02 AM  pgpgin/s pgpgout/s   fault/s  majflt/s  pgfree/s pgscank/s pgscand/s pgsteal/s    %vmeff
10:33:12 AM      0.00     67.40    251.55      0.00    443.33      0.00      0.00      0.00      0.00
10:33:22 AM      0.40     30.89    132.30      0.00    387.96      0.00      0.00      0.00      0.00
10:33:32 AM      0.00     51.35    302.91      0.00    490.07      0.00      0.00      0.00      0.00
10:33:42 AM      0.00     35.74    131.93      0.00    391.27      0.00      0.00      0.00      0.00
10:33:52 AM      0.00     56.11    798.60      0.00    804.71      0.00      0.00      0.00      0.00
10:34:02 AM      0.00     82.81    284.92      0.00    459.80      0.00      0.00      0.00      0.00
Average:         0.07     54.05    317.16      0.00    496.27      0.00      0.00      0.00      0.00

說明:
pgpgin/s:每秒從磁碟或SWAP置換到記憶體的位元組數(KB)
pgpgout/s:每秒從記憶體置換到磁碟或SWAP的位元組數(KB)
fault/s:每秒鐘系統產生的缺頁數,即主缺頁與次缺頁之和(major + minor)
majflt/s:每秒鐘產生的主缺頁數.
pgfree/s:每秒被放入空閒佇列中的頁個數
pgscank/s:每秒被kswapd掃描的頁個數
pgscand/s:每秒直接被掃描的頁個數
pgsteal/s:每秒鐘從cache中被清除來滿足記憶體需要的頁個數
%vmeff:每秒清除的頁(pgsteal)佔總掃描頁(pgscank+pgscand)的百分比

五、每10秒取樣一次,連續取樣6次,監控I/O和傳送速率情況:
# sar -b 10 6
Linux 2.6.32-504.el6.x86_64 (node186.test.com)     07/05/2016     _x86_64_    (16 CPU)

10:39:20 AM       tps      rtps      wtps   bread/s   bwrtn/s
10:39:30 AM     28.39      0.00     28.39      0.00    261.58
10:39:40 AM     14.34      0.00     14.34      0.00    109.13
10:39:50 AM     18.57      0.00     18.57      0.00    194.38
10:40:00 AM     37.31      0.00     37.31      0.00    401.20
10:40:10 AM     13.84      0.00     13.84      0.00    110.73
10:40:20 AM     25.80      0.00     25.80      0.00    273.09
Average:        23.04      0.00     23.04      0.00    225.02

說明:
tps:每秒鐘物理裝置的 I/O 傳輸總量
rtps:每秒鐘從物理裝置讀入的資料總量
wtps:每秒鐘向物理裝置寫入的資料總量
bread/s:每秒鐘從物理裝置讀入的資料量,單位為 塊/s
bwrtn/s:每秒鐘向物理裝置寫入的資料量,單位為 塊/s

六、每10秒取樣一次,連續取樣6次,程式佇列長度和平均負載狀態監控:
# sar -q 10 6
Linux 2.6.32-504.el6.x86_64 (node186.test.com)     07/05/2016     _x86_64_    (16 CPU)

10:43:27 AM   runq-sz  plist-sz   ldavg-1   ldavg-5  ldavg-15
10:43:37 AM         1       908      0.00      0.00      0.00
10:43:47 AM         1       908      0.00      0.00      0.00
10:43:57 AM         1       907      0.00      0.00      0.00
10:44:07 AM         1       907      0.00      0.00      0.00
10:44:17 AM         1       907      0.00      0.00      0.00
10:44:27 AM         1       907      0.00      0.00      0.00
Average:            1       907      0.00      0.00      0.00

說明:
runq-sz:執行佇列的長度(等待執行的程式數)
plist-sz:程式列表中程式(processes)和執行緒(threads)的數量
ldavg-1:最後1分鐘的系統平均負載(System load average)
ldavg-5:過去5分鐘的系統平均負載
ldavg-15:過去15分鐘的系統平均負載

七、每10秒取樣一次,連續取樣6次,監控系統交換活動資訊:
# sar -W 10 6
Linux 2.6.32-504.el6.x86_64 (node186.test.com)     07/05/2016     _x86_64_    (16 CPU)

10:56:24 AM  pswpin/s pswpout/s
10:56:34 AM      1.62     18.99
10:56:44 AM      0.00      1.83
10:56:54 AM      0.00      0.00
10:57:04 AM      0.00      0.00
10:57:14 AM      0.00      0.00
10:57:24 AM      0.00      0.00
Average:         0.27      3.49

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


八、每10秒取樣一次,連續取樣1次,監控裝置使用情況:
# sar -d 10 1
Linux 2.6.32-504.el6.x86_64 (node186.test.com)     07/05/2016     _x86_64_    (16 CPU)

11:00:45 AM       DEV       tps  rd_sec/s  wr_sec/s  avgrq-sz  avgqu-sz     await     svctm     %util
11:00:55 AM    dev8-0     37.16      0.81    395.53     10.67      0.00      0.07      0.03      0.11
11:00:55 AM   dev8-16      0.20      0.00      0.81      4.00      0.00      0.00      0.00      0.00
11:00:55 AM  dev253-0      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
11:00:55 AM  dev253-1     61.62      0.81    395.53      6.43      0.00      0.07      0.02      0.10
11:00:55 AM  dev253-2      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
11:00:55 AM  dev253-3      0.20      0.00      0.81      4.00      0.00      0.00      0.00      0.00

Average:          DEV       tps  rd_sec/s  wr_sec/s  avgrq-sz  avgqu-sz     await     svctm     %util
Average:       dev8-0     37.16      0.81    395.53     10.67      0.00      0.07      0.03      0.11
Average:      dev8-16      0.20      0.00      0.81      4.00      0.00      0.00      0.00      0.00
Average:     dev253-0      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
Average:     dev253-1     61.62      0.81    395.53      6.43      0.00      0.07      0.02      0.10
Average:     dev253-2      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
Average:     dev253-3      0.20      0.00      0.81      4.00      0.00      0.00      0.00      0.00

# sar -dp 10 1      #加入p,DEV顯示使用者直觀的裝置名
Linux 2.6.32-504.el6.x86_64 (node186.test.com)     07/05/2016     _x86_64_    (16 CPU)

11:01:06 AM       DEV       tps  rd_sec/s  wr_sec/s  avgrq-sz  avgqu-sz     await     svctm     %util
11:01:16 AM       sda      2.13      0.00     82.59     38.86      0.00      0.43      0.43      0.09
11:01:16 AM       sdb      2.02      0.00    208.91    103.20      0.00      0.15      0.10      0.02
11:01:16 AM vg_swap-lv_swap      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
11:01:16 AM vg_boot-lv_root     10.73      0.00     82.59      7.70      0.02      1.67      0.08      0.09
11:01:16 AM vg_nfs-lv_nfs      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
11:01:16 AM vg_disk-lv_disk     26.62      0.00    208.91      7.85      0.00      0.05      0.01      0.02

Average:          DEV       tps  rd_sec/s  wr_sec/s  avgrq-sz  avgqu-sz     await     svctm     %util
Average:          sda      2.13      0.00     82.59     38.86      0.00      0.43      0.43      0.09
Average:          sdb      2.02      0.00    208.91    103.20      0.00      0.15      0.10      0.02
Average:    vg_swap-lv_swap      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
Average:    vg_boot-lv_root     10.73      0.00     82.59      7.70      0.02      1.67      0.08      0.09
Average:    vg_nfs-lv_nfs      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
Average:    vg_disk-lv_disk     26.62      0.00    208.91      7.85      0.00      0.05      0.01      0.02

說明:
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% 時,表示裝置頻寬已經佔滿。

九、綜合考慮:
1、如果CPU存在瓶頸,可用 sar -u 和 sar -q 等來檢視;
2、如果記憶體存在瓶頸,可用 sar -B、sar -r 和 sar -W 等來檢視;
3、如果I/O存在瓶頸,可用 sar -b、sar -u 和 sar -d 等來檢視。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/26812308/viewspace-2121509/,如需轉載,請註明出處,否則將追究法律責任。

相關文章