系統記憶體分享參考
執行命令:
free -m
其中的相關說明: Mem:表示實體記憶體統計
-/+ buffers/cached:表示實體記憶體的快取統計
Swap:表示硬碟上交換分割槽的使用情況(這裡我們不去關心)
系統的總實體記憶體:255268Kb(256M),但系統當前真正可用的記憶體並不是第一行free 標記的 16936Kb,它僅代表未被分配的記憶體。
我們使用total1、used1、free1、used2、free2 等名稱來代表上面統計資料的各值,1、2 分別代表第一行和第二行的資料。
total1: 表示實體記憶體總量。
used1: 表示總計分配給快取(包含buffers 與cache )使用的數量,但其中可能部分快取並未實際使用。
free1: 未被分配的記憶體。
shared1: 共享記憶體,一般系統不會用到,這裡也不討論。
buffers1: 系統分配但未被使用的buffers 數量。
cached1: 系統分配但未被使用的cache 數量。buffer 與cache 的區別見後面。 used2: 實際使用的buffers 與cache 總量,也是實際使用的記憶體總量。
free2: 未被使用的buffers 與cache 和未被分配的記憶體之和,這就是系統當前實際可用記憶體。 可以整理出如下等式:
total1 = used1 + free1
total1 = used2 + free2
used1 = buffers1 + cached1 + used2
free2 = buffers1 + cached1 + free1
複製程式碼
區別:
第二行(mem)的used/free與第三行(-/+ buffers/cache) used/free的區別。
這兩個的區別在於使用的角度來看,第一行是從OS的角度來看,因為對於OS,buffers/cached 都是屬於被使用,所以他的可用記憶體是8908KB,已用記憶體是377116KB,其中包括,核心(OS)使用+Application(X,oracle,etc)使用的+buffers+cached.
第三行所指的是從應用程式角度來看,對於應用程式來說,buffers/cached 是等於可用的,因為buffer/cached是為了提高檔案讀取的效能,當應用程式需在用到記憶體的時候,buffer/cached會很快地被回收。
所以從應用程式的角度來說,可用記憶體=系統free( memory+buffers+cached.)
如上例:
185656=8908+21280+155468
接下來解釋什麼時候記憶體會被交換,以及按什麼方交換。
當可用記憶體少於額定值的時候,就會開會進行交換.
如何看額定值(RHEL4.0):
#cat /proc/meminfo
交換將通過三個途徑來減少系統中使用的物理頁面的個數:
1.減少緩衝與頁面cache的大小,
2.將系統V型別的記憶體頁面交換出去,
3.換出或者丟棄頁面。(Application 佔用的記憶體頁,也就是實體記憶體不足)。
事實上,少量地使用swap是不是影響到系統效能的。
複製程式碼
程式佔用記憶體分析
執行命令:
top -p pid
顯示引數:
PID(Process ID):程式標示號。
USER:程式所有者的使用者名稱。
PR:程式的優先順序別。
NI:程式的優先順序別數值。
VIRT:程式佔用的虛擬記憶體值。
RES:程式佔用的實體記憶體值。(一般看實際佔用記憶體)
SHR:程式使用的共享記憶體值。
S:程式的狀態,其中S表示休眠,R表示正在執行,Z表示僵死狀態,N表示該程式優先值是負數。
%CPU:該程式佔用的CPU使用率。
%MEM:該程式佔用的實體記憶體和總記憶體的百分比。
TIME+:該程式啟動後佔用的總的CPU時間。
Command:程式啟動的啟動命令名稱,如果這一行顯示不下,程式會有一個完整的命令列。
複製程式碼