轉載 sar命令詳解

原文: [url]http://blogold.chinaunix.net/u/27852/showart_216753.html [/url]


sar 命令行的常用格式:
sar [options] [-A] [-o file] t [n]

在命令行中,n 和t 兩個參數組合起來定義採樣間隔和次數,t爲採樣間隔,是必須有
的參數,n爲採樣次數,是可選的,默認值是1,-o file表示將命令結果以二進制格式
存放在文件中,file 在此處不是關鍵字,是文件名。options 爲命令行選項,sar命令
的選項很多,下面只列出常用選項:
      -A:所有報告的總和。
         -u:CPU利用率
         -v:進程、I節點、文件和鎖表狀態。
         -d:硬盤使用報告。
         -r:沒有使用的內存頁面和硬盤塊。
         -g:串口I/O的情況。
-b:緩衝區使用情況。
-a:文件讀寫情況。
-c:系統調用情況。
-R:進程的活動情況。
-y:終端設備活動情況。
-w:系統交換活動。

下面將舉例說明。

例一:使用命令行 sar -u t n

例如,每60秒採樣一次,連續採樣5次,觀察CPU 的使用情況,並將採樣結果以二進制
形式存入當前目錄下的文件zhou中,需鍵入如下命令:

# sar -u -o zhou 60 5

屏幕顯示:

  SCO_SV   scosysv 3.2v5.0.5 i80386   10/01/2001
     14:43:50   %usr   %sys  %wio    %idle(-u)
     14:44:50   0     1    4      94
     14:45:50   0     2    4      93
     14:46:50   0     2    2      96
     14:47:50   0     2    5      93
     14:48:50   0     2    2      96
     Average    0     2    4      94
在顯示內容包括:
  %usr:CPU處在用戶模式下的時間百分比。
   %sys:CPU處在系統模式下的時間百分比。
   %wio:CPU等待輸入輸出完成時間的百分比。
   %idle:CPU空閒時間百分比。
在所有的顯示中,我們應主要注意%wio和%idle,%wio的值過高,表示硬盤存在I/O瓶頸,%idle值高,表示CPU較空閒,如果%idle值高但系統響應慢時,有可能是CPU等待分配內存, 此時應加大內存容量。%idle值如果持續低於10,那麼系統的CPU處理能力相對較低,表明系統中最需要解決的資源是CPU。
如果要查看二進制文件zhou中的內容,則需鍵入如下sar命令:
    # sar -u -f zhou
可見,sar命令即可以實時採樣,又可以對以往的採樣結果進行查詢。

例二:使用命行sar -v t n

例如,每30秒採樣一次,連續採樣5次,觀察覈心表的狀態,需鍵入如下命令:

# sar -v 30 5

屏幕顯示:
       SCO_SV scosysv 3.2v5.0.5 i80386 10/01/2001
       10:33:23 proc-sz ov inod-sz ov file-sz ov lock-sz   (-v)
10:33:53 305/ 321  0 1337/2764  0 1561/1706 0 40/ 128
10:34:23 308/ 321  0 1340/2764  0 1587/1706 0 37/ 128
10:34:53 305/ 321  0 1332/2764  0 1565/1706 0 36/ 128
10:35:23 308/ 321  0 1338/2764  0 1592/1706 0 37/ 128
10:35:53 308/ 321  0 1335/2764  0 1591/1706 0 37/ 128

顯示內容包括:

proc-sz:目前核心中正在使用或分配的進程表的表項數,由核心參數MAX-PROC控制。

  inod-sz:目前核心中正在使用或分配的i節點表的表項數,由核心參數
MAX-INODE控制。

  file-sz: 目前核心中正在使用或分配的文件表的表項數,由核心參數MAX-FILE控
制。

  ov:溢出出現的次數。

  Lock-sz:目前核心中正在使用或分配的記錄加鎖的表項數,由核心參數MAX-FLCKRE
控制。

顯示格式爲

實際使用表項/可以使用的表項數

顯示內容表示,核心使用完全正常,三個表沒有出現溢出現象,核心參數不需調整,如
果出現溢出時,要調整相應的核心參數,將對應的表項數加大。

例三:使用命行sar -d t n
例如,每30秒採樣一次,連續採樣5次,報告設備使用情況,需鍵入如下命令:
# sar -d 30 5
屏幕顯示:
      SCO_SV scosysv 3.2v5.0.5 i80386 10/01/2001
