无法解释linux中的内存占用情况

无法解释linux中的内存占用情况

我正在使用 Debian 9.3,free命令返回

              total        used        free      shared  buff/cache   available
Mem:      131940516   100433176    29189576       33940     2317764    30413920
Swap:     124999676        7736   124991940

因此可用内存为 22%,但第四列ps aux --sort -rss总计为 20.9(已用内存的百分比)

cat /proc/meminfo | sort -k2,2nr返回

VmallocTotal:   34359738367 kB
CommitLimit:    190969932 kB
MemTotal:       131940516 kB
SwapTotal:      124999676 kB
SwapFree:       124991940 kB
DirectMap2M:    94552064 kB
DirectMap1G:    40894464 kB
Committed_AS:   31307212 kB
MemAvailable:   30854080 kB
MemFree:        29629760 kB
Active:         28760588 kB
AnonPages:      28192300 kB
Active(anon):   27489640 kB
Slab:            3245360 kB
SUnreclaim:      2746444 kB
Cached:          1735180 kB
Active(file):    1270948 kB
Inactive:        1252084 kB
DirectMap4k:      788164 kB
Inactive(anon):   738148 kB
Inactive(file):   513936 kB
SReclaimable:     498916 kB
Buffers:           83652 kB
PageTables:        62240 kB
Mapped:            47016 kB
Shmem:             33940 kB
KernelStack:       32352 kB
Hugepagesize:       2048 kB
SwapCached:         2004 kB
Dirty:                36 kB
AnonHugePages:         0 kB
Bounce:                0 kB
HardwareCorrupted:     0 kB
HugePages_Free:        0
HugePages_Rsvd:        0
HugePages_Surp:        0
HugePages_Total:       0
Mlocked:               0 kB
NFS_Unstable:          0 kB
ShmemHugePages:        0 kB
ShmemPmdMapped:        0 kB
Unevictable:           0 kB
VmallocChunk:          0 kB
VmallocUsed:           0 kB
Writeback:             0 kB
WritebackTmp:          0 kB

什么进程正在消耗我的内存?

答案1

MemAvailable:   30854080 kB

不进行交换,可用内存不足 29 GB。如果不进行任何更改,此工作负载不会面临内存压力。实际上,由于其中大部分是 MemFree,因此被“浪费”,甚至没有用于文件缓存。

尽管它是内存中工作集的一个很好的指标,但对 RSS 进行求和是不准确的。RSS 是最近的页面,无论是否共享。Linux 只会拥有一个共享页面的副本。

实际上,通过公平处理共享页面来获取每个进程的内存使用量是令人烦恼的。smem是一个通过解析 /proc/$pid/smaps 中的每个内存映射来尝试实现此目的的工具

相关内容