1. 程式人生 > 其它 >一天一個 Linux 命令(38):sar 命令

一天一個 Linux 命令(38):sar 命令

一、簡介

Linux下的sar(英文全稱:System Activity Reporter,系統活動情況報告)是系統執行狀態統計工具的命令,它將指定的作業系統狀態計數器顯示到標準輸出裝置。

sar工具將對系統當前的狀態進行取樣,然後通過計算資料和比例來表達系統的當前執行狀態。它的特點是可以連續對系統取樣,獲得大量的取樣資料。取樣資料和分析的結果都可以存入檔案,使用它時消耗的系統資源很小。

sar是目前 Linux上最為全面的系統性能分析工具之一,可以從多方面對系統的活動進行報告,包括:檔案的讀寫情況、系統呼叫的使用情況、磁碟I/O、CPU效率、記憶體使用狀況、程序活動及IPC有關的活動等。

如果系統沒有安裝,可以通過sudo yum install sysstat來安裝。

二、格式說明

sar [ options ] [ <interval> [ <count> ] ]
sar [引數]

Usage: sar [ options ] [ <interval> [ <count> ] ]
Options are:
[ -A ] [ -B ] [ -b ] [ -C ] [ -d ] [ -F [ MOUNT ] ] [ -H ] [ -h ] [ -p ] [ -q ] [ -R ]
[ -r ] [ -S ] [ -t ] [ -u [ ALL ] ] [ -V ] [ -v ] [ -W ] [ -w ] [ -y ]
[ -I { <int> [,...] | SUM | ALL | XALL } ] [ -P { <cpu> [,...] | ALL } ]
[ -m { <keyword> [,...] | ALL } ] [ -n { <keyword> [,...] | ALL } ]
[ -j { ID | LABEL | PATH | UUID | ... } ]
[ -f [ <filename> ] | -o [ <filename> ] | -[0-9]+ ]
[ -i <interval> ] [ -s [ <hh:mm:ss> ] ] [ -e [ <hh:mm:ss> ] ]

三、選項說明

-A 所有報告的總和

-b 顯示I/O和傳遞速率的統計資訊

-B 顯示換頁狀態

-d 輸出每一塊磁碟的使用資訊

-e 設定顯示報告的結束時間

-f 從制定的檔案讀取報告

-i 設定狀態資訊重新整理的間隔時間

-P 報告每個CPU的狀態

-R 顯示記憶體狀態

–u 輸出cpu使用情況和統計資訊

–v 顯示索引節點、檔案和其他核心表的狀態

-w 顯示交換分割槽的狀態

-x 顯示給定程序的裝

-r 報告記憶體利用率的統計資訊

四、命令功能

五、常見用法

5.1 使用-R引數顯示記憶體狀態

# sar -R

#每間隔1秒統計一次記憶體狀態
# sar -R 1

#每間隔1秒統計一次記憶體狀態,總共統計5次
# sar -R 1 5

5.2 使用-r報告記憶體利用率的統計資訊

# sar -r

#每間隔1秒統計一次記憶體利用率
# sar -r 1

#每間隔1秒統計一次記憶體利用率,總共統計5次
# sar -r 1 5

10:15:52 AM kbmemfree kbmemused  %memused kbbuffers  kbcached  kbcommit   %commit  kbactive   kbinact   kbdirty
10:15:53 AM    418204   7590452     94.78    211956   4688244   3511820     43.85   4589848   2338480       400
10:15:54 AM    417956   7590700     94.78    211956   4688244   3511820     43.85   4589848   2338480        92
10:15:55 AM    417956   7590700     94.78    211956   4688244   3511820     43.85   4589848   2338480        92
10:15:56 AM    417832   7590824     94.78    211956   4688252   3511824     43.85   4589848   2338488       100
10:15:57 AM    417460   7591196     94.79    211956   4688252   3511828     43.85   4589868   2338484       100
Average:       417882   7590774     94.78    211956   4688247   3511822     43.85   4589852   2338482       157

