我有一台拥有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%的无法追踪的记忆。我们在服务器中有自己的内核模块。如果这些模块泄漏内存,他们会得到记录。是否可以知道内核模块中的泄漏量。
答案 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)的速率回收内存。
感谢大家的帮助。