1. 程式人生 > >Linux系統性能分析命令vmstat,iostat,sar使用詳解

Linux系統性能分析命令vmstat,iostat,sar使用詳解

當系統業務出現異常,需要對系統性能進行分析時,從何下手是個問題。因為效能分析是個很系統的問題,它可能是系統軟體層面的問題,也可能是底層硬體有異常,所以這些用於分析的命令側重點也有所不同,例如:vmstat/top則偏重於觀察系統程序的CPU和記憶體使用情況,而iostat則是檢查OS與儲存之間的IO狀態,因為這些都是影響系統性能的。下面就介紹下vmstat/iostat/sar命令的引數以及回顯資訊。

1. 用vmstat監視記憶體使用情況

vmstat是Virtual Meomory Statistics(虛擬記憶體統計)的縮寫,可對作業系統的虛擬記憶體、程序、CPU活動進行監視。它是對系統的整體情況進行統計,不足之處是無法對某個程序進行深入分析。

vmstat的語法如下:

  vmstat [-V] [-n] [delay [count]]

其中,-V表示打印出版本資訊;-n表示在週期性迴圈輸出時,輸出的頭部資訊僅顯示一次;delay是兩次輸出之間的延遲時間;count是指按照這個時間間隔統計的次數。對於vmstat輸出各欄位的含義,可執行man vmstat檢視。2. 用iostat監視I/O子系統情況

iostat是I/O statistics(輸入/輸出統計)的縮寫,iostat工具將對系統的磁碟操作活動進行監視。它的特點是彙報磁碟活動統計情況,同時也會彙報出 CPU使用情況。同vmstat一樣,iostat也有一個弱點,就是它不能對某個程序進行深入分析,僅對系統的整體情況進行分析。

iostat的語法如下:

iostat [ -c | -d ] [ -k ] [ -t ] [ -V ] [ -x [ device ] ] [ interval [ count ] ]

其中,-c為彙報CPU的使用情況;-d為彙報磁碟的使用情況;-k表示每秒按kilobytes位元組顯示資料;-t為列印彙報的時間;-v表示打印出 版本資訊和用法;-x device指定要統計的裝置名稱,預設為所有的裝置;interval指每次統計間隔的時間;count指按照這個時間間隔統計的次數。iostat一般的輸出格式如下:

Linux 2.4.18-18smp (builder.linux.com)  2003年03月07日 avg-cpu:  %user   %nice    %sys   %idle            4.81    0.01    1.03   94.15 Device:            tps   Blk_read/s   Blk_wrtn/s   Blk_read   Blk_wrtn dev3-0           30.31      1117.68       846.52   16104536   12197374 dev3-1            7.06       229.61        40.40    3308486     582080

對於輸出中各欄位的含義,iostat的幫助中有詳細的說明。

3. 使用sar進行綜合分析

表1 sar引數說明

選項 功能

-A 彙總所有的報告
-a 報告檔案讀寫使用情況
-B 報告附加的快取的使用情況
-b 報告快取的使用情況
-c 報告系統呼叫的使用情況
-d 報告磁碟的使用情況
-g 報告串列埠的使用情況
-h 報告關於buffer使用的統計資料
-m 報告IPC訊息佇列和訊號量的使用情況
-n 報告命名cache的使用情況
-p 報告調頁活動的使用情況
-q 報告執行佇列和交換佇列的平均長度
-R 報告程序的活動情況
-r 報告沒有使用的記憶體頁面和硬碟塊
-u 報告CPU的利用率
-v 報告程序、i節點、檔案和鎖表狀態
-w 報告系統交換活動狀況
-y 報告TTY裝置活動狀況

sar是System Activity Reporter(系統活動情況報告)的縮寫。顧名思義,sar工具將對系統當前的狀態進行取樣,然後通過計算資料和比例來表達系統的當前執行狀態。它的 特點是可以連續對系統取樣,獲得大量的取樣資料;取樣資料和分析的結果都可以存入檔案,所需的負載很小。sar是目前Linux上最為全面的系統性能分析 工具之一,可以從14個大方面對系統的活動進行報告,包括檔案的讀寫情況、系統呼叫的使用情況、串列埠、CPU效率、記憶體使用狀況、程序活動及IPC有關的 活動等,使用也是較為複雜。

sar的語法如下:

sar [-option] [-o file] t [n]

它的含義是每隔t秒取樣一次,共取樣n次。其中-o file表示取樣結果將以二進位制形式存入檔案file中。

另一種語法如下:

sar [-option] [-s time] [-e time] [-i sec] [-f file]

含義是表示從file檔案中取出資料,如果沒有指定-f file,則從標準資料檔案/var/adm/sa/sadd取資料,其中dd表示當前天。另外,-s time表示起始時間;-e time表示停止時間;-i sec表示取樣的時間間隔,如果不指定則表示取檔案中所有的資料。對於具體的選項參見表1。一般它與-q和-u聯合使用,以便對每個CPU的使用情況進行分析,比如執行如下命令:

sar  -q -u 5 1
將輸出如下:
Linux 2.4.18-18smp (builder.linux.com)        2009年03月27日 09時46分16?      CPU     %user     %nice   %system     %idle 09時46分21?      all      0.20      0.00      0.00     99.80 09時46分16?  runq-sz  plist-sz   ldavg-1   ldavg-5 09時46分21?        0        91      0.00      0.00 Average:          CPU     %user     %nice   %system     %idle Average:          all      0.20      0.00      0.00     99.80 Average:      runq-sz  plist-sz   ldavg-1   ldavg-5 Average:            0        91      0.00      0.00

由於sar命令太複雜,只有通過熟練使用才能瞭解每個選項的含義,對於sar輸出中每個欄位的含義執行man sar命令可以得到詳細的解釋。