# kbmemfree  空閒的實體記憶體大小

# kbmemused  使用中的實體記憶體大小

# %memused 實體記憶體使用率

# kbbuffers 核心中作為緩衝區使用的實體記憶體大小,kbbuffers和kbcached:這兩個值就是free命令中的buffer和cache. 

# kbcached 快取的檔案大小

# kbcommit  保證當前系統正常執行所需要的最小記憶體,即為了確保記憶體不溢位而需要的最少記憶體(實體記憶體+Swap分割槽)

# commit 這個值是kbcommit與記憶體總量(實體記憶體+swap分割槽)的一個百分比的值

5.3 使用-b引數顯示I/O速率

# sar -b

#每間隔1秒統計一次I/O速率
# sar -b 1

#每間隔1秒統計一次I/O速率,總共統計5次
# sar -b 1 5

10:18:56 AM       tps      rtps      wtps   bread/s   bwrtn/s
10:18:57 AM      0.00      0.00      0.00      0.00      0.00
10:18:58 AM      0.00      0.00      0.00      0.00      0.00
10:18:59 AM      2.00      0.00      2.00      0.00     72.00
10:19:00 AM      1.00      0.00      1.00      0.00      8.00
10:19:01 AM      3.00      0.00      3.00      0.00     40.00
Average:         1.20      0.00      1.20      0.00     24.00

# tps  磁碟每秒鐘的IO總數,等於iostat中的tps

# rtps 每秒鐘從磁碟讀取的IO總數

# wtps 每秒鐘從寫入到磁碟的IO總數

# bread/s 每秒鐘從磁碟讀取的塊總數

# bwrtn/s 每秒鐘此寫入到磁碟的塊總數

5.4 使用-d引數檢視磁碟使用詳情統計

# sar -d

#每間隔1秒檢視磁碟使用詳情統計
# sar -d 1

#每間隔1秒檢視磁碟使用詳情統計,總共統計5次
# sar -d 1 5

10:21:49 AM       DEV       tps  rd_sec/s  wr_sec/s  avgrq-sz  avgqu-sz     await     svctm     %util
10:21:50 AM  dev253-0      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
10:21:50 AM   dev11-0      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00

10:21:50 AM       DEV       tps  rd_sec/s  wr_sec/s  avgrq-sz  avgqu-sz     await     svctm     %util
10:21:51 AM  dev253-0      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
10:21:51 AM   dev11-0      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00

10:21:51 AM       DEV       tps  rd_sec/s  wr_sec/s  avgrq-sz  avgqu-sz     await     svctm     %util
10:21:52 AM  dev253-0      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
10:21:52 AM   dev11-0      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00

10:21:52 AM       DEV       tps  rd_sec/s  wr_sec/s  avgrq-sz  avgqu-sz     await     svctm     %util
10:21:53 AM  dev253-0      2.00      0.00     72.00     36.00      0.00      1.50      0.50      0.10
10:21:53 AM   dev11-0      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00

10:21:53 AM       DEV       tps  rd_sec/s  wr_sec/s  avgrq-sz  avgqu-sz     await     svctm     %util
10:21:54 AM  dev253-0      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
10:21:54 AM   dev11-0      0.00      0.00      0.00      0.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:     dev253-0      0.40      0.00     14.40     36.00      0.00      1.50      0.50      0.02
Average:      dev11-0      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00


#DEV 磁碟裝置的名稱,如果不加-p,會顯示dev253-0類似的裝置名稱,因此加上-p顯示的名稱更直接

# tps:每秒I/O的傳輸總數

# rd_sec/s 每秒讀取的扇區的總數

# wr_sec/s 每秒寫入的扇區的 總數

# avgrq-sz 平均每次次磁碟I/O操作的資料大小(扇區)

# avgqu-sz 磁碟請求佇列的平均長度

# await 從請求磁碟操作到系統完成處理,每次請求的平均消耗時間,包括請求佇列等待時間,單位是毫秒(1秒等於1000毫秒),等於尋道時間+佇列時間+服務時間

