![Gnome 3.36.2 在 20.04 中泄漏内存和 CPU](https://linux22.com/image/1173779/Gnome%203.36.2%20%E5%9C%A8%2020.04%20%E4%B8%AD%E6%B3%84%E6%BC%8F%E5%86%85%E5%AD%98%E5%92%8C%20CPU.png)
最近我注意到 Gnome 3.36.2 中的 UI 性能似乎随着正常运行时间的延长而下降。
最明显的表现是,随着时间的推移,窗口动画会出现延迟,感觉“粘滞”。应用程序本身似乎不受影响。当我告诉 gnome 切换工作区时,动画发生之前大约有半秒到一秒的延迟。这也适用于按下 meta 键显示所有窗口或按下 alt-tab 等操作。每个似乎都有相同的延迟。
我在 Ubuntu 20.04 上使用 vanilla gnome 运行一个相当不起眼的桌面设置。
我对这个问题的研究似乎表明是18.xx 版操作系统中存在内存泄漏问题,但这些问题据称已经得到修复。目前我唯一能得出的结论是出现了新问题、出现了回归问题,或者原来的修复没有起作用。
动画延迟严重影响工作效率,最终我不得不重启系统。这个gnome-shell
过程肯定会随着时间的推移而泄漏,因为它一开始大约有 300mb,如果放一天就会达到 600mb 甚至更多。
就我的整体硬件和系统的正常状态而言,我在创建这个问题时就遇到了这个问题。我运行的是原版 gnome 桌面,而不是 ubuntu 定制版。
我的系统有 32GB 的 RAM,目前只使用了 6GB。我的 CPU 使用率在 12 个 vcore 之间波动,最高可达 20%。我的 GPU 是 RTX 2060。
至少据我所知,我认为 gnome-shell 现在获取的资源量没有问题。
答案1
我可以确认,在使用 Ryzen 7 机器和 Radion R9 时,我也遇到了同样的内存泄漏gnome-shell
。大约 2 天后,我可以明显注意到 OP 遇到的延迟。此外,如果我从一开始比较该进程的内存,我会注意到它已经大幅攀升并且仍在攀升。
一个临时的解决方法是按 ALT+F2+r,但他们真的应该解决这个问题。特别是如果你在一台一直运行的服务器上工作的话。
编辑:内存泄漏似乎是由gnome-shell
动画和交互引起的。因此,如果您执行某些操作,例如不断最小化和最大化窗口,或者不断调用和关闭活动视图,您会看到gnome-shell
内存开始增加。它可能会在一段时间内出现波动,但最终它使用的最大内存量将缓慢上升并且永远不会下降。
答案2
我遇到了同样的问题;gnome-shell 占用的内存越来越多。动画速度变慢,内存也白白消耗。
由于可能没人会修复该错误,因此我自己实施了以下“修复”:
让此脚本每 15 分钟运行一次。当当前用户的 gnome-shell 进程的内存使用量超过 2% 的使用百分比(限制)时,它将自动重新启动 gnome-shell 进程(不会丢失任何工作或应用程序,这与运行Alt+F2然后相同R)。
#!/bin/sh
logfile=/home/$(whoami)/bin/gnome-auto-restart.log
# memory limit of the gnome-shell-process as a percentage
limit="2.0"
restartShell() {
export DISPLAY=:1
busctl --user call org.gnome.Shell /org/gnome/Shell org.gnome.Shell Eval s 'Meta.restart("Restarting...")' > /dev/null 2>&1
}
mem=$(ps -o pid,user,%mem,command ax|grep -i /usr/bin/gnome-shell |grep -i $(whoami)|sort -b -k3 -r|head -n1|tr -s " "|cut -d" " -f3)
echo "$(date) checking memory usage percentage of gnome-shell ($mem) against $limit" >> $logfile
if awk 'BEGIN {exit !('$mem' >= '$limit')}'; then
echo "$(date) --> limit reached, restarting gnome-shell" >> $logfile
restartShell
else
echo "$(date) --> limit not reached" >> $logfile
fi
我每天晚上都会重启 gnome-shell,因为我的工作站 24/7 全天候运行。我还想在中午吃午饭的时候重启它……
答案3
我不指望这能修复你的 GNOME 内存泄漏问题,但无论如何这都是重要的信息。
联想 Legion Y740-15IRHg (81UH0000US)
您有 BIOS BVCN11WW (V1.07)。
有较新的 BIOS 可用,BVCN12WW (V1.08),日期为 2020 年 1 月 2 日,可以下载这里
笔记:请确保我有您型号的正确网页。
笔记:更新 BIOS 之前请做好备份。