11:06:43 device %busy   avque   r+w/s  blks/s  avwait avserv (-d)
11:07:13 wd-0   1.47   2.75   4.67   14.73   5.50 3.14
11:07:43 wd-0   0.43   18.77   3.07   8.66   25.11 1.41
11:08:13 wd-0   0.77   2.78   2.77   7.26   4.94 2.77
11:08:43 wd-0   1.10   11.18   4.10   11.26   27.32 2.68
11:09:13 wd-0   1.97   21.78   5.86   34.06   69.66 3.35
Average wd-0   1.15   12.11   4.09   15.19   31.12 2.80

顯示內容包括:
device: sar命令正在監視的塊設備的名字。
   %busy: 設備忙時,傳送請求所佔時間的百分比。
   avque: 隊列站滿時,未完成請求數量的平均值。
   r+w/s: 每秒傳送到設備或從設備傳出的數據量。
   blks/s: 每秒傳送的塊數,每塊512字節。
   avwait: 隊列佔滿時傳送請求等待隊列空閒的平均時間。
   avserv: 完成傳送請求所需平均時間(毫秒)。

在顯示的內容中,wd-0是硬盤的名字,%busy的值比較小,說明用於處理傳送請求的有
效時間太少,文件系統效率不高,一般來講,%busy值高些,avque值低些,文件系統
的效率比較高,如果%busy和avque值相對比較高,說明硬盤傳輸速度太慢,需調整。
例四:使用命行sar -b t n
例如,每30秒採樣一次,連續採樣5次,報告緩衝區的使用情況,需鍵入如下命令:
# sar -b 30 5

屏幕顯示:
  SCO_SV scosysv 3.2v5.0.5 i80386 10/01/2001
14:54:59 bread/s lread/s %rcache bwrit/s lwrit/s %wcache pread/s pwrit/s (-b)
14:55:29 0  147  100  5  21  78   0   0
14:55:59 0  186  100  5  25  79   0   0
14:56:29 4  232   98  8  58  86   0   0
14:56:59 0  125  100  5  23  76   0   0
14:57:29 0   89  100  4  12  66   0   0
Average  1  156   99  5  28  80   0   0

顯示內容包括:
bread/s: 每秒從硬盤讀入系統緩衝區buffer的物理塊數。
lread/s: 平均每秒從系統buffer讀出的邏輯塊數。
%rcache: 在buffer cache中進行邏輯讀的百分比。
bwrit/s: 平均每秒從系統buffer向磁盤所寫的物理塊數。
lwrit/s: 平均每秒寫到系統buffer邏輯塊數。
%wcache: 在buffer cache中進行邏輯讀的百分比。
pread/s: 平均每秒請求物理讀的次數。
pwrit/s: 平均每秒請求物理寫的次數。

在顯示的內容中,最重要的是%cache和%wcache兩列,它們的值體現着buffer的使用效
率,%rcache的值小於90或者%wcache的值低於65,應適當增加系統buffer的數量,buffer
數量由核心參數NBUF控制,使%rcache達到90左右,%wcache達到80左右。但buffer參數值的多少影響I/O效率,增加buffer,應在較大內存的情況下,否則系統效率反而得不到提高。
例五:使用命行sar -g t n
例如,每30秒採樣一次,連續採樣5次,報告串口I/O的操作情況,需鍵入如下命令:
# sar -g 30 5

屏幕顯示:
SCO_SV scosysv 3.2v5.0.5 i80386  11/22/2001
17:07:03  ovsiohw/s  ovsiodma/s  ovclist/s (-g)
17:07:33   0.00   0.00   0.00
17:08:03   0.00   0.00   0.00
17:08:33   0.00   0.00   0.00
17:09:03   0.00   0.00   0.00
17:09:33   0.00   0.00   0.00
Average    0.00   0.00   0.00

顯示內容包括:
ovsiohw/s:每秒在串口I/O硬件出現的溢出。
ovsiodma/s:每秒在串口I/O的直接輸入輸出通道高速緩存出現的溢出。
ovclist/s :每秒字符隊列出現的溢出。
在顯示的內容中,每一列的值都是零,表明在採樣時間內,系統中沒有發生串口I/O溢
出現象。