# svctm I/O的服務處理時間,即不包括請求佇列中的時間

# %util I/O請求佔用的CPU百分比,值越高,說明I/O越慢

5.5 使用-u引數顯示CPU利用率

# sar -u

#每間隔1秒統計一次CPU利用率
# sar -u 1

#每間隔1秒統計一次CPU的使用情況,總共統計5次
# sar -u 1 5

10:01:57 AM     CPU     %user     %nice   %system   %iowait    %steal     %idle
10:01:58 AM     all      0.00      0.00      0.25      0.00      0.00     99.75
10:01:59 AM     all      0.25      0.00      0.25      0.00      0.00     99.50
10:02:00 AM     all      0.25      0.00      0.00      0.00      0.00     99.75
10:02:01 AM     all      0.00      0.00      0.25      0.00      0.00     99.75
10:02:02 AM     all      4.75      0.00      1.75      0.25      0.00     93.25
Average:        all      1.05      0.00      0.50      0.05      0.00     98.40

#其中
# %user #使用者空間的CPU使用

# %nice 改變過優先順序的程序的CPU使用率

# %system 核心空間的CPU使用率

# %iowait CPU等待IO的百分比 

# %steal 虛擬機器的虛擬機器CPU使用的CPU

# %idle 空閒的CPU

在以上引數中,主要看%iowait和%idle,%iowait過高表示存在I/O瓶頸,即磁碟IO無法滿足業務需求,如果%idle過低表示CPU使用率比較嚴重,需要結合記憶體使用等情況判斷CPU是否瓶頸。  

5.6 使用-p引數顯示CPU的使用狀態

# sar -p 

#每間隔1秒統計一次CPU的使用狀態
# sar -p 1

#每間隔1秒統計一次CPU的使用狀態,總共統計5次
# sar -p 1 5

10:06:33 AM     CPU     %user     %nice   %system   %iowait    %steal     %idle
10:06:34 AM     all      0.25      0.00      0.25      0.00      0.00     99.50
10:06:35 AM     all      0.25      0.00      0.25      0.00      0.00     99.50
10:06:36 AM     all      0.00      0.00      0.25      0.00      0.00     99.75
10:06:37 AM     all      0.50      0.00      0.25      0.00      0.00     99.25
10:06:38 AM     all      0.00      0.00      0.00      0.00      0.00    100.00
Average:        all      0.20      0.00      0.20      0.00      0.00     99.60

5.7 使用-q引數檢視平均負載

# sar -q#每間隔1秒統計一次系統負載#sar -q 1#每間隔1秒統計一次系統負載,總共統計5次#sar -q 1 510:23:11 AM   runq-sz  plist-sz   ldavg-1   ldavg-5  ldavg-15   blocked10:23:12 AM         0       264      0.01      0.02      0.05         010:23:13 AM         0       265      0.01      0.02      0.05         010:23:14 AM         0       265      0.01      0.02      0.05         010:23:15 AM         0       264      0.01      0.02      0.05         010:23:16 AM         0       264      0.01      0.02      0.05         0Average:            0       264      0.01      0.02      0.05         0# runq-sz  執行佇列的長度(等待執行的程序數,每核的CP不能超過3個)# plist-sz 程序列表中的程序(processes)和執行緒數(threads)的數量# ldavg-1 最後1分鐘的CPU平均負載,即將多核CPU過去一分鐘的負載相加再除以核心數得出的平均值,5分鐘和15分鐘以此類推# ldavg-5 最後5分鐘的CPU平均負載# ldavg-15 最後15分鐘的CPU平均負載

5.8 使用-v引數檢視程序、inode、檔案和鎖表狀態

