Linux Used內(nèi)存到底哪里去了?


點擊「閱讀原文」查看良許原創(chuàng)精品視頻。
來自:系統(tǒng)技術非業(yè)余研究
作者:Yu Feng
鏈接:http://blog.yufeng.info/archives/245
點擊「閱讀原文」查看良許原創(chuàng)精品視頻。
來自:系統(tǒng)技術非業(yè)余研究
作者:Yu Feng
鏈接:http://blog.yufeng.info/archives/245
我ps aux看到的RSS內(nèi)存只有不到30M,但是free看到內(nèi)存卻已經(jīng)使用了7,8G了,已經(jīng)開始swap了,請問ps aux的實際物理內(nèi)存統(tǒng)計是不是漏了哪些內(nèi)存沒算?我有什么辦法確定free中used的內(nèi)存都去哪兒了呢?
$free?-m
?????????????total???????used???????free?????shared????buffers?????cached
Mem:?????????48262???????7913??????40349??????????0?????????14????????267
-/+?buffers/cache:???????7631??????40631
Swap:?????????2047????????336???????1711
$?sudo?sysctl?vm.drop_caches=3
vm.drop_caches?=?3
$?free?-m
?????????????total???????used???????free?????shared????buffers?????cached
Mem:?????????48262???????7676??????40586??????????0??????????3?????????41
-/+?buffers/cache:???????7631??????40631
Swap:?????????2047????????336???????1711到現(xiàn)在我們比較清楚幾個概念:
2. buffer/cache內(nèi)存可以釋放的。
3. used的內(nèi)存的概率。
這里首先我們來介紹下nmon這個工具,它對內(nèi)存的使用顯示比較直觀。


那這個字段什么意思呢?
man proc
/proc/[pid]/statm
Provides?information?about?memory?usage,?measured?in?pages.?The
columns?are:
size?total?program?size
(same?as?VmSize?in?/proc/[pid]/status)
resident?resident?set?size
(same?as?VmRSS?in?/proc/[pid]/status)
share?shared?pages?(from?shared?mappings)
text?text?(code)
lib?library?(unused?in?Linux?2.6)
data?data?+?stack
dt?dirty?pages?(unused?in?Linux?2.6)$?cat?RSS.sh
#/bin/bash???????????????????????????????????????????????????????????????????????????????????????????????????????????????
for?PROC?in?`ls??/proc/|grep?"^[0-9]"`
do
??if?[?-f?/proc/$PROC/statm?];?then
??????TEP=`cat?/proc/$PROC/statm?|?awk?'{print?($2)}'`
??????RSS=`expr?$RSS?+?$TEP`
??fi
done
RSS=`expr?$RSS?\*?4`
echo?$RSS"KB"
$?./RSS.sh??
7024692KB
$?slabtop
$?echo?`cat?/proc/slabinfo?|awk?'BEGIN{sum=0;}{sum=sum+$3*$4;}END{print?sum/1024/1024}'`?MB
904.256?MB伯瑜:
你還沒有計算page?tables的大小,還有struct?page也有一定的大小(每個頁一個,64bytes),如果是2.6.32的話,每個頁還有一個page_cgroup(32bytes),也就是說內(nèi)存大小的2.3%(96/4096)會被內(nèi)核固定使用的
含黛:
struct?page是系統(tǒng)boot的時候就會根據(jù)內(nèi)存大小算出來分配出去的,18內(nèi)核是1.56%左右,32內(nèi)核由于cgroup的原因會在2.3%$?echo?`grep?PageTables?/proc/meminfo?|?awk?'{print?$2}'`?KB
58052?KB1. 進程消耗。 2. slab消耗? 3.pagetable消耗。
$?cat?cm.sh
#/bin/bash
for?PROC?in?`ls?/proc/|grep?"^[0-9]"`
do
??if?[?-f?/proc/$PROC/statm?];?then
??????TEP=`cat?/proc/$PROC/statm?|?awk?'{print?($2)}'`
??????RSS=`expr?$RSS?+?$TEP`
??fi
done
RSS=`expr?$RSS?\*?4`
PageTable=`grep?PageTables?/proc/meminfo?|?awk?'{print?$2}'`
SlabInfo=`cat?/proc/slabinfo?|awk?'BEGIN{sum=0;}{sum=sum+$3*$4;}END{print?sum/1024/1024}'`
echo?$RSS"KB",?$PageTable"KB",?$SlabInfo"MB"
printf?"rss+pagetable+slabinfo=%sMB\n"?`echo?$RSS/1024?+?$PageTable/1024?+?$SlabInfo|bc`
free?-m
$?./cm.sh
7003756KB,?59272KB,?904.334MB
rss+pagetable+slabinfo=7800.334MB
?????????????total???????used???????free?????shared????buffers?????cached
Mem:?????????48262???????8050??????40211??????????0?????????17????????404
-/+?buffers/cache:???????7629??????40633
Swap:?????????2047????????336???????1711free報告說7629, 我們的cm腳本報告說7800.3M, 我們的CM多報了171M。
damn,這又怎么回事呢?
$?pmap?`pgrep?bash`
...
22923:???-bash
0000000000400000????848K?r-x--??/bin/bash
00000000006d3000?????40K?rw---??/bin/bash
00000000006dd000?????20K?rw---????[?anon?]
00000000008dc000?????36K?rw---??/bin/bash
00000000013c8000????592K?rw---????[?anon?]
000000335c400000????116K?r-x--??/lib64/libtinfo.so.5.7
...
0000003ec5220000??????4K?rw---??/lib64/ld-2.12.so
0000003ec5221000??????4K?rw---????[?anon?]
0000003ec5800000???1628K?r-x--??/lib64/libc-2.12.so
...
0000003ec5b9c000?????20K?rw---????[?anon?]
00007f331b910000??96836K?r----??/usr/lib/locale/locale-archive
00007f33217a1000?????48K?r-x--??/lib64/libnss_files-2.12.so
...
00007f33219af000?????12K?rw---????[?anon?]
00007f33219bf000??????8K?rw---????[?anon?]
00007f33219c1000?????28K?r--s-??/usr/lib64/gconv/gconv-modules.cache
00007f33219c8000??????4K?rw---????[?anon?]
00007fff5e553000?????84K?rw---????[?stack?]
00007fff5e5e4000??????4K?r-x--????[?anon?]
ffffffffff600000??????4K?r-x--????[?anon?]
?total???????????108720K推薦閱讀:
5T技術資源大放送!包括但不限于:C/C++,Linux,Python,Java,PHP,人工智能,單片機,樹莓派,等等。在公眾號內(nèi)回復「1024」,即可免費獲取!!
評論
圖片
表情
