2013-01-07 39 views
-1
free -m 
      total  used  free  shared buffers  cached 
Mem:   7974  6993  981   0  557  893 
-/+ buffers/cache:  5542  2432 
Swap:   2047   0  2047 

您看到我的系統使用了5542MB內存,但是當我使用ps aux來檢查誰使用它時,我無法弄清楚。誰吃我的記憶?

ps aux | awk '$6 > 0{print $3, $4, $5, $6}' 
%CPU %MEM VSZ RSS 
0.0 0.0 10344 700 
0.0 0.0 51172 2092 
0.0 0.0 51172 1032 
0.0 0.0 68296 1600 
0.0 0.0 12692 872 
0.0 0.0 33840 864 
0.0 0.0 10728 376 
0.0 0.0 8564 648 
0.0 0.0 74856 1132 
53.2 0.5 930408 45824 
0.0 0.0 24236 1768 
0.0 0.0 51172 2100 
0.0 0.0 51172 1040 
0.0 0.0 68296 1600 
51.9 0.5 864348 42740 
0.0 0.0 34360 2672 
0.0 0.0 3784 528 
0.0 0.0 3784 532 
0.0 0.0 3784 528 
0.0 0.0 3784 528 
0.0 0.0 3784 532 
0.0 0.0 65604 900 
0.0 0.0 63916 832 
0.0 0.0 94020 5980 
0.0 0.0 3836 468 
0.0 0.0 93736 4000 
0.0 0.0 3788 484 
0.0 0.0 3652 336 
0.0 0.0 3652 336 
0.0 0.0 3684 344 
0.0 0.0 3664 324 
0.0 0.0 19184 4880 
0.0 0.0 3704 324 
0.0 0.0 340176 1312 
0.0 0.0 46544 816 
0.0 0.0 10792 1092 
0.0 0.0 3824 400 
0.0 0.0 3640 292 
0.0 0.0 3652 332 
0.0 0.0 3652 332 
0.0 0.0 3664 328 
0.0 0.0 4264 1004 
0.0 0.0 4584 2368 
0.0 0.0 77724 3060 
0.0 0.0 89280 2704 

你看,那個RSS的總和爲152.484MB,VSZ的總和爲3376.34MB,所以我不知道是誰吃了內存的其餘部分,內核?

+2

磁盤緩存可能?請參閱http://stackoverflow.com/questions/6345020/linux-memory-buffer-vs-cache。 – dbrank0

+0

對不起,我不知道,現在會做。 –

回答

2

從我的系統:

$ grep ^S[^wh] /proc/meminfo 
Slab:   4707412 kB 
SReclaimable: 4602900 kB 
SUnreclaim:  104512 kB 

這三個指標是指平板alocator舉行的數據結構。雖然SUnreclaimable是不好的,SReclaimable就像系統中的任何其他緩存 - 它將在內存壓力下用於進程。不幸的是free似乎沒有考慮到,正如in this older answer of mine中詳細提到的,這部分內存可以輕鬆增長到幾GB的內存......

如果你真的想看看你的進程使用了​​多少內存您可以嘗試通過我的文章中描述的緩存清空過程 - 您可以跳過與交換相關的部分,因爲您的系統似乎沒有使用任何交換內存。

+0

感謝您的回答,並且當我使用slabtop檢查哪個發現dentry_cache有2000w個對象時,然後刪除緩存,似乎每件事情都可以。 –