sar命令的用法很多,有時判斷一個問題,需要幾個sar命令結合起來使用,比如,懷疑
CPU存在瓶頸,可用sar -u 和sar -q來看,懷疑I/O存在瓶頸,可用sar -b、sar -u和
sar-d來看

Sar
-A 所有的報告總和
-a 文件讀,寫報告
-B 報告附加的buffer cache使用情況
-b buffer cache使用情況
-c 系統調用使用報告
-d 硬盤使用報告
-g 有關串口I/O情況
-h 關於buffer使用統計數字
-m IPC消息和信號燈活動
-n 命名cache
-p 調頁活動
-q 運行隊列和交換隊列的平均長度
-R 報告進程的活動
-r 沒有使用的內存頁面和硬盤塊
-u CPU利用率
-v 進程,i節點,文件和鎖表狀態
-w 系統交換活動
-y TTY設備活動

-a 報告文件讀,寫報告
sar –a 5 5
SCO_SV scosvr 3.2v5.0.5 PentII(D)ISA 06/07/2002
11:45:40 iget/s namei/s dirbk/s (-a)
11:45:45 6 2 2
11:45:50 91 20 28
11:45:55 159 20 18
11:46:00 157 21 19
11:46:05 177 30 35
Average 118 18 20

iget/s 每秒由i節點項定位的文件數量
namei/s 每秒文件系統路徑查詢的數量
dirbk/s 每秒所讀目錄塊的數量
*這些值越大,表明核心花在存取用戶文件上的時間越多,它反映着一些程序和應用文件系統產生的負荷。一般地,如果iget/s與namei/s的比值大於 5,並且namei/s的值大於30,則說明文件系統是低效的。這時需要檢查文件系統的自由空間,看看是否自由空間過少。

-m 報告進程間的通信活動(IPC消息和信號燈活動)情況
sar -m 4 3
SCO_SV scosvr 3.2v5.0.5 PentII(D)ISA 06/13/2002
13:24:28 msg/s sema/s (-m)
13:24:32 2.24 9.95
13:24:36 2.24 21.70
13:24:40 2.00 36.66
Average 2.16 22.76

msg/s 每秒消息操作的次數(包括髮送消息的接收信息)。
sema/s 每秒信號燈操作次數。
*信號燈和消息作爲進程間通信的工具,如果在系統中運行的應用過程中沒有使用它們,那麼由sar命令報告的msg 和sema的值都將等於0.00。如果使用了這些工具,並且其中或者msg/s大於100,或者sema/s大於100,則表明這樣的應用程序效率比較低。原因是在這樣的應用程序中,大量的時間花費在進程之間的溝通上,而對保證進程本身有效的運行時間必然產生不良的影響。

-n 報告命名緩衝區活動情況
sar -n 4 3
SCO_SV scosvr 3.2v5.0.5 PentII(D)ISA 06/13/2002
13:37:31 c_hits cmisses (hit %) (-n)
13:37:35 1246 71 (94%)
13:37:39 1853 81 (95%)
13:37:43 969 56 (94%)
Average 1356 69 (95%)

c_hits cache命中的數量。
cmisses cache未命中的數量。
(hit %) 命中數量/(命中數理+未命中數量)。
*不難理解,(hit %)值越大越好,如果它低於90%,則應該調整相應的核心參數。

-p 報告分頁活動
sar -p 5 3
SCO_SV scosvr 3.2v5.0.5 PentII(D)ISA 06/13/2002
13:45:26 vflt/s pflt/s pgfil/s rclm/s (-p)
13:45:31 36.25 50.20 0.00 0.00
13:45:36 32.14 58.48 0.00 0.00
13:45:41 79.80 58.40 0.00 0.00
Average 49.37 55.69 0.00 0.00

vflt/s 每秒進行頁面故障地址轉換的數量(由於有效的頁面當前不在內存中)。
pflt/s 每秒來自由於保護錯誤出現的頁面故障數量(由於對頁面的非法存,取引起的頁面故障)。
pgfil/s 每秒通過”頁—入”滿足vflt/s的數量。
rclm/s 每秒由系統恢復的有效頁面的數量。有效頁面被增加到自由頁面隊列上。
*如果vflt/s的值高於100,可能預示着對於頁面系統來說,應用程序的效率不高,也可能分頁參數需要調整,或者內存配置不太合適。

