为什么“free”的输出与“ps”中每个进程的内存使用总和不同?

为什么“free”的输出与“ps”中每个进程的内存使用总和不同?

我有一个 Redhat 系统,总共有 64GB RAM。根据free输出,它使用 47GB RAM。

 free -g
             total       used       free     shared    buffers     cached
Mem:            62         59          2          0          3          8
-/+ buffers/cache:         47         15
Swap:            7          0          7

但是,当我添加进程的单独内存使用量时,总内存使用量值似乎远37GB 小于47GB。有人可以解释一下为什么这两者有 10GB 的差异吗?

我尝试阅读许多手册页和文章。但对于我这样的凡人来说,它们都没有帮助。

有没有办法可视化输出所用内存free(在我的例子中为 47GB)的每一位(双关语)?

ps -eo size |  awk '{mem += $1} END {print mem/1024/1024}'
37.2644

ps aux |awk '{rsstotal += $6} END {print rsstotal/1024/1024}'
17.9053

这是 /proc/meminfo 显示的内容:

cat /proc/meminfo
MemTotal:       65963224 kB
MemFree:         2923708 kB
Buffers:         3716988 kB
Cached:          9134512 kB
SwapCached:        36260 kB
Active:         21634524 kB
Inactive:        9797536 kB
Active(anon):   16855836 kB
Inactive(anon):  1725656 kB
Active(file):    4778688 kB
Inactive(file):  8071880 kB
Unevictable:           0 kB
Mlocked:               0 kB
SwapTotal:       8241144 kB
SwapFree:        8066288 kB
Dirty:              3720 kB
Writeback:             0 kB
AnonPages:      18561916 kB
Mapped:            31756 kB
Shmem:               732 kB
Slab:           14282976 kB
SReclaimable:   13920332 kB
SUnreclaim:       362644 kB
KernelStack:       33944 kB
PageTables:        71732 kB
NFS_Unstable:          0 kB
Bounce:                0 kB
WritebackTmp:          0 kB
CommitLimit:    32834148 kB
Committed_AS:   21413336 kB
VmallocTotal:   34359738367 kB
VmallocUsed:      262076 kB
VmallocChunk:   34359450304 kB
HardwareCorrupted:     0 kB
AnonHugePages:         0 kB
HugePages_Total:    8192
HugePages_Free:     7840
HugePages_Rsvd:       55
HugePages_Surp:        0
Hugepagesize:       2048 kB
DirectMap4k:        8192 kB
DirectMap2M:     2088960 kB
DirectMap1G:    65011712 kB

有人可以帮忙吗?

相关内容