内存已满,大部分被“共享”占用,GUI 无响应

内存已满,大部分被“共享”占用,GUI 无响应

有无数这样的问题,但没有一个能给我一个合适的答案。也许我的系统配置错误了。

我的问题是,经过一段时间的正常运行(几天)后,我的台式机(Ubuntu 16.04 LTS)上的 RAM 已完全填满,并且 GUI 开始滞后并变得无响应/无法使用。

输出free

              total        used        free      shared  buff/cache   available
Mem:       16326212     5633804      395072    10026328    10297336      184458
Swap:             0           0           0

什么是不是帮助是这样的:

sync; sudo sh -c 'echo 3 >/proc/sys/vm/drop_caches'

=> 上述数字几乎没有变化

swapoff -a

=> 没有变化(无论如何交换已被禁用)

与相关问题中发布的所有输出的一个显着区别free是,我的大部分记忆都被占据了shared

但是,ipcs -m | awk '{sum+=$5} END{print sum}'结果仅为 213 MB 左右。

可能相关:我有几个路径映射到 RAM 磁盘(来自/etc/fstab):

tmpfs /tmp tmpfs defaults,noatime,mode=1777 0 0
tmpfs /var/tmp tmpfs defaults,noatime,mode=1777 0 0
tmpfs /var/log tmpfs defaults,noatime,mode=0755 0 0 
tmpfs /var/log/apt tmpfs defaults,noatime 0 0

但那里似乎没有任何问题:

Filesystem           Size  Used Avail Use% Mounted on
tmpfs                1.6G   22M  1.6G   2% /run
tmpfs                1.6G  132K  1.6G   1% /run/user/1000
tmpfs                5.0M  4.0K  5.0M   1% /run/lock
tmpfs                7.8G     0  7.8G   0% /sys/fs/cgroup
tmpfs                7.8G   12M  7.8G   1% /var/tmp
tmpfs                7.8G  1.7M  7.8G   1% /var/log
tmpfs                7.8G  143M  7.7G   2% /dev/shm
tmpfs                7.8G  8.0K  7.8G   1% /var/log/apt
tmpfs                7.8G  878M  7.0G  12% /tmp
...

除了也许

udev                 7.8G  7.8G     0 100% /dev

还有其他想法吗?

答案1

这行

udev                 7.8G  7.8G     0 100% /dev

确实是问题的标志。这个山可能永远不应该 100% 填满。读过SHMem 内存使用率过高!我发现bootchart已经完全填满了。卸载bootchart并删除后/dev/.bootchart,一切恢复正常,包括shared内存使用情况:

              total        used        free      shared  buff/cache   available
Mem:       16326212     3258332     7929904     1177272     5137976    10981178
Swap:             0           0           0

答案2

您需要找出计算机内存中占满的是什么。我首先想到的是浏览器。现代浏览器占用大量内存。

你可以通过 查看哪个程序使用了多少内存smem。这里有smem适用于 Ubuntu 17.x 的软件包:https://packages.ubuntu.com/artful/smem。它仅依赖于pythonpython-matplotlib,它们在 Ubuntu 16.x 上可用。因此您应该能够下载 smem 包并使用 进行安装dpkg -i smem_1.4-2_all.deb

安装后,您只需运行smem即可看到哪个进程使用了​​多少内存。

一旦找出占用内存的内容,就可以停止该进程。例如,关闭浏览器中的标签页会有所帮助。此外,停止和启动浏览器也可以帮助释放一些内存。

还有一件事 - 你应该启用交换。交换将扩展您的可用内存。

还有一件事 - 因为 - 显然 - 您没有使用交换,那么“GUI 开始滞后并变得无响应/不可用”可能不是由内存已满引起的,而是由某些进程过多地访问磁盘(我想到正在运行的备份、重建 mlocate 数据库)或过多地使用 CPU 引起的。您应该能够使用 ( ) 诊断“CPU 使用率过高”和使用( )top诊断 I/O 使用率过高。iotopapt-get install iotop

相关内容