vmstat與iostat詳解(zt)
在Linux下有很多系統效能分析工具,比較常見的有top、free、ps、time、timex、uptime等。下文將介紹幾個較為重要的效能分析工具vmstat、iostat和sar及其使用。
用vmstat監視記憶體使用情況
vmstat是Virtual Meomory Statistics(虛擬記憶體統計)的縮寫,可對作業系統的虛擬記憶體、程式、CPU活動進行監視。它是對系統的整體情況進行統計,不足之處是無法對某個程式進行深入分析。
vmstat的語法如下:
vmstat [-V] [-n] [delay [count]]
其中,-V表示列印出版本資訊;-n表示在週期性迴圈輸出時,輸出的頭部資訊僅顯示一次;delay是兩次輸出之間的延遲時間;count是指按照這個時間間隔統計的次數。對於vmstat輸出各欄位的含義,可執行man vmstat檢視。
用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的幫助中有詳細的說明。
vmstat 命令報告虛擬記憶體統計資訊和CPU負荷:頁面排程,交換,任務交換,CPU利用率。命令的語法是:
vmstat [-cisS] [d1 d2 d3 d4] [interval [count]]
當不用選項時,vmstat顯示一條曲線表示自從系統啟動後活動的資訊。如果指定interval(時間間隔),接下來的線是重複顯示最後的interval期間活動的情況,直到使用者中斷命令執行。當同時提供計數器時,統計資訊按時間計數來顯示。
如果指定了一個磁碟名(如d1,d2,等等。),這些磁碟得到優先顯示。通常,系統上的前4個磁碟裝置是顯示的,因為只有四個裝置能在一線條上顯示,這個選項允許效能分析員修改預設顯示選項。(*磁碟名通常隨id,sd,xd,或xy (取決於型別和I/0介面)加一個數字,如id0,sd2,xd1等等命名而定。)
,vmstat 命令顯示若干欄位資訊:
procs 報表下面三種狀態的程式數:
r--在執行佇列中等候執行
b--被資源阻塞(I/0,頁面排程,等等.)
w--可執行但是被換出的
memory 報告虛擬記憶體和實存資訊:
swap--以千位元組為單位的當前可用交換空間的數量
free--以千位元組為單位的頁自由表大小
page 報告每秒頁面排程活動數量的資訊:
re-從自由表回收頁
mf--次要的錯誤;地址空間或硬體地址轉換錯誤
pi--頁入的千位元組數
po -頁出的千位元組數
fr- 釋放的千位元組數
de--以千位元組為單位的可接受的短期記憶體不足數
sr--頁由時鐘演算法掃描
disk 可以為四個磁碟報告每秒磁碟I/O的數量
faults 報告每秒系統軟體中斷和硬體中斷的速率
in-裝置中斷,不包括系統時鐘中斷
sy-系統呼叫
cs-CPU任務(上下文)交換
cpu-- CPU故障時間的百分比,在多處理器系統上,這是全部處理器的平均值:
us- 使用者時間
sy-- 系統時間
id-- 閒置時間
vmstat命令有四個可選標誌可供使用。如果機器有虛擬地址快取-c標誌就改變輸出報告快取重新整理統計資料。報告包括自從系統啟動後每種快取重新整理全部總量。六個快取型別是使用者,上下文,區域,段,頁,部分頁。
-i標誌 使輸出變為報告中斷的數量。如果給出裝置名,如d1,d2等,監控將在裝置級*執行,(*注,參閱第十二章有關開啟裝置級監控的資訊。)並報告每個給定裝置的統計資訊。
修改"普通"報告來顯示交換而非頁面排程活動的資訊。這選項改變顯示的兩個欄位:si(換入)和so(換出)替代了re和mf欄位。
值得注意是,interval 和count選項對-i或-s選項是非法的。
vmstat 引數詳解
procs:
r-->在執行佇列中等待的程式數
b-->在等待io的程式數
w-->可以進入執行佇列但被替換的程式
memoy
swap-->現時可用的交換記憶體(k表示)
free-->空閒的記憶體(k表示)
pages
re--》回收的頁面
mf--》非嚴重錯誤的頁面
pi--》進入頁面數(k表示)
po--》出頁面數(k表示)
fr--》空餘的頁面數(k表示)
de--》提前讀入的頁面中的未命中數
sr--》透過時鐘演算法掃描的頁面
disk 顯示每秒的磁碟操作。 s表示scsi盤,0表示盤號
fault 顯示每秒的中斷數
in--》裝置中斷
sy--》系統中斷
cy--》cpu交換
cpu 表示cpu的使用狀態
cs--》使用者程式使用的時間
sy--》系統程式使用的時間
id--》cpu空閒的時間
FIELD DESCRIPTIONS
Procs
r: The number of processes waiting for run time.
b: The number of processes in uninterruptable sleep.
w: The number of processes swapped out but otherwise runnable.
Thisfield is calculated, but Linux never desperation swaps.
Memory
swpd: the amount of virtual memory used (kB).
free: the amount of idle memory (kB).
buff: the amount of memory used as buffers (kB).
Swap
si: Amount of memory swapped in from disk (kB/s). 虛擬記憶體的頁匯入(從SWAP DISK匯入RAM)
so: Amount of memory swapped to disk (kB/s). 虛擬記憶體的頁匯出.
(從RAM到SWAP DISK)
IO
bi: Blocks sent to a block device (blocks/s).
bo: Blocks received from a block device (blocks/s).
System
in: The number of interrupts per second, including the clock.
cs: The number of context switches per second.
: CPU
These are percentages of total CPU time.
us: user time
sy: system time
id: idle time
如果 r經常大於 4 ,且id經常少於40,表示cpu的負荷很重。
如果pi,po 長期不等於0,表示記憶體不足。
如果disk 經常不等於0, 且在 b中的佇列 大於3, 表示 io效能不好。
由vmstat看伺服器
說明:由於STATSPACK並不能獲取全面分析效能問題所需要的所有資訊,所以需要擴充套件其收集伺服器的統計資訊。(本文環境REDHAT Linux7.2)
VMSTAT介紹
透過STATSPACK收集伺服器資訊,主要透過收集VMSTAT的資訊來展現伺服器狀況。VMSTAT工具是最常見的UNIX監控工具,可以展現給定時間間隔的伺服器的狀態值。
一般VMSTAT工具的使用是透過兩個數字引數來完成的,第一個引數是取樣的時間間隔數,單位是秒,第二個引數是取樣的次數。如:
[oracle@brucelau oracle]$ vmstat 1 2
procs memory swap io system CPU
r b w swpd free buff cache si so bi bo in cs us sy id
1 0 0 0 271844 186052 255852 0 0 2 6 102 10 0 0 100
0 0 0 0 271844 186052 255852 0 0 0 0 104 11 0 0 100
(注:目前系統幾乎空閒,並且不同作業系統VMSTAT輸出內容有所不同)
目前說來,對於伺服器監控有用處的度量主要有:
r(執行佇列)
pi(頁匯入)
us(使用者CPU)
sy(系統CPU)
id(空閒)
透過VMSTAT識別CPU瓶頸
r(執行佇列)展示了正在執行和等待CPU資源的任務個數。當這個值超過了CPU數目,就會出現CPU瓶頸了。
獲得CPU個數的命令(LINUX環境):
cat /proc/cpuinfo|grep processor|wc -l
當r值超過了CPU個數,就會出現CPU瓶頸,解決辦法大體幾種:
1. 最簡單的就是增加CPU個數
2. 透過調整任務執行時間,如大任務放到系統不繁忙的情況下進行執行,進爾平衡系統任務
3. 調整已有任務的優先順序
透過VMSTAT識別CPU滿負荷
首先需要宣告一點的是,vmstat中CPU的度量是百分比的。當us+sy的值接近100的時候,表示CPU正在接近滿負荷工作。但要注意的是,CPU滿負荷工作並不能說明什麼,UNIX總是試圖要CPU儘可能的繁忙,使得任務的吞吐量最大化。唯一能夠確定CPU瓶頸的還是r(執行佇列)的值。
透過VMSTAT識別RAM瓶頸
資料庫伺服器都只有有限的RAM,出現記憶體爭用現象是Oracle的常見問題。
首先察看RAM的數量,命令如下(LINUX環境):
[root@brucelau root]#free
total used free shared buffers cached
Mem: 1027348 873312 154036 185736 187496 293964
-/+ buffers/cache: 391852 635496
Swap: 2096440 0 2096440
當然可以使用top等其他命令來顯示RAM。
當記憶體的需求大於RAM的數量,伺服器啟動了虛擬記憶體機制,透過虛擬記憶體,可以將RAM段移到SWAP DISK的特殊磁碟段上,這樣會出現虛擬記憶體的頁匯出和頁匯入現象,頁匯出並不能說明RAM瓶頸,虛擬記憶體系統經常會對記憶體段進行頁匯出,但頁匯入操作就表明了伺服器需要更多的記憶體了,頁匯入需要從SWAP DISK上將記憶體段複製回RAM,導致伺服器速度變慢。
解決的辦法有幾種:
1. 最簡單的,加大RAM
2. 改小SGA,使得對RAM需求減少
3. 減少RAM的需求(如:減少PGA)
我們基本的瞭解了VMSTAT工作,下面是STATSPACK透過vmstat統計收集伺服器效能資料。
STATSPACK透過vmstat收集伺服器資訊
首先在perfstat使用者下建一個儲存伺服器資訊的表:如
建表:
create table stats$vmstat
(
start_date date, --系統時間
duration date, --時間間隔
server_name varchar2(20), --伺服器名稱
runque_waits number, --執行佇列資料
page_in number, --頁匯入資料
page_out number, --頁匯出資料
user_cpu number, --使用者cpu資料
system_cpu number, --系統cpu資料
idle_cpu number, --空閒cpu資料
wait_cpu number -等待cpu資料(只是aix存在)
)
tablespace perfstat;
然後,透過UNIX/LINUX的shell變成,利用vmstat的結果來獲取相應的伺服器資訊,並且存放到表中。
關於shell程式設計,可能已經超出本文內容,並且誠實的說,本人並沒有shell程式設計的經驗,希望那位兄臺可以完成shell程式設計的內容,並勞駕mail給我共享一下,謝了先!!
附:
LINUX上VMSTAT的幫助手冊:(man vmstat的結果)
VMSTAT(8) Linux Administrator's Manual VMSTAT(8)
NAME
vmstat - Report virtual memory statistics
SYNOPSIS
vmstat [-n] [delay [ count]]
vmstat[-V]
DESCRIPTION
vmstat reports information about processes, memory, paging, block IO, traps, and CPU activity.
The first report produced gives averages since the last reboot. Additional reports give information on a sam-
pling period of length delay. The process and memory reports are instantaneous in either case.
Options
The -n switch causes the header to be displayed only once rather than periodically.
delay is the delay between updates in seconds. If no delay is specified, only one report is printed with the
average values since boot.
count is the number of updates. If no count is specified and delay is defined, count defaults to infinity.
The -V switch results in displaying version information.
FIELD DESCRIPTIONS
Procs
r: The number of processes waiting for run time.
b: The number of processes in uninterruptable sleep.
w: The number of processes swapped out but otherwise runnable. This
field is calculated, but Linux never desperation swaps.
Memory
swpd: the amount of virtual memory used (kB).
free: the amount of idle memory (kB).
buff: the amount of memory used as buffers (kB).
Swap
si: Amount of memory swapped in from disk (kB/s).
so: Amount of memory swapped to disk (kB/s).
IO
bi: Blocks sent to a block device (blocks/s).
bo: Blocks received from a block device (blocks/s).
System
in: The number of interrupts per second, including the clock.
cs: The number of context switches per second.
: CPU
These are percentages of total CPU time.
us: user time
sy: system time
id: idle time
NOTES
vmstat does not require special permissions.
These reports are intended to help identify system bottlenecks. Linux vmstat does not count itself as a running process.
All linux blocks are currently 1k, except for CD-ROM blocks which are 2k.
FILES
/proc/meminfo
/proc/stat
/proc/*/stat
SEE ALSO
ps(1), top(1), free(1)
BUGS
Does not tabulate the block io per device or count the number of system calls.
AUTHOR
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/35489/viewspace-85008/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 各種UNIX平臺下vmstat與iostat輸出結果詳解iOS
- vmstat iostat sariOS
- vmstat詳解
- vmstat命令詳解
- iostat詳解iOS
- vmstat 引數詳解
- AIX vmstat命令詳解AI
- iostat命令詳解iOS
- vmstat的應用詳解
- vmstat linux命令詳解Linux
- IO命令iostat詳解iOS
- stat 命令家族(1)- 詳解 vmstat
- meminfo vmstat procrank top等詳解
- checkpoint詳解(zt)
- 各種unix/linux平臺下iostat與vmstst說明ztLinuxiOS
- IO實時監控命令iostat詳解iOS
- Linux學習之iostat命令詳解LinuxiOS
- vmstat ,iostat系統CPU、記憶體、磁碟使用率報告iOS記憶體
- ZT 物化檢視詳解
- [zt] expdp / impdp 用法詳解
- Vmstat 命令詳細介紹
- 【轉】Linux中Vmstat命令列出的屬性詳解Linux命令列
- Linux儲存效能觀測——iostat命令詳解LinuxiOS
- Linux的IO效能監控工具iostat詳解LinuxiOS
- solaris檢視I/O、記憶體、網路效能優化命令 iostat , vmstat記憶體優化iOS
- zt_oradebug詳解
- Statspack分析報告詳解 (zt)
- dbms_stats 使用詳解(zt)
- linux sort 命令詳解 (zt)Linux
- Oracle直方圖詳解(ZT)Oracle直方圖
- linux date 命令詳解(ZT)Linux
- solaris檢視I/O、記憶體、網路效能最佳化命令 iostat , vmstat記憶體iOS
- Oracle中的Hash Join詳解 ztOracle
- Linux作業系統Vmstat命令列出的屬性詳解Linux作業系統命令列
- SYBASE資料庫dbcc命令詳解(zt)資料庫
- fedora core 啟動服務詳解(zt)
- linux tar(tape archive) 命令詳解(ZT)LinuxHive
- [linux]系統效能監測工具詳解iostat,mpstat,sarLinuxiOS