# sar -v#每間隔1秒檢視程序、inode、檔案和鎖表狀態# sar -v 1#每間隔1秒檢視程序、inode、檔案和鎖表狀態,總共統計5次# sar -v 1 510:25:00 AM dentunusd   file-nr  inode-nr    pty-nr10:25:01 AM    722442      2496    173855         310:25:02 AM    722466      2496    173863         310:25:03 AM    722466      2496    173863         310:25:04 AM    722466      2496    173863         310:25:05 AM    722466      2496    173863         3Average:       722461      2496    173861         3# dentunusd 在緩衝目錄條目中沒有使用的條目數量# file-nr 被系統使用的檔案控制代碼數量# inode-nr 已經使用的索引數量 # pty-nr 使用的pty數量#這裡面的索引和檔案控制代碼值不是ulimit -a檢視到的值,而是sysctl.conf裡面定義的和核心相關的值, max-file表示系統級別的能夠開啟的檔案控制代碼的數量, 而ulimit -n控制程序級別能夠開啟的檔案控制代碼的數量,可以使用sysctl  -a | grep inode和sysctl  -a | grep file檢視,具體含義如下:file-max中指定了系統範圍內所有程序可開啟的檔案控制代碼的數量限制(系統級別, kernel-level)。 (The value in file-max denotes the maximum number of file handles that the Linux kernel will allocate)。當收到"Too many open files in system"這樣的錯誤訊息時, 就應該曾加這個值了。# cat /proc/sys/fs/file-max791241# echo 100000 > /proc/sys/fs/file-max或者# echo "fs.file-max=65535" >> /etc/sysctl.conf# sysctl -pnet.ipv4.ip_forward = 0net.ipv4.conf.default.rp_filter = 1net.ipv4.conf.default.accept_source_route = 0kernel.core_uses_pid = 1net.ipv4.tcp_syncookies = 1kernel.msgmnb = 65536kernel.msgmax = 65536net.ipv4.conf.all.promote_secondaries = 1net.ipv4.conf.default.promote_secondaries = 1net.ipv6.neigh.default.gc_thresh3 = 4096net.ipv4.neigh.default.gc_thresh3 = 4096kernel.softlockup_panic = 1kernel.sysrq = 1net.ipv6.conf.all.disable_ipv6 = 0net.ipv6.conf.default.disable_ipv6 = 0net.ipv6.conf.lo.disable_ipv6 = 0kernel.numa_balancing = 0kernel.shmmax = 68719476736kernel.printk = 5fs.file-max = 65535# cat /proc/sys/fs/file-nr2496    0       65535file-nr 可以檢視系統中當前開啟的檔案控制代碼的數量。 他裡面包括3個數字: 第一個表示已經分配了的檔案描述符數量, 第二個表示空閒的檔案控制代碼數量, 第三個表示能夠開啟檔案控制代碼的最大值(跟file-max一致)。  核心會動態的分配檔案控制代碼, 但是不會再次釋放他們(這個可能不適應最新的核心了,在我的file-nr中看到第二列一直為0, 第一列有增有減)	man bash, 找到說明ulimit的那一節:提供對shell及其啟動的程序的可用資源(包括檔案控制代碼, 程序數量, core檔案大小等)的控制。 這是程序級別的, 也就是說系統中某個session及其啟動的每個程序能開啟多少個檔案描述符, 能fork出多少個子程序等... 當達到上限時, 會報錯"Too many open files"或者遇上Socket/File: Can’t open so many files等

5.9 使用-n引數統計網路資訊

