Mem:表示物理內存統計
-/+ buffers/cached:表示物理內存的緩存統計
Swap:表示硬盤上交換分區的使用狀況,這裏咱們不去關心。
系統的總物理內存:255268Kb(256M),但系統當前真正可用的內存b並非第一行free 標記的 16936Kb,它僅表明未被分配的內存。算法
第1行 Mem: total:表示物理內存總量。
used:表示總計分配給緩存(包含buffers 與cache )使用的數量,但其中可能部分緩存並未實際使用。
free:未被分配的內存。
shared:共享內存,通常系統不會用到,這裏也不討論(swap是個什麼東東??)。瀏覽器
buffers:系統分配但未被使用的buffers 數量。
cached:系統分配但未被使用的cache 數量(buffers與cached啥區別?), total = used + free 第2行 -/+ buffers/cached: used:也就是第一行中的used - buffers-cached 也是實際使用的內存總量。
free:未被使用的buffers 與cache 和未被分配的內存之和,這就是系統當前實際可用內存。 free 2= buffers1 + cached1 + free1 //free2爲第二行、buffers1等爲第一行緩存
補充說明:free指令會顯示內存的使用狀況,包括實體內存,虛擬的交換文件內存,共享內存區段,以及系統核心使用的緩衝區等。服務器
參 數:
-b 以Byte爲單位顯示內存使用狀況。
-k 以KB爲單位顯示內存使用狀況。
-m 以MB爲單位顯示內存使用狀況。
-o 不顯示緩衝區調節列。
-s<間隔秒數> 持續觀察內存使用情況。
-t 顯示內存總和列。
-V 顯示版本信息。babel
統計信息內容解釋:網絡
第一行是任務隊列信息,同 uptime 命令的執行結果。app
第二行爲進程信息。
total 進程總數
running 正在運行的進程數
sleeping 睡眠的進程數
stopped 中止的進程數
zombie 殭屍進程數socket
第三行爲CPU信息。
us 用戶空間佔用CPU百分比
sy 內核空間佔用CPU百分比
ni 用戶進程空間內改變過優先級的進程佔用CPU百分比
id 空閒CPU百分比
wa 等待輸入輸出的CPU時間百分比
hi 硬件中斷
si 軟件中斷工具
最後兩行爲內存信息。oop
Mem:total 物理內存總量
used 使用的物理內存總量
free 空閒內存總量
buffers 用做內核緩存的內存量
swap是個什麼東東?:total 交換區總量
used 使用的交換區總量
free 空閒交換區總量
cached 緩衝的交換區總量
進程信息區
默認狀況下僅顯示比較重要的 PID、USER、PR、NI、VIRT、RES、SHR、S、%CPU、%MEM、TIME+、COMMAND 列。
PID 進程id
USER 進程全部者的用戶名
PR 優先級
NI nice值。負值表示高優先級,正值表示低優先級
VIRT 進程使用的虛擬內存總量,單位kb。VIRT=SWAP+RES
RES 進程使用的、未被換出的物理內存大小,單位kb。RES=CODE+DATA
SHR 共享內存大小,單位kb
S 進程狀態:
D=不可中斷的睡眠狀態
R=運行
S=睡眠
T=跟蹤/中止
Z=殭屍進程
%CPU 上次更新到如今的CPU時間佔用百分比
%MEM 進程使用的物理內存百分比
TIME+ 進程使用的CPU時間總計,單位1/100秒
COMMAND 命令名/命令行
vmstat是Virtual Meomory Statistics(虛擬內存統計)的縮寫, 是實時系統監控工具。該命令經過使用knlist子程序和/dev/kmen僞設備驅動器訪問這些數據,輸出信息直接打印在屏幕。vmstat反饋的與CPU相關的信息包括:
1.多少任務在運行
2.CPU使用的狀況
3.CPU收到多少中斷
4.發生多少上下文切換
vmstat的語法以下: vmstat [delay [count]]
參數 解釋
delay 相鄰的兩次採樣的間隔時間
count 採樣的次數,count只能和delay一塊兒使用
當沒有參數時,vmstat則顯示系統啓動之後全部信息的平均值。有delay時,第一行的信息自系統啓動以來的平均信息。從第二行開始,輸出爲前一個delay時間段的平均信息。當系統有多個CPU時,輸出爲全部CPU的平均值。
參數 解釋
任務的信息(procs)
範例1:average mode (粗略信息)
當vmstat不帶參數時,對應的輸出值是從系統啓動以來的平均值,而r和b則對應的是完成這一命令時,系統的值。從下面例子,能夠看出系統基本出去閒置狀態(idle)。自啓動以來,CPU在用戶態消耗時間爲5%,在覈心態消耗爲本1%,剩下的爲閒置時間。須要指出的是:這裏的用戶態時間包括nice值爲負的進程的時間。
範例2:average mode (詳細信息)
命令格式: vmstat –s
這裏只討論與CPU相關信息。「CPU ticks」表示自系統啓動CPU運行時間,這裏以tick爲時間單位。用tick來表示us,sy id 和wa的時間;forks指自從系統啓動以來,所建立的新任務的個數。這些信息從/proc/stat 的第一行和」processes」行得到。
結果解釋
non-nice user cpu ticks 自系統啓動以來,CPU在用戶態下運行非nice進程的時間,單位爲jiffies user
nice user cpu ticks 自系統啓動以來,CPU在用戶態下運行nice進程的時間,單位爲jiffies nice
system cpu ticks 自系統啓動以來,CPU處於系統狀態的時間,單位爲jiffies sys
idle cpu ticks 自系統啓動以來,CPU處於閒置狀態的時間,單位爲jiffies idle
IO-wait cpu ticks 自系統啓動以來,CPU處理IO中斷的時間,單位爲jiffies iowait
IRQ cpu ticks 自系統啓動以來,CPU處理硬中斷的時間,單位爲jiffies irq
softing cpu ticks 自系統啓動以來,CPU處理軟中斷的時間,單位爲jiffies Softirq
interrupts 自系統啓動以來,發生的全部的中斷的次數目 Intr
CPU context switches 自系統啓動以來,發生的上下文交換的次數 Ctxt
boot time 自系統啓動以來到如今運行的時間,單位爲秒。 btime
forks 自系統啓動以來所建立的任務的個數目。 Process
範例3:按期採樣(delay [count])
按期採樣數據是指每隔delay時間,採樣一次。當count 爲0時,vmstat 將不停地按期報告信息;不然當報告count次後,vmstat 命令中止運行。
第一行的信息如同範例1,是自系統啓動以來的平均信息。從第二行開始,每行的意思是:r和b採樣那一時刻系統運行隊列和等待隊列的狀況;而usystem參數(in,cs)以及CPU參數(us,sy,id,wa)對應的輸出值是系統在前一個delay的狀況。
從下面例子能夠看出上下文交換的次數小於中斷的發生次數。當系統大部分時間是空閒而且中斷大部分是時間中斷時,這種現象很可能發生。當時間中斷髮生時, 由於調度器沒有什麼任務可調度,因此不多發生上下文切換。
uptime是Linux系統經常使用的命令,用來報告系統已經運行多長時間,依此顯示的信息:如今時間,系統已經運行了的時間,目前有多少登錄用戶, 1分鐘系統平均負載,5分鐘系統平均負載,15分鐘系統平均負載。該命令從/proc/loadavg 中得到load average的信息。
範例1:系統只用一個CPU
若是是單CPU的系統來講,平均負載可能會高些。一般來講:若是系統有n個CPU並且平均負載小於n,則說明某些CPU還有空閒的時間片。經過該命令,你能知道CPU是否繁忙,可是沒法知道爲何忙。
命令位置: