我使用以下命令获取所有保留内存(以 KB 为单位)的总和:-
ps aux --sort -rss | awk '{sum +=$6} END {print sum}'
OUTPUT: 14746220 i.e. 14.74GB
但是free -g returns 27GB
正如所用。为什么两个输出有差异?ps 不是显示所有内存分配吗?
答案1
我遇到了完全相同的情况。htop
和top
都报告了大约 95% 的使用率(不包括缓冲区/缓存), 也是如此free -m
。 当汇总 中的进程时ps
,我只使用了大约 10% 的内存。 我发现这些网站非常有价值:
在我的例子中,是 dentries/inode 缓存占满了内存。我不知道为什么free
不把它们算作缓冲区/缓存。您可以使用以下命令刷新此信息,这不会损害系统:
echo 3 > /proc/sys/vm/drop_caches
有关此信息的详细信息如下:https://linux-mm.org/Drop_Caches