Ubuntu 18.04 显示大量内存正在使用

ELa*_*ner 5 gnome ram 18.04

从 16.04 升级到 18.04 后,即使重新启动后,使用的内存量仍然很大。该系统有 64GB 内存。升级之前,典型使用量约为 20% (12GB)。重新启动后,它上升到 80% 的范围。

$ cat /proc/meminfo | grep Mem
MemTotal:       65898276 kB
MemFree:        12725584 kB
MemAvailable:   18079892 kB
Run Code Online (Sandbox Code Playgroud)

“top”中没有显示高内存使用率。最大的一个约为 1.3Gb,也有一些在 GB 范围内。当前使用的空间总计达 45.7 GB。

$ps -A  --sort -rss -o comm,pmem | head -n 8 
COMMAND         %MEM
TestServr        2.0
java             1.5
java             1.0
lwsmd            0.6
gnome-shell      0.5
systemd-journal  0.4
gnome-shell      0.2
Run Code Online (Sandbox Code Playgroud)

另外,Gnome-process-monitor 是半无用的,因为它似乎遇到了一个错误,即使您单击“所有进程”,它也不会显示所有进程。即使您以 root 身份运行它。

存在哪些选项可以掠夺 /proc 文件系统以找出所有额外内存分配给哪个进程?

更新:

请注意,这是系统上几乎没有运行任何东西的情况。

$ free -h
              total        used        free      shared  buff/cache   available
Mem:            62G         43G        9.0G         69M        9.9G         18G
Swap:          7.6G          0B        7.6G
Run Code Online (Sandbox Code Playgroud)

这是在几乎没有任何服务运行的全新启动之后(甚至还没有登录到 GUI,大约 250 个进程正在运行,主要是 GDM、系统守护进程等系统内容)。

$ cat /tmp/free.txt 
              total        used        free      shared  buff/cache   available
Mem:            62G         40G         21G        3.6M        754M         21G
Swap:          7.6G          0B        7.6G
Run Code Online (Sandbox Code Playgroud)

完整/proc/meminfo

$ cat /proc/meminfo
MemTotal:       65898276 kB
MemFree:         9482940 kB
MemAvailable:   19036072 kB
Buffers:          390356 kB
Cached:          8936484 kB
SwapCached:            0 kB
Active:          8718412 kB
Inactive:        4002576 kB
Active(anon):    3405360 kB
Inactive(anon):    59612 kB
Active(file):    5313052 kB
Inactive(file):  3942964 kB
Unevictable:        1856 kB
Mlocked:            1856 kB
SwapTotal:       7999484 kB
SwapFree:        7999484 kB
Dirty:               528 kB
Writeback:             0 kB
AnonPages:       3395996 kB
Mapped:           755484 kB
Shmem:             70832 kB
Slab:            1141644 kB
SReclaimable:    1022476 kB
SUnreclaim:       119168 kB
KernelStack:       18736 kB
PageTables:        85152 kB
NFS_Unstable:          0 kB
Bounce:                0 kB
WritebackTmp:          0 kB
CommitLimit:    19977100 kB
Committed_AS:   13634420 kB
VmallocTotal:   34359738367 kB
VmallocUsed:           0 kB
VmallocChunk:          0 kB
HardwareCorrupted:     0 kB
AnonHugePages:         0 kB
ShmemHugePages:        0 kB
ShmemPmdMapped:        0 kB
CmaTotal:              0 kB
CmaFree:               0 kB
HugePages_Total:   20480
HugePages_Free:    19430
HugePages_Rsvd:      320
HugePages_Surp:        0
Hugepagesize:       2048 kB
DirectMap4k:      721640 kB
DirectMap2M:    22274048 kB
DirectMap1G:    45088768 kB
Run Code Online (Sandbox Code Playgroud)

Sim*_*ler 0

内存很可能用于磁盘缓存。请尝试以下操作:

$ cat /proc/meminfo | grep -e Mem -e Cached
MemTotal:       32921424 kB
MemFree:        29783076 kB
MemAvailable:   30852280 kB
Cached:          1467132 kB
SwapCached:            0 kB
Run Code Online (Sandbox Code Playgroud)

或使用free

$ free -h
              total        used        free      shared  buff/cache   available
Mem:            31G        1.6G         28G         74M        1.5G         29G
Swap:            0B          0B          0B
Run Code Online (Sandbox Code Playgroud)

如果有任何应用程序需要内存,则磁盘缓存会立即清除。内核的默认行为是使用所有可用的空闲内存进行缓存。您可以使用以下方法清除磁盘缓存(请参阅这篇文章):

$ echo 3 | sudo tee /proc/sys/vm/drop_caches 
Run Code Online (Sandbox Code Playgroud)