free 显示使用的内存比 top process total 多

free 显示使用的内存比 top process total 多

更新:

这是由于 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

顶部输出

在此处输入图片描述

以下是一个更好的方法来可视化进程所消耗的内存:

在此处输入图片描述

答案1

1692m根据 Linux,您有大约的可用内存。

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


免费与 Top 与 /proc/meminfo

进程内存
将 中的进程使用的内存相加top,并尝试将其与 的已用内存进行匹配,free这会让您非常头疼。由于top分页,您可能甚至无法获得此列表中的所有进程,更好的方法是使用ps aux --sort -rss按内存使用情况对进程进行排序。

磁盘缓存。Linux
将使用您未使用的内存来在后台为您提高运行速度。这在free的“缓存”列中有所说明,因此您应该查看“-/+ 缓冲区/缓存”旁边的值以了解实际使用和空闲的内存。

内核 Slab 缓存.
内核模块和驱动程序有办法使用未使用的内存。“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释放页面缓存、目录项和 inode

也可以看看

答案2

我在这里发现了问题。我需要查看 /proc/meminfo,看看内核缓存了哪些内容作为 slab 空间。我的问题是无法理解 top/ps/free 说我有多少“可用”内存。事实上,这些数字加起来不对。“free”命令会告诉我,我大约有 1692mb 可用,但我的进程总共只占总内存的 20% 左右。

这篇文章描述了我的具体问题:

http://blog.logicmonitor.com/2014/10/09/more-linux-memory-free-memory-that-is-not-free-nor-cache/

答案3

基于http://blog.logicmonitor.com/2014/10/09/more-linux-memory-free-memory-that-is-not-free-nor-cache,我创建了一个名为 free 的脚本(我将其放在 .bash_profile 中 /usr/bin 前面的路径中),它产生了有用的结果:

#!/usr/bin/perl

$result = `/usr/bin/free`;
print "$result";

if ($result =~ /cache:\s+(\d+)/)
{
 $mem = $1;
 $slab = `cat /proc/meminfo|grep SReclaimable`; $slab =~ s/[^\d]//g;
 print "Slab                  $slab\n";
 print "Actual Used        ** ",$mem-$slab," **\n";
}

答案4

我认为您误读了缓冲区/缓存 - 根据 +/- 缓冲区/缓存行,有 > 6 GB 被用作内存缓存。如果需要,可以将其占用 - 因为不需要,所以操作系统会使用它来缓存磁盘读取和类似操作。

相关内容