-q 報告進程隊列(運行隊列和交換隊列的平均長度)情況
sar -q 2 3
SCO_SV scosvr 3.2v5.0.5 PentII(D)ISA 06/13/2002
14:25:50 runq-sz %runocc swpq-sz %swpocc (-q)
14:25:52 4.0 50
14:25:54 9.0 100
14:25:56 9.0 100
Average 7.3 100
runq-sz 準備運行的進程運行隊列。
%runocc 運行隊列被佔用的時間(百分比)
swpq-sz 要被換出的進程交換隊列。
%swpocc 交換隊列被佔用的時間(百分比)。
*如果%runocc大於90,並且runq-sz的值大於2,則表明CPU的負載較重。其直接後果,可能使系統的響應速度降低。如果%swpocc大於 20,表明交換活動頻繁,將嚴重導致系統效率下降。解決的辦法是加大內存或減少緩存區數量,從而減少交換及頁—入,頁—出活動。

-r 報告內存及交換區使用情況(沒有使用的內存頁面和硬盤塊)
sar -r 2 3
SCO_SV scosvr 3.2v5.0.5 PentII(D)ISA 06/14/2002
10:14:19 freemem freeswp availrmem availsmem (-r)
10:14:22 279729 6673824 93160 1106876
10:14:24 279663 6673824 93160 1106876
10:14:26 279661 6673824 93160 1106873
Average 279684 6673824 93160 1106875

freemem 用戶進程可以使用的內存頁面數,4KB爲一個頁面。
freeswp 用於進程交換可以使用的硬盤盤塊,512B爲一個盤塊。

-w 系統交換活動
sar -w 2 3
SCO_SV scosvr 3.2v5.0.5 PentII(D)ISA 06/14/2002
11:22:05 swpin/s bswin/s swpot/s bswots pswch/s (-w)
11:22:07 0.00 0.0 0.00 0.0 330
11:22:09 0.00 0.0 0.00 0.0 892
11:22:11 0.00 0.0 0.00 0.0 1053
Average 0.00 0.0 0.00 0.0 757

swpin/s 每秒從硬盤交換區傳送進入內存的次數。
bswin/s 每秒爲換入而傳送的塊數。
swpot/s 每秒從內存傳送到硬盤交換區的次數。
bswots 每秒爲換出而傳送的塊數。
pswch/s 每秒進程交換的數量。
*swpin/s,bswin /s,swpot/s和bswots描述的是與硬盤交換區相關的交換活動。交換關係到系統的效率。交換區在硬盤上對硬盤的讀,寫操作比內存讀,寫慢得多,因此,爲了提高系統效率就應該設法減少交換。通常的作法就是加大內存,使交換區中進行的交換活動爲零,或接近爲零。如果swpot/s的值大於1,預示可能需要增加內存或減少緩衝區(減少緩衝區能夠釋放一部分自由內存空間)。

-y 報告終端的I/O活動(TTY設備活動)情況
sar -y 2 3
SCO_SV scosvr 3.2v5.0.5 PentII(D)ISA 06/14/2002
11:38:03 rawch/s canch/s outch/s rcvin/s xmtin/s mdmin/s (-y)
11:38:05 5 0 951 0 1 0
11:38:07 10 0 996 0 0 0
11:38:09 4 0 2264 0 0 0
Average 6 0 1404 0 1 0

rawch/s 每秒輸入的字符數(原始隊列)
canch/s 每秒由正則隊列(canonical queue)處理的輸入字符數。進行正則處理過程中,可以識別出一些有特殊意義的字符。比如,(中斷字符),(退出符),(退格鍵)等。因此,canch/s中的計數不包括這些有特殊意義的字符。
outch/s 每秒輸出的字符數。
rcvin/s 每秒接收的硬件中斷次數。
xmtin/s 每秒發出的硬件中斷次數。
mdmin/s 每秒modem中斷次數。
*應該特別說明,sar命令可以對任意終端活動進行統計,所謂任意終端,是指任意tty設備。它們可以是串行終端,主控臺,僞終端等等。
*在這幾個量中,modem中斷次數mdmin/s應該接近0。其它沒有特殊要求,但如果每發送一個字符,中斷的數量就動態地增加,這表明終端線出了差錯,可能是接觸不好。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章