# sar -n#sar -n選項使用6個不同的開關:DEV,EDEV,NFS,NFSD,SOCK,IP,EIP,ICMP,EICMP,TCP,ETCP,UDP,SOCK6,IP6,EIP6,ICMP6,EICMP6和UDP6 ,DEV顯示網路介面資訊,EDEV顯示關於網路錯誤的統計資料,NFS統計活動的NFS客戶端的資訊,NFSD統計NFS伺服器的資訊,SOCK顯示套接字資訊,ALL顯示所有5個開關。它們可以單獨或者一起使用。 #每間隔1秒統計網路資訊# sar -n DEV 1#每間隔1秒統計網路資訊,總共統計5次# sar -n DEV 1 510:35:40 AM     IFACE   rxerr/s   txerr/s    coll/s  rxdrop/s  txdrop/s  txcarr/s  rxfram/s  rxfifo/s  txfifo/s10:35:41 AM      eth0      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.0010:35:41 AM        lo      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.0010:35:41 AM     IFACE   rxerr/s   txerr/s    coll/s  rxdrop/s  txdrop/s  txcarr/s  rxfram/s  rxfifo/s  txfifo/s10:35:42 AM      eth0      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.0010:35:42 AM        lo      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.0010:35:42 AM     IFACE   rxerr/s   txerr/s    coll/s  rxdrop/s  txdrop/s  txcarr/s  rxfram/s  rxfifo/s  txfifo/s10:35:43 AM      eth0      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.0010:35:43 AM        lo      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.0010:35:43 AM     IFACE   rxerr/s   txerr/s    coll/s  rxdrop/s  txdrop/s  txcarr/s  rxfram/s  rxfifo/s  txfifo/s10:35:44 AM      eth0      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.0010:35:44 AM        lo      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.0010:35:44 AM     IFACE   rxerr/s   txerr/s    coll/s  rxdrop/s  txdrop/s  txcarr/s  rxfram/s  rxfifo/s  txfifo/s10:35:45 AM      eth0      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.0010:35:45 AM        lo      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00Average:        IFACE   rxerr/s   txerr/s    coll/s  rxdrop/s  txdrop/s  txcarr/s  rxfram/s  rxfifo/s  txfifo/sAverage:         eth0      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00Average:           lo      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00# IFACE 本地網絡卡介面的名稱# rxpck/s 每秒鐘接受的資料包# txpck/s 每秒鐘傳送的資料庫# rxKB/S 每秒鐘接受的資料包大小,單位為KB# txKB/S 每秒鐘傳送的資料包大小,單位為KB# rxcmp/s 每秒鐘接受的壓縮資料包# txcmp/s 每秒鐘傳送的壓縮包# rxmcst/s 每秒鐘接收的多播資料包    

5.10 使用-n引數統計網路裝置通訊失敗資訊

#每間隔1秒統計網路裝置通訊失敗資訊# sar -n EDEV 1#每間隔1秒統計網路裝置通訊失敗資訊,總共統計5次# sar -n EDEV 1 510:47:30 AM     IFACE   rxerr/s   txerr/s    coll/s  rxdrop/s  txdrop/s  txcarr/s  rxfram/s  rxfifo/s  txfifo/s10:47:31 AM      eth0      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.0010:47:31 AM        lo      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.0010:47:31 AM     IFACE   rxerr/s   txerr/s    coll/s  rxdrop/s  txdrop/s  txcarr/s  rxfram/s  rxfifo/s  txfifo/s10:47:32 AM      eth0      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.0010:47:32 AM        lo      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.0010:47:32 AM     IFACE   rxerr/s   txerr/s    coll/s  rxdrop/s  txdrop/s  txcarr/s  rxfram/s  rxfifo/s  txfifo/s10:47:33 AM      eth0      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.0010:47:33 AM        lo      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.0010:47:33 AM     IFACE   rxerr/s   txerr/s    coll/s  rxdrop/s  txdrop/s  txcarr/s  rxfram/s  rxfifo/s  txfifo/s10:47:34 AM      eth0      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.0010:47:34 AM        lo      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.0010:47:34 AM     IFACE   rxerr/s   txerr/s    coll/s  rxdrop/s  txdrop/s  txcarr/s  rxfram/s  rxfifo/s  txfifo/s10:47:35 AM      eth0      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.0010:47:35 AM        lo      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00Average:        IFACE   rxerr/s   txerr/s    coll/s  rxdrop/s  txdrop/s  txcarr/s  rxfram/s  rxfifo/s  txfifo/sAverage:         eth0      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00Average:           lo      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00# IFACE 網絡卡名稱# rxerr/s 每秒鐘接收到的損壞的資料包# txerr/s 每秒鐘傳送的資料包錯誤數# coll/s 當傳送資料包時候,每秒鐘發生的衝撞(collisions)數,這個是在半雙工模式下才有# rxdrop/s 當由於緩衝區滿的時候,網絡卡裝置接收端每秒鐘丟掉的網路包的數目# txdrop/s 當由於緩衝區滿的時候,網路裝置傳送端每秒鐘丟掉的網路包的數目# txcarr/s  當傳送資料包的時候,每秒鐘載波錯誤發生的次數# rxfram   在接收資料包的時候,每秒鐘發生的幀對其錯誤的次數# rxfifo    在接收資料包的時候,每秒鐘緩衝區溢位的錯誤發生的次數# txfifo    在發生資料包 的時候,每秒鐘緩衝區溢位的錯誤發生的次數

