vmstat是一個查看虛擬內存(Virtual Memory)使用狀況的工具,使用vmstat命令可以得到關於進程、內存、內存分頁、堵塞IO、traps及CPU活動的信息。
vmstat 最常用的有兩個數字參數,第一個參數是采樣的時間間隔數,單位是秒,第二個參數是采樣的次數,如果不寫就是一直采樣下去。
下面是使用 make -j10 編譯時輸出的報告:
procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu----- r b swpd free buff cache si so bi bo in cs us sy id wa st 0 0 0 4944468 261552 2525348 0 0 0 2 1 5 0 0 99 0 0 0 0 0 4944840 261552 2525348 0 0 0 48 359 176 1 0 99 0 0 0 0 0 4944584 261552 2525348 0 0 0 0 60 38 0 0 100 0 0 10 0 0 4885292 261552 2525360 0 0 0 0 7369 582 59 30 11 0 0 10 0 0 4868388 261552 2525424 0 0 0 0 8101 485 69 30 0 0 0
字段說明詳見 man vmstat ,如下:
Procs(進程):
r: 運行隊列中進程數量
b: 等待IO的進程數量,即阻塞的進程
Memory(內存):
swpd: 虛擬內存大小
free: 可用內存大小
buff: 用作緩沖的內存大小
cache: 用作緩存的內存大小
Swap:
si: Amount of memory swapped in from disk (/s).
so: Amount of memory swapped to disk (/s).
IO:(現在的Linux版本塊的大小為1024bytes)
bi: 每秒讀取的塊數
bo: 每秒寫入的塊數
系統:
in: 每秒中斷數,包括時鍾中斷。
cs: 每秒上下文切換數。
CPU(以百分比表示):
us: 用戶進程執行時間(user time)
sy: 系統進程執行時間(system time)
id: 空閑時間(包括IO等待時間)
wa: 等待IO時間
top:
可以動態觀察系統進程狀況,方便系統管理員實時了解系統資源現狀。
常用熱鍵 | 用途 |
---|---|
t | 顯示摘要信息開關. |
m | 顯示內存信息開關. |
A | 分類顯示系統不同資源的使用大戶。有助於快速識別系統中資源消耗多的任務。 |
f | 添加刪除所要顯示列. |
o | 調整所要顯示列的順序. |
r | 調整一個正在運行的進程Nice值. |
k | 結束一個正在運行的進程. |
z | 彩色/黑白顯示開關 |
1 | 單CPU顯示開關 |
H | 顯示線程 |
x | 高亮顯示排序的列 |
y | 高亮顯示正在運行的任務 |
z | 彩色、黑白顯示 |
Z | 選擇顏色模板(a或 w來調整,回車確定) |
N | 按PID排序 |
M | 按內存使用排序 |
P | 按CPU使用排序 |
<(>) | 以當前排序列的左邊(或右邊)列進行排序 |
R | 反向排序 |
PR (Priority):即進程的優先級,或者通俗點說就是程序被CPU執行的先后順序,此值越小進程的優先級別越高。
NI (Nice value):Nice值,其表示進程可被執行的優先級的修正數值。如前面所說,PRI值越小越快被執行,那么加入nice值后,將會使得PRI變為:PRI(new)=PRI(old)+nice。這樣,當nice值為負值的時候,那么該程序將會優先級值將變小,即其優先級會變高,則其越快被執行。在UNIX系統或者LINUX系統中,使用從-20到+19的一個可變數值來表示這個nice值。
uptime 命令主要用於獲取主機運行時間和查詢linux系統負載等信息。
依次顯示系統已經運行了多長時間,信息顯示依次為:現在時間、系統已經運行了多長時間、目前有多少登陸用戶、系統在過去的1分鍾、5分鍾和15分鍾內的平均負載。
08:00:30 up 5 days, 1:29, 2 users, load average: 0.08, 0.05, 0.08
free 命令
total used free shared buffers cached Mem: 8160468 2470356 5690112 0 240448 1866024 -/+ buffers/cache: 363884 7796584 Swap: 0 0 0
對於應用程序來說,buffers/cached 是等於可用的,因為buffer/cached是為了提高文件讀取的性能,當應用程序需在用到內存的時候,buffer/cached會很快地被回收。從應用程序的角度來說,可用內存= free buffers+cached = total-used
pmap 命令可以顯示進程的內存映射,使用這個命令可以找出造成內存瓶頸的原因。
while true; do pmap -d 3066 | tail -1; sleep 2; done
mapped: 11952K writeable/private: 248K shared: 0K mapped: 11952K writeable/private: 248K shared: 0K mapped: 11952K writeable/private: 248K shared: 0K