我用过的记忆在哪里消失了?

时间:2012-02-21 09:41:13

标签: linux memory system memory-leaks

我有一台拥有16GB物理内存并运行某些应用程序的Linux硬件服务器。这个服务器启动并运行了大约365天,直到现在,我正在观察显示内存不足的“free -m”。

             total       used       free     shared    buffers     cached
Mem:         14966      13451       1515          0        234        237
-/+ buffers/cache:      12979       1987
Swap:         4094        367       3727

据我所知,1987年系统中的实际可用内存不到14%。如果我在“ps -A v”输出中添加%MEM部分或从“top”添加,则它不会加起来为100%。

我需要明白为什么记忆力如此之低?

更新(2012年2月29日):
让我把这个问题分成两部分:
    1)具有较少空闲内存的系统     2)确定已用内存的去向。

对于1),我理解;如果系统在可用内存上运行不足,我们可能会看到性能逐渐下降。在某些时候,分页会为系统提供额外的空闲内存,从而恢复系统性能。如果我错了,请纠正我。

For 2),现在这就是我想要了解使用内存消失的地方。如果我总结输出“ps -A v”或“top -n 1 -b”中的%MEM,则不超过50%。那么在哪里可以解释其余40%的无法追踪的记忆。我们在服务器中有自己的内核模块。如果这些模块泄漏内存,他们会得到记录。是否可以知道内核模块中的泄漏量。

3 个答案:

答案 0 :(得分:8)

它没有低位运行。可用内存不足。但那没关系,因为免费记忆完全没用。 (可用内存是提供 no 好处的内存。可用内存是一种内存,与计算机一样,可以放在架子上。)

免费记忆很糟糕,没有任何意义。低可用内存是好的,这意味着你的系统已经找到了大部分内存的用途。

那有什么不好?如果您的系统,因为它没有足够的内存正在使用

答案 1 :(得分:6)

答案 2 :(得分:5)

我能够识别并解决我的问题。但它并非没有http://linux-mm.org/Low_On_Memory所提供信息的帮助。

slabinfo用于dentry的内存大约为5GB。发出" sync"命令脏页被同步到硬盘驱动器和命令" echo 3>的/ proc / SYS / VM / drop_caches"通过丢弃更多缓存来释放更多内存。

除了上述网站中的文献外,内核还以依赖于vfs_cache_pressure(/ proc / sys / vm / vfs_cache_pressure)的速率回收内存。

感谢大家的帮助。