5.11 使用-n引數統計socket連線資訊

#每間隔1秒統計socket連線資訊# sar -n SOCK 1#每間隔1秒統計socket連線資訊,總共統計5次# sar -n SOCK 1 510:49:36 AM    totsck    tcpsck    udpsck    rawsck   ip-frag    tcp-tw10:49:37 AM       503       247         3         0         0         310:49:38 AM       503       247         3         0         0         310:49:39 AM       503       247         3         0         0         210:49:40 AM       503       247         3         0         0         210:49:41 AM       503       247         3         0         0         2Average:          503       247         3         0         0         2# totsck 當前被使用的socket總數# tcpsck 當前正在被使用的TCP的socket總數# udpsck  當前正在被使用的UDP的socket總數# rawsck 當前正在被使用於RAW的skcket總數# if-frag  當前的IP分片的數目# tcp-tw TCP套接字中處於TIME-WAIT狀態的連線數量#如果你使用FULL關鍵字,相當於上述DEV、EDEV和SOCK三者的綜合 

5.12 使用-n引數統計TCP連線資訊

#每間隔1秒統計TCP連線資訊# sar -n TCP 1#每間隔1秒統計TCP連線資訊,總共統計5次# sar -n TCP 1 510:51:35 AM  active/s passive/s    iseg/s    oseg/s10:51:36 AM      1.00      0.00      7.00      6.0010:51:37 AM      1.00      0.00     11.00     10.0010:51:38 AM      1.00      0.00      7.00      7.0010:51:39 AM      0.00      0.00      1.00      1.0010:51:40 AM      0.00      0.00      1.00      1.00Average:         0.60      0.00      5.40      5.00# active/s 新的主動連線# passive/s 新的被動連線# iseg/s 接受的段# oseg/s 輸出的段

5.13 sar -n 使用總結

# sar -n DEV : 網路介面統計資訊。# sar -n EDEV : 網路介面錯誤。# sar -n IP : IP資料報統計資訊。# sar -n EIP : IP錯誤統計資訊。# sar -n TCP : TCP統計資訊。# sar -n ETCP : TCP錯誤統計資訊。# sar -n SOCK : 套接字使用。
Bsh

5.14 將統計結果儲存在檔案並從檔案讀取內容

#sar -u -o /tmp/tmp1.txt 1 5 #儲存之檔案,儲存後的檔案是二進位制的,無法使用vim和cat直接開啟# sar -u -f /tmp/tmp1.txt #從二進位制檔案讀取

5.15 其他命令使用匯總

