为什么在 Linux 中 ps 显示的物理内存使用情况与 free 不同? [关闭]

问题描述 投票:0回答:0

我有一个 Linux 系统,版本为 2.6.32-754.23.1.el6.x86_64 ([email protected])。我想知道所有正在运行的进程使用了多少物理内存。我尝试使用带有选项 -o rss 的 ps 命令来显示每个进程的驻留集大小,然后将它们相加。但是,结果比 free 命令显示的已用内存小得多。这是一个例子:

$ ps -eo rss |awk '{sum+=$1}END{print sum/1024/1024}'
4.72103
$ free -mh total
             total       used       free     shared    buffers     cached
Mem:           15G        14G       756M       184K       516M       977M
-/+ buffers/cache: 2098 13901 Swap: 8192 0 8192
Swap:         8.0G         0B       8.0G
$ ps --version
procps version 3.2.8
$ free -V
procps version 3.2.8

linux 版本:

$ lsb_release -a
LSB Version:    :base-4.0-amd64:base-4.0-noarch:core-4.0-amd64:core-4.0-noarch
Distributor ID: CentOS
Description:    CentOS release 6.8 (Final)
Release:    6.8
Codename:   Final

可以看到,ps命令显示所有进程使用的物理内存总量约为4.7GB,而free命令显示使用的内存只有14GB左右。为什么会有这么大的差异?如何获得所有进程的正确物理内存使用情况?谢谢。

top 命令显示:

Mem:  16333416k total, 15557460k used,   775956k free,   528860k buffers
Swap:  8389044k total,        0k used,  8389044k free,  1000988k cached
memory-management
© www.soinside.com 2019 - 2024. All rights reserved.