内存不足

内存不足

free 命令报告的共享内存不断增加,而可用内存却降至 0。了解到 Linux 正在使用可用 RAM 进行磁盘缓存,但即使运行 drop_caches 后,共享内存使用率仍然很高。1-2 天后系统开始交换并变得非常慢!

$ grep Shmem /proc/meminfo
Shmem:           4922540 kB
ShmemHugePages: 0 kB
ShmemPmdMapped: 0 kB

$ df -BK | grep tmpfs
tmpfs                                  1608216K       3268K   1604948K    1% /run
tmpfs                                  8041060K         12K   8041048K    1% /dev/shm
tmpfs                                     5120K          4K      5116K    1% /run/lock
tmpfs                                  8041060K          0K   8041060K    0% /sys/fs/cgroup
tmpfs                                  1608212K         16K   1608196K    1% /run/user/120
tmpfs                                  1608212K          0K   1608212K    0% /run/user/1000

$ free -m
              Gesamt   belegt    frei        gemns. Puffer/Cache verfügbar
Speicher:       15705         494        4220        4807       10990       10069
Auslagerungsspeicher:        8099           3        8096

我如何才能知道为什么共享在增加以及其中包含什么?

我已经将 gitlab 配置为使用 prometheus 并启用了 node_exporter,因此我可以了解内存使用情况。您可以清楚地看到在 hh:13、hh:33 和 hh:53 每 20 分钟增加约 250MB。

prometheus node_exporter随着时间的推移不活跃

答案1

显然,有些程序正在循环创建共享内存段。这些段无法从内存中交换出去,因此可用 RAM 被耗尽,从而导致交换。

要识别产品,请参阅文章
如何识别哪个程序正在使用共享内存以及何时使用它

简短摘要如下:

  1. 用于ipcs -m获取共享内存段信息

图片1

  1. 用于ipcs -mp显示哪个 PID 正在使用(或使用过)共享内存段

图片2

  1. 用于ps -p搜索 pid 信息

在此处输入图片描述

答案2

发现 gnome-shell 每 20 分钟崩溃一次。系统用作无头家庭服务器,但通过 HDMI 连接到 4k 电视(电视始终关闭)。用户会话中的显示缩放比例设置为 200%。

系统:H370 / i915 / i3-8100。

我断开了 HDMI 线,至少现在看起来不错!

输出关闭 dmesg | grep gnome-shell

相关内容