vmstat命令詳解
Vmstat命令詳解
一、前言
vmstat命令: 用來獲得有關程式、虛存、頁面交換空間及 CPU活動的資訊。這些資訊反映了系統的負載情況
二、虛擬記憶體執行原理
在系統中執行的每個程式都需要使用到記憶體,但不是每個程式都需要每時每刻使用系統分配的記憶體空間。當系統執行所需記憶體超過實際的實體記憶體,核心會釋放某些程式所佔用但未使用的部分或所有實體記憶體,將這部分資料儲存在磁碟上直到程式下一次呼叫,並將釋放出的記憶體提供給有需要的程式使用。
在Linux記憶體管理中,主要是透過“調頁Paging”和“交換Swapping”來完成上述的記憶體排程。調頁演算法是將記憶體中最近不常使用的頁面換到磁碟上,把活動頁面保留在記憶體中供程式使用。交換技術是將整個程式,而不是部分頁面,全部交換到磁碟上。
分頁(Page)寫入磁碟的過程被稱作Page-Out,分頁(Page)從磁碟重新回到記憶體的過程被稱作Page-In。當核心需要一個分頁時,但發現此分頁不在實體記憶體中(因為已經被Page-Out了),此時就發生了分頁錯誤(Page Fault)。
當系統核心發現可執行記憶體變少時,就會透過Page-Out來釋放一部分實體記憶體。經管Page-Out不是經常發生,但是如果Page-out頻繁不斷的發生,直到當核心管理分頁的時間超過執行程式的時間時,系統效能會急劇下降。這時的系統已經執行非常慢或進入暫停狀態,這種狀態亦被稱作thrashing(顛簸)。
三、使用vmstat
1.用法
vmstat [-a] [-n] [-S unit] [delay [ count]]
vmstat [-s] [-n] [-S unit]
vmstat [-m] [-n] [delay [ count]]
vmstat [-d] [-n] [delay [ count]]
vmstat [-p disk partition] [-n] [delay [ count]]
vmstat [-f]
vmstat [-V]
-a:顯示活躍和非活躍記憶體
-f:顯示從系統啟動至今的fork數量 。
-m:顯示slabinfo
-n:只在開始時顯示一次各欄位名稱。
-s:顯示記憶體相關統計資訊及多種系統活動數量。
delay:重新整理時間間隔。如果不指定,只顯示一條結果。
count:重新整理次數。如果不指定重新整理次數,但指定了重新整理時間間隔,這時重新整理次數為無窮。
-d:顯示磁碟相關統計資訊。
-p:顯示指定磁碟分割槽統計資訊
-S:使用指定單位顯示。引數有 k 、K 、m 、M ,分別代表1000、1024、1000000、1048576位元組(byte)。預設單位為K(1024 bytes)
-V:顯示vmstat版本資訊。
2.欄位含義說明:
類別 |
專案 |
含義 |
說明 |
Procs(程式) |
r |
等待執行的任務數 |
展示了正在執行和等待cpu資源的任務個數。當這個值超過了cpu個數,就會出現cpu瓶頸。 |
B |
等待IO的程式數量 |
|
|
Memory(記憶體) |
swpd |
正在使用虛擬的記憶體大小,單位k |
|
free |
空閒記憶體大小 |
|
|
buff |
已用的buff大小,對塊裝置的讀寫進行緩衝 |
|
|
cache |
已用的cache大小,檔案系統的cache |
|
|
inact |
非活躍記憶體大小,即被標明可回收的記憶體,區別於free和active |
具體含義見:概念補充(當使用-a選項時顯示) |
|
active |
活躍的記憶體大小 |
具體含義見:概念補充(當使用-a選項時顯示) |
|
Swap |
si |
每秒從交換區寫入記憶體的大小(單位:kb/s) |
|
so |
每秒從記憶體寫到交換區的大小 |
|
|
IO |
bi |
每秒讀取的塊數(讀磁碟) |
現在的Linux版本塊的大小為1024bytes |
bo |
每秒寫入的塊數(寫磁碟) |
|
|
system |
in |
每秒中斷數,包括時鐘中斷 |
這兩個值越大,會看到由核心消耗的cpu時間會越多 |
cs |
每秒上下文切換數 |
||
CPU(以百分比表示) |
Us |
使用者程式執行消耗cpu時間(user time) |
us的值比較高時,說明使用者程式消耗的cpu時間多,但是如果長期超過50%的使用,那麼我們就該考慮最佳化程式演算法或其他措施了 |
Sy |
系統程式消耗cpu時間(system time) |
sys的值過高時,說明系統核心消耗的cpu資源多,這個不是良性的表現,我們應該檢查原因。 |
|
Id |
空閒時間(包括IO等待時間) |
|
|
wa |
等待IO時間 |
Wa過高時,說明io等待比較嚴重,這可能是由於磁碟大量隨機訪問造成的,也有可能是磁碟的頻寬出現瓶頸。 |
四、常見問題處理
如果r經常大於4,且id經常少於40,表示cpu的負荷很重。
如果pi,po長期不等於0,表示記憶體不足。
如果disk經常不等於0,且在b中的佇列大於3,表示io效能不好。
1.)如果在processes中執行的序列(process r)是連續的大於在系統中的CPU的個數表示系統現在執行比較慢,有多數的程式等待CPU。
2.)如果r的輸出數大於系統中可用CPU個數的4倍的話,則系統面臨著CPU短缺的問題,或者是CPU的速率過低,系統中有多數的程式在等待CPU,造成系統中程式執行過慢。
3.)如果空閒時間(cpu id)持續為0並且系統時間(cpu sy)是使用者時間的兩倍(cpu us)系統則面臨著CPU資源的短缺。
解決辦法:
當發生以上問題的時候請先調整應用程式對CPU的佔用情況.使得應用程式能夠更有效的使用CPU.同時可以考慮增加更多的CPU. 關於CPU的使用情況還可以結合mpstat, ps aux top prstat –a等等一些相應的命令來綜合考慮關於具體的CPU的使用情況,和那些程式在佔用大量的CPU時間.一般情況下,應用程式的問題會比較大一些.比如一些sql語句不合理等等都會造成這樣的現象.
記憶體問題現象:
記憶體的瓶頸是由scan rate (sr)來決定的.scan rate是透過每秒的始終演算法來進行頁掃描的.如果scan rate(sr)連續的大於每秒200頁則表示可能存在記憶體缺陷.同樣的如果page項中的pi和po這兩欄表示每秒頁面的調入的頁數和每秒調出的頁數.如果該值經常為非零值,也有可能存在記憶體的瓶頸,當然,如果個別的時候不為0的話,屬於正常的頁面排程這個是虛擬記憶體的主要原理.
解決辦法:
1.調節applications & servers使得對記憶體和cache的使用更加有效.
2.增加系統的記憶體.
3. Implement priority paging in s in pre solaris 8 versions by adding line "set priority paging=1" in /etc/system. Remove this line if upgrading from Solaris 7 to 8 & retaining old /etc/system file.
關於記憶體的使用情況還可以結ps aux top prstat –a等等一些相應的命令來綜合考慮關於具體的記憶體的使用情況,和那些程式在佔用大量的記憶體.一般情況下,如果記憶體的佔用率比較高,但是,CPU的佔用很低的時候,可以考慮是有很多的應用程式佔用了記憶體沒有釋放,但是,並沒有佔用CPU時間,可以考慮應用程式,對於未佔用CPU時間和一些後臺的程式,釋放記憶體的佔用。
五、概念補充
Free memory
This is RAM that's not being used.
Wired memory
Information in this memory can't be moved to the hard disk, so it must stay in RAM. The amount of Wired memory depends on the applications you are using.
Active memory
This information is currently in memory, and has been recently used.
Inactive memory
This information in memory is not actively being used, but was recently used.
For example, if you've been using Mail and then quit it, the RAM that Mail was using is marked as Inactive memory. This Inactive memory is available for use by another application, just like Free memory. However, if you open Mail before its Inactive memory is used by a different application, Mail will open quicker because its Inactive memory is converted to Active memory, instead of loading Mail from the slower hard disk.
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/26250550/viewspace-1431960/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- AIX vmstat命令詳解AI
- vmstat linux命令詳解Linux
- stat 命令家族(1)- 詳解 vmstat
- vmstat詳解
- Vmstat 命令詳細介紹
- vmstat 引數詳解
- 【轉】Linux中Vmstat命令列出的屬性詳解Linux命令列
- vmstat命令
- vmstat的應用詳解
- meminfo vmstat procrank top等詳解
- vmstat與iostat詳解(zt)iOS
- Linux作業系統Vmstat命令列出的屬性詳解Linux作業系統命令列
- (轉)vmstat 命令
- 效能分析命令:vmstat
- linux vmstat命令Linux
- 每日Linux命令(2):vmstatLinux
- linux 監測命令(vmstat)Linux
- aix基本命令之vmstatAI
- [轉載]Aix vmstat命令解析AI
- Linux vmstat命令基本使用Linux
- Linux 命令使用筆記【vmstat】Linux筆記
- 每天一個 Linux 命令(46): vmstat 命令Linux
- linux高階工具命令 -- vmstat介紹Linux
- Dockerfile 命令詳解Docker
- tcpdump命令詳解TCP
- getsebool命令詳解
- w命令詳解
- GCC命令詳解GC
- echo命令詳解
- brctl 命令詳解
- rsync命令詳解
- echo 命令詳解
- date 命令詳解
- free 命令詳解
- NPM命令詳解NPM
- docker命令詳解Docker
- ps命令詳解
- lsof命令詳解