日期:2014-05-16  浏览次数:20587 次

Linux Used内存到底哪里去了

原创文章,转载请注明: 转载自系统技术非业余研究

本文链接地址: Linux Used内存到底哪里去了?

?

前几天 纯上 同学问了一个问题:

?

我ps aux看到的RSS内存只有不到30M,但是free看到内存却已经使用了7,8G了,已经开始swap了,请问ps aux的实际物理内存统计是不是漏了哪些内存没算?我有什么办法确定free中used的内存都去哪儿了呢?

?

这个问题不止一个同学遇到过了,之前子嘉同学也遇到这个问题,内存的计算总是一个迷糊账。 我们今天来把它算个清楚下!

?

通常我们是这样看内存的剩余情况的:

?

view source
?
print?
$free -m
???????????? total?????? used?????? free shared???
buffers???? cached
Mem:???????? 48262?????? 7913?????
40349????????? 0???????? 14??????? 267
-/+ buffers/cache:?????? 7631?????
40631
Swap:???????? 2047??????? 336??????
1711

?

那么这个信息是如何解读的呢,以下这个图解释的挺清楚的!
free

?

补充(不少人反映图不清晰,请参考:http://www.redbooks.ibm.com/redpapers/pdfs/redp4285.pdf P46-47)

?

上面的情况下我们总的内存有48262M,用掉了7913M。 其中buffer+cache总共14+267=281M, 由于这种类型的内存是可以回收的,虽然我们用掉了7913M,但是实际上我们如果实在需要的话,这部分buffer/cache内存是可以放出来的。

?

我们来演示下:

?

view source
?
print?
$ sudo sysctl
vm.drop_caches=3
vm.drop_caches = 3
$ free -m
???????????? total?????? used?????? free shared???
buffers???? cached
Mem:???????