linux – free显示使用的内存比顶级进程总数多

更新:

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

当我从我的centos 6.5盒中运行free -m时,我发现我只有大约1400 mb的可用内存,包括缓存.当我做顶部时,按内存排序并添加我只看到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

最高输出

以下是可视化进程消耗的内存的更好方法

解决方法

根据Linux,你有大约1692m的可用内存.

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

免费vs顶级vs / proc / meminfo

进程内存.
将进程中使用的内存加起来并尝试将其与已用的已用内存相匹配将会给您带来不愉快的时间.由于顶部分页,您甚至可能无法获得此列表中的所有进程更好的方法是使用ps aux –sort -RSS按内存使用顺序排序进程.

磁盘缓存.
Linux将使用你不使用的内存来使你在幕后运行得更快.这在free的“缓存”列中有所说明,这就是为什么你应该查看“ – / buffers / cache”旁边的值来了解实际使用和可用内存.

内核块缓存.
内核模块和驱动程序也可以使用未使用的内存. “SReclaimable”是你可以在内存压力下使用的内存.有一个很酷的工具叫slabtop,可以识别内核是如何缓存的.

清除缓存.

echo 1> / proc / sys / vm / drop_caches释放pagecache

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

echo 3> / proc / sys / vm / drop_caches释放pagecache,dentries和inode

也可以看看

> Meaning of the buffers/cache line in the output of free
> Explanation on Resident Set Size/Virtual Size
> Slab Allocation

相关文章

在Linux上编写运行C语言程序,经常会遇到程序崩溃、卡死等异...
git使用小结很多人可能和我一样,起初对git是一无所知的。我...
1. 操作系统环境、安装包准备 宿主机:Max OSX 10.10.5 虚拟...
因为业务系统需求,需要对web服务作nginx代理,在不断的尝试...
Linux模块机制浅析 Linux允许用户通过插入模块,实现干预内核...
一、Hadoop HA的Web页面访问 Hadoop开启HA后,会同时存在两个...