Ubuntu 18.04 显示大量内存使用

Ubuntu 18.04 显示大量内存使用

从 16.04 升级到 18.04 后,即使重新启动后,使用的内存量也非常大。系统有 64GB 的 RAM。升级前,典型使用率约为 20%(12GB)。重新启动后,使用率上升到 80% 左右。

$ cat /proc/meminfo | grep Mem
MemTotal:       65898276 kB
MemFree:        12725584 kB
MemAvailable:   18079892 kB

“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

此外,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

这是在全新启动后,几乎没有运行任何服务(甚至尚未登录到 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

完整的 /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

答案1

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

$ cat /proc/meminfo | grep -e Mem -e Cached
MemTotal:       32921424 kB
MemFree:        29783076 kB
MemAvailable:   30852280 kB
Cached:          1467132 kB
SwapCached:            0 kB

或使用free

$ free -h
              total        used        free      shared  buff/cache   available
Mem:            31G        1.6G         28G         74M        1.5G         29G
Swap:            0B          0B          0B

如果有应用程序需要内存,磁盘缓存会立即清除。内核的默认行为是使用所有可用的空闲内存进行缓存。您可以使用以下命令清除磁盘缓存(请参阅邮政):

$ echo 3 | sudo tee /proc/sys/vm/drop_caches 

相关内容