dmesg可以直接查看cpu的主頻,要查看CPU、內存的使用情況可以使用sar!
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,則說明文件系統是低效的。這時需要檢查文件系統的自由空間,看看是否自由空間過少。
-b 報告緩沖區(buffer cache)的使用情況 sar -b 2 3 SCO_SV scosvr 3.2v5.0.5 PentII(D)ISA 06/07/2002 13:51:28 bread/s lread/s %rcache bwrit/s lwrit/s %wcache pread/s pwrit/s (-b) 13:51:30 382 1380 72 131 273 52 0 0 13:51:32 378 516 27 6 22 72 0 0 13:51:34 172 323 47 39 57 32 0 0 Average 310 739 58 58 117 50 0 0
bread/s 平均每秒從硬盤(或其它塊設備)讀入系統buffer的物理塊數 lread/s 平均每秒從系統buffer讀出的邏輯塊數 %rcache 在buffer cache中進行邏輯讀的百分比(即100% - bread/lreads) bwrit/s 平均每秒從系統buffer向磁盤(或其它塊設備)所寫的物理塊數 lwrit/s 平均每秒寫到系統buffer的邏輯塊數 %wcache 在buffer cache中進行邏輯寫的百分比(即100% - bwrit/lwrit). pread/sgu 平均每秒請求進行物理讀的次數 pwrit/s 平均每秒請求進行物理寫的次數
*所顯示的內容反映了目前與系統buffer有關的讀,寫活。在所報告的數字中,最重要的是%rcache和%wcache(統稱為cache命中率)兩列,它們具體體現著系統buffer的效率。衡量cache效率的標准是它的命中率值的大小。 *如果%rcache的值小於90或者%wcache的值低於65,可能就需要增加系統buffer的數量。如果在系統的應用中,系統的I/O活動十分頻繁,並且在內存容量配置比較大時,可以增加buffer cache,使%rcache達到95左右,%wcache達到80左右。 *系統buffer cache中,buffer的數量由核心參數NBUF控制。它是一個要調的參數。系統中buffer數量的多少是影響系統I/O效率的瓶頸。要增加系統buffer數量,則要求應該有較大的內存配置。否則一味增加buffer數量,勢必減少用戶進程在內存中的運行空間,這同樣會導致系統效率下降。
-c 報告系統調用使用情況 sar -c 2 3 SCO_SV scosvr 3.2v5.0.5 PentII(D)ISA 06/07/2002 17:02:42 scall/s sread/s swrit/s fork/s exec/s rchar/s wchar/s (-c) 17:02:44 2262 169 141 0.00 0.00 131250 22159 17:02:46 1416 61 38 0.00 0.00 437279 6464 17:02:48 1825 43 25 0.00 0.00 109397 42331 Average 1834 91 68 0.00 0.00 225975 23651
scall/s 每秒使用系統調用的總數。一般地,當4~6個用戶在系統上工作時,每秒大約30個左右。 sread/s 每秒進行讀操作的系統調用數量。 swrit/s 每秒進行寫操作的系統調用數量。 fork/s 每秒fork系統調用次數。當4~6個用戶在系統上工作時,每秒大約0.5秒左右。 exec/s 每秒exec系統調用次數。 rchar/s 每秒由讀操作的系統調用傳送的字符(以字節為單位)。 wchar/s 每秒由寫操作的系統調用傳送的字符(以字節為單位)。 *如果scall/s持續地大於300,則表明正在系統中運行的可能是效率很低的應用程序。在比較 典型的情況下,進行讀操作的系統調用加上進行寫操作的系統調用之和,約是scall的一半左右。
-d 報告硬盤使用情況 sar -d 2 3 SCO_SV scosvr 3.2v5.0.5 PentII(D)ISA 06/07/2002 17:27:49 device %busy avque r+w/s blks/s avwait avserv (-d) 17:27:51 ida-0 6.93 1.00 13.86 259.41 0.00 5.00 ida-1 0.99 1.00 17.33 290.10 0.00 0.57 17:27:53 ida-0 75.50 1.00 54.00 157.00 0.00 13.98 ida-1 9.50 1.00 12.00 75.00 0.00 7.92 17:27:55 ida-0 7.46 1.00 46.77 213.93 0.00 1.60 ida-1 17.41 1.00 57.71 494.53 0.00 3.02 Average ida-0 29.85 1.00 38.14 210.28 0.00 7.83 ida-1 9.29 1.00 29.02 286.90 0.00 3.20
device 這是sar命令正在監視的塊設備的名字。 %busy 設備忙時,運行傳送請求所占用的時間。這個值以百分比表示。 avque 在指定的時間周期內,沒有完成的請求數量的平均值。僅在隊列被占滿時取這個值。 r+w/s 每秒傳送到設備或者從設備傳送出的數據量。 blks/s 每秒傳送的塊數。每塊512個字節。 avwait 傳送請求等待隊列空閒的平均時間(以毫秒為單位)。僅在隊列被占滿時取這個值。 avserv 完成傳送請求所需平均時間(以毫秒為單位) *ida-0和ida-1是硬盤的設備名字。在顯示的內容中,如果%busy的值比較小,說明用於處理 傳送請求的有效時間太少,文件系統的效率不高。要使文件系統的效率得到優化,應使%busy的數值相對高一些,而avque的值應該低一些。
-g 報告有關串口I/O情況 sar -g 3 3 SCO_SV scosvr 3.2v5.0.5 PentII(D)ISA 06/13/2002 11:10:09 ovsiohw/s ovsiodma/s ovclist/s (-g) 11:10:12 0.00 0.00 0.00 11:10:15 0.00 0.00 0.00 11:10:18 0.00 0.00 0.00 Average 0.00 0.00 0.00
ovsiohw/s 每秒在串囗I/O硬件出現的溢出。 ovsiodma/s 每秒在串囗I/O的直接輸入,輸出信道高速緩存出現的溢出。 ovclist/s 每秒字符隊列出現的溢出。
-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為一個盤塊。
-u CPU利用率 sar -u 2 3 SCO_SV scosvr 3.2v5.0.5 PentII(D)ISA 06/14/2002 10:27:23 %usr %sys %wio %idle (-u) 10:27:25 2 3 8 88 10:27:27 3 3 5 89 10:27:29 0 0 0 100 Average 2 2 4 92 . %usr cpu處在用戶模式下時間(百分比) %sys cpu處在系統模式下時間(百分比) %wio cpu等待輸入,輸出完成(時間百分比) %idle cpu空閒時間(百分比) *在顯示的內容中,%usr和 %sys這兩個值一般情況下對系統無特別影響,%wio的值不能太高,如果%wio的值過高,則CPU花在等待輸入,輸出上的時間太多,這意味著硬盤存在I/O瓶頸。如果%idle的值比較高,但系統響應並不快,那麼這有可能是CPU花時間等待分配內存引起的。%idle的值可以較深入幫助人們了解系統的性能,在這種情況上,%idle的值處於40~100之間,一旦它持續低於30,則表明進程竟爭的主要資源不是內存而是CPU。 *在有大量用戶運行的系統中,為了減少CPU的壓力,應該使用智能多串卡,而不是非智能多串卡。智能多串卡可以承擔CPU的某些負擔。 *此外,如果系統中有大型的作業運行,應該把它們合理調度,錯開高峰,當系統相對空閒時再運行。
-v 報告系統表的內容(進程,i節點,文件和鎖表狀態) sar -v 2 3 SCO_SV scosvr 3.2v5.0.5 PentII(D)ISA 06/14/2002 10:56:46 proc-sz ov inod-sz ov file-sz ov lock-sz (-v) 10:56:48 449/ 500 0 994/4147 0 1313/2048 0 5/ 128 10:56:50 450/ 500 0 994/4147 0 1314/2048 0 5/ 128 10:56:52 450/ 500 0 994/4147 0 1314/2048 0 5/ 128
proc-sz 目前在核心中正在使用或分配的進程表的表項數 inod-sz 目前在核心中正在使用或分配的i節點表的表項數 file-sz 目前在核心中正在使用或分配的文件表的表項數 ov 溢出出現的次數 lock-sz 目前在核心中正在使用或分配的記錄加鎖的表項數 *除ov外,均涉及到unix的核心參數,它們分別受核心參數NPROC,NIMODE,NFILE和FLOCKREC的控制。 *顯示格式為: 實際使用表項/整個表可以使用的表項數 比如,proc-sz一列所顯示的四個數字中,分母的100是系統中整個進程表的長度(可建立100個表項),分子上的24,26和25分別是采樣的那一段時間所使用的進程表項。inod-sz,file-sz和lock-sz三列數字的意義也相同。 三列ov的值分別對應進程表,i節點表和文件表,表明目前這三個表都沒有出現溢出現象,當出現溢出時,需要調整相應的核心參數,將對應表加大。
-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。其它沒有特殊要求,但如果每發送一個字符,中斷的數量就動態地增加,這表明終端線出了差錯,可能是接觸不好。