free 显示使用的内存多于顶级进程总数

ipe*_*eer 4 linux memory top memory-usage centos6

更新:

这是由于 nss-softkn 的一个已知问题引起的。见这篇文章:https : //www.splyt.com/blog/2014-05-16-optimizing-aws-nss-softoken


当我从我的 centos 6.5 机器上运行 free -m 时,我看到我只有大约 1400 mb 的可用内存,包括缓存。当我做 top 时,按内存排序并加起来我只看到大约 1600 个正在使用的进程。我应该有更多的空闲内存。这发生在我们的几个盒子上。

[root@db1 ~]# free -m
              total      used       free     shared    buffers     cached
Mem:          7840       7793         47          0        287       1357
-/+ buffers/cache:       6148       1692
Swap:         7983          7       7976
Run Code Online (Sandbox Code Playgroud)

最高输出

在此处输入图片说明

这是可视化进程消耗的内存的更好方法:

在此处输入图片说明

c4u*_*elf 10

1692m根据Linux,您有大约空闲内存。

在顶部的“Mem”行中,您的内存似乎接近 99% (7793m / 7840m),但实际上您只使用了大约 78% 的可用内存。另请参阅http://www.linuxatemyram.com/以获得更深入的解释。


Free vs Top vs /proc/meminfo

进程内存
将进程使用的内存相加top并尝试将其与使用的内存相匹配free会给您带来麻烦。由于top分页,您甚至可能无法获得此列表中的所有进程,更好的方法是使用ps aux --sort -rss按内存使用对进程进行排序。

磁盘缓存
Linux 将使用您不使用的内存来让您在后台运行得更快。这在free的“缓存”列中注明,这就是为什么您应该查看“-/+ 缓冲区/缓存”旁边的值以了解实际使用的和可用的内存。

内核平板缓存
内核模块和驱动程序有一种方式来使用你的未使用的内存。“SReclaimable”是您可以在内存压力下使用的内存。有一个很酷的工具slabtop可以识别内核是如何缓存的。

清除缓存

echo 1 > /proc/sys/vm/drop_caches 释放页面缓存

echo 2 > /proc/sys/vm/drop_caches 释放 dentry 和 inode

echo 3 > /proc/sys/vm/drop_caches 释放页面缓存、dentries 和 inode

也可以看看