可以直接使用top命令後,檢視%mem的內容。可以選擇按程序檢視或者按使用者檢視,如想檢視oracle使用者的程序記憶體使用情況的話可以使用如下的命令:
(1)top
top命令是linux下常用的效能分析工具,能夠實時顯示系統中各個程序的資源占用狀況,類似於windows的任務管理器
可以直接使用top命令後,檢視%mem的內容。可以選擇按程序檢視或者按使用者檢視,如想檢視oracle使用者的程序記憶體使用情況的話可以使用如下的命令:
$ top -u oracle
內容解釋:
pid:程序的id常用的命令:user:程序所有者
pr:程序的優先級別,越小越優先被執行
ninice:值
virt:程序占用的虛擬記憶體
res:程序占用的物理記憶體
shr:程序使用的共享記憶體
s:程序的狀態。s表示休眠,r表示正在執行,z表示僵死狀態,n表示該程序優先值為負數
%cpu:程序占用cpu的使用率
%mem:程序使用的物理記憶體和總記憶體的百分比
time+:該程序啟動後占用的總的cpu時間,即占用cpu使用時間的累加值。
command:程序啟動命令名稱
p:按%cpu使用率排行可以根據程序檢視程序相關資訊占用的記憶體情況,(程序號可以通過ps檢視)如下所示:t:按mite+排行
m:按%mem排行
$ pmap -d 14596
如下例所示:
$ ps -e -o 'pid,comm,args,pcpu,rsz,vsz,stime,user,uid' 其中rsz是是實際記憶體
$ ps -e -o 'pid,comm,args,pcpu,rsz,vsz,stime,user,uid' | grep oracle | sort -nrk5
其中rsz為實際記憶體,上例實現按記憶體排序,由大到小
1. 在linux下,檢視乙個執行中的程式, 占用了多少記憶體, 一般的命令有
(1). ps aux:
其中 vsz(或vss)列 表示,程式占用了多少虛擬記憶體。
rss列 表示, 程式占用了多少物理記憶體。
虛擬記憶體可以不用考慮,它並不占用實際物理記憶體。
(2). top 命令也可以
其中 virt(或vss)列 表示,程式占用了多少虛擬記憶體。 同 ps aux 中的 vsz列
res列 表示, 程式占用了多少物理記憶體。同 ps aux 中的rss列
2.在linux下, 檢視當前系統占用了多少記憶體, 一般的命令是 free
其中, free就是系統還有多少記憶體可以使用。
但由於 linux 系統對記憶體使用有乙個原則, 就是, 記憶體是寶貴的, 能使用多少就使用多少。 所以, linux會把已經呼叫過的包快取起來,放在記憶體裡。
這樣,實際上,可以使用的記憶體,就可以理解為, free+buffers+cached
3.當你了解完這些命令以後, 再去使用ps aux 命令去檢視的時候, 會發現乙個奇怪的現象。
所有的 rss 列的資料,加起來, 比物理記憶體的數要大很多。
比如, 物理記憶體為2g, 而rss列的資料加起來,可能有5個g之多, 這是怎麼回事了?
這是因為rss列的值騙了我們。
linux的記憶體機制是這樣的:
在執行乙個程式時, linux會呼叫該程式依賴的鏈結庫, 如lib.xx.so。 首先看該鏈結庫是否被對映進記憶體中,如果沒有被對映,則將**段與資料段對映到記憶體中,否則只是將其加入程序的位址空間。
這樣,當n個程式,依賴到lib.xx.so的時候, 實際上,記憶體中只有乙個lib.xx.so ,而不是n個。
而rss在顯示乙個程式占用的實際物理記憶體時, 將lib.xx.so也算了進來。
比如, x程式, 本身占用記憶體為5m, lib.xx.so 占用記憶體2m,lib.xx.so被n個程式共享依賴。 則rss顯示為,x程式執行,占用記憶體為7m。 實際上, x程式占用了5m空間。 多餘的2m被討入到rss中了。
當你在用ps aux顯示記憶體占用情況時, n個共享依賴lib.xx.so的n個程式,都把這2m空間,算在自己的rss中了, 這樣rss的sum值,就比實際物理記憶體多了。
當然, linux的記憶體使用機制很複雜, 不是一句兩句能說清楚的。這裡只是簡單的說明了一下, ps aux中的rss值, 並不能真實反映物理記憶體的使用情況。
4. 如果檢視更詳細的記憶體使用情況, 可用以下幾種方法, 或者幾種方法結合使用:
這幾種方法,都需要root賬戶的許可權
(1). pmap -d $pid
$pid 是正在執行的程式的pid
(2). cat /proc/$pid/smaps
smaps的資料比較詳細,可簡單的歸納一下,歸納的命令如下:
cat /proc/$pid/smaps | awk '/size|rss|pss|shared|private|referenced|swap/end'
(3). cat /proc/$pid/maps
(4). cat /proc/$pid/statm
輸出解釋
第一列 size:任務虛擬位址空間大小
第二列 resident:正在使用的物理記憶體大小
第三列 shared:共享頁數
第四列 trs:程式所擁有的可執行虛擬記憶體大小
第五列 lrs:被映像倒任務的虛擬記憶體空間的庫的大小
第六列 drs:程式資料段和使用者態的棧的大小
第七列 dt:髒頁數量
持續學習、持續收穫才能帶來持續的滿足和快樂!
檢視LINUX程序記憶體占用情況
可以直接使用top命令後,檢視 mem的內容。可以選擇按程序檢視或者按使用者檢視,如想檢視oracle使用者的程序記憶體使用情況的話可以使用如下的命令 1 top top命令是linux下常用的效能分析工具,能夠實時顯示系統中各個程序的資源占用狀況,類似於windows的任務管理器 可以直接使用to...
檢視LINUX程序記憶體占用情況
可以直接使用top命令後,檢視 mem的內容。可以選擇按程序檢視或者按使用者檢視,如想檢視oracle使用者的程序記憶體使用情況的話可以使用如下的命令 1 top top命令是linux下常用的效能分析工具,能夠實時顯示系統中各個程序的資源占用狀況,類似於windows的任務管理器 可以直接使用to...
檢視LINUX程序記憶體占用情況
可以直接使用top命令後,檢視 mem的內容。可以選擇按程序檢視或者按使用者檢視,如想檢視oracle使用者的程序記憶體使用情況的話可以使用如下的命令 1 top top命令是linux下常用的效能分析工具,能夠實時顯示系統中各個程序的資源占用狀況,類似於windows的任務管理器 可以直接使用to...