从 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)
内存很可能用于磁盘缓存。请尝试以下操作:
$ 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)
| 归档时间: |
|
| 查看次数: |
4331 次 |
| 最近记录: |