有无数这样的问题,但没有一个能给我一个合适的答案。也许我的系统配置错误了。
我的问题是,经过一段时间的正常运行(几天)后,我的台式机(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。它仅依赖于python
和python-matplotlib
,它们在 Ubuntu 16.x 上可用。因此您应该能够下载 smem 包并使用 进行安装dpkg -i smem_1.4-2_all.deb
。
安装后,您只需运行smem
即可看到哪个进程使用了多少内存。
一旦找出占用内存的内容,就可以停止该进程。例如,关闭浏览器中的标签页会有所帮助。此外,停止和启动浏览器也可以帮助释放一些内存。
还有一件事 - 你应该启用交换。交换将扩展您的可用内存。
还有一件事 - 因为 - 显然 - 您没有使用交换,那么“GUI 开始滞后并变得无响应/不可用”可能不是由内存已满引起的,而是由某些进程过多地访问磁盘(我想到正在运行的备份、重建 mlocate 数据库)或过多地使用 CPU 引起的。您应该能够使用 ( ) 诊断“CPU 使用率过高”和使用( )top
诊断 I/O 使用率过高。iotop
apt-get install iotop