預設監控: sar 1 5     //  CPU和IOWAIT統計狀態 (1) sar -b 1 5        // IO傳送速率(2) sar -B 1 5        // 頁交換速率(3) sar -c 1 5        // 程序建立的速率(4) sar -d 1 5        // 塊裝置的活躍資訊(5) sar -n DEV 1 5    // 網路裝置的狀態資訊(6) sar -n SOCK 1 5   // SOCK的使用情況(7) sar -n ALL 1 5    // 所有的網路狀態資訊(8) sar -P ALL 1 5    // 每顆CPU的使用狀態資訊和IOWAIT統計狀態 (9) sar -q 1 5        // 佇列的長度(等待執行的程序數)和負載的狀態(10) sar -r 1 5       // 記憶體和swap空間使用情況(11) sar -R 1 5       // 記憶體的統計資訊(記憶體頁的分配和釋放、系統每秒作為BUFFER使用記憶體頁、每秒被cache到的記憶體頁)(12) sar -u 1 5       // CPU的使用情況和IOWAIT資訊(同預設監控)(13) sar -v 1 5       // inode, file and other kernel tablesd的狀態資訊(14) sar -w 1 5       // 每秒上下文交換的數目(15) sar -W 1 5       // SWAP交換的統計資訊(監控狀態同iostat 的si so)(16) sar -x 2906 1 5  // 顯示指定程序(2906)的統計資訊,資訊包括:程序造成的錯誤、使用者級和系統級使用者CPU的佔用情況、執行在哪顆CPU上(17) sar -y 1 5       // TTY裝置的活動狀態(18) sar -u -o /tmp/temp1.txt 1 5 #儲存之檔案,儲存後的檔案是二進位制的,無法使用vim和cat直接開啟(19) sar -u -f /tmp/temp1.txt #從二進位制檔案讀取,將輸出到檔案(-o)和讀取記錄資訊(-f)

5.15 拓展

(1) sysstat

sysstat 是 Linux 系統中的常用工具包。它的主要用途是觀察服務負載,比如CPU和記憶體的佔用率、網路的使用率以及磁碟寫入和讀取速度等。

sysstat 工具包中包含兩類工具:

  • 即時檢視工具:iostat、mpstat、sar
  • 累計統計工具:sar

也就是說,sar 具有這兩種功能。因此,sar 是 sysstat 中的核心工具。

為了實現 sar 的累計統計,系統必須週期地記錄當時的資訊,這是通過呼叫 /usr/lib/sa/ 中的三個工具實現的:

  • sa1 :收集並存儲每天系統動態資訊到一個二進位制的檔案中,用作 sadc 的前端程式
  • sa2 :收集每天的系統活躍資訊寫入總結性的報告,用作 sar 的前端程式
  • sadc :系統動態資料收集工具,收集的資料被寫入一個二進位制的檔案中,它被用作 sar 工具的後端

在 CentOS 系統的預設設定中,以如下的方式使用這三個工具:

  1. 在守護程序 /etc/rc.d/init.d/sysstat 中使用/usr/lib/sa/sadc -F -L -命令建立當日記錄檔案,檔案為/var/log/sa/saDD,其中 DD 為當天的日期。當系統重新啟動後,會向檔案/var/log/sa/saDD輸出類似11: 37:16 AM LINUX RESTART這樣的行資訊。
  2. 在 cron 任務 /etc/cron.d/sysstat 中每隔10分鐘執行一次/usr/lib/sa/sa1 1 1命令,將資訊寫入檔案/var/log/sa/saDD
  3. 在 cron 任務 /etc/cron.d/sysstat 中每天 23:53 執行一次/usr/lib/sa/sa2 -A命令,將當天的彙總資訊寫入檔案/var/log/sa/saDD

可以修改 /etc/cron.d/sysstat 以適合您的需要。

另外,檔案/var/log/sa/saDD為二進位制檔案,不能使用 more、less 等文字工具檢視,必須用 sar 或 sadf 命令檢視。

(2) 另外,網路相關的錯誤排查,可以有幾種方式:

1 找系統類的錯誤, dmesg | tail2 直接的網路錯誤 sar -n ETCP 1 或者 sar -n EDEV 13 檢視網路狀態, netstat -s 或者 watch -d netstat -s4 網路狀態的統計 ss -ant | awk '{++s[$1]} END {for(k in s) print k,s[k]}'

(3) 要判斷一個系統瓶頸問題,有時需要幾個 sar 命令選項結合起來使用,例如:

  • 懷疑CPU存在瓶頸,可用sar -usar -q等命令來檢視
  • 懷疑記憶體存在瓶頸,可用sar -Bsar -rsar -W等命令來檢視
  • 懷疑I/O存在瓶頸,可用sar -bsar -usar -d等命令來檢視