在使用UNIX作業系統的過程中,我們常常會用到各種各樣的問題,比如系統運行速度突然變慢,系統容易當機或者主機所帶的終端常出現當機,這時我們常常猜測,是硬碟空間太小,還是記憶體不足?I/O出現瓶頸,或者是系統的核心參數出了問題?這時,我們應該考慮使用系統給我們提供的sar命令來對系統作一個瞭解,該命令是系統維護的重要工具,主要?明我們掌握系統資源的使用情況,特別是記憶體和CPU 的使用情況,是UNIX系統使用者應該掌握的工具之一。

sar 命令列的常用格式:

sar [options] [-A] [-o file] t [n]

在命令列中,n 和t 兩個參數組合起來定義採樣間隔和次數,t為採樣間隔,是必須有的參數,n為採樣次數,是可選的,預設值是1,-o file表示將命令結果以二進位格式存放在檔案中,file 在此處不是關鍵字,是檔案名。options 為命令列選項,sar命令的選項很多,下面只列出常用選項:
 -A:所有報告的總和。
 -u:CPU使用率
 -v:process、I-nod、檔案和鎖表狀態。
 -d:硬碟使用報告。
 -r:沒有使用的記憶體頁面和硬碟區塊。
 -g:端口I/O的情況。

-b:緩衝區使用情況。
-a:檔案讀寫情況。
-c:系統調用情況。
-R:Process的活動情況。
-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的直