gdm 拥有的 /usr/bin/gnome-shell 在 pop!os 20.04 中消耗更多的常驻 RAM:该进程不应该存在

gdm 拥有的 /usr/bin/gnome-shell 在 pop!os 20.04 中消耗更多的常驻 RAM:该进程不应该存在

这是在 X 下运行的 pop!os 20.04。

根据这个问题https://gitlab.gnome.org/GNOME/gdm/-/issues/222 曾几何时,gnome 保持打开两个 gnome shell,一个用于用户,一个用于接待员(在用户 gdm 下运行)。然后它被更改,以便在登录后,欢迎者的 gnome shell 被“拆除”。

但我有一个 pop!os 20.04,这种情况没有发生,并且 gdm gnome-shell 增长到使用大量常驻内存(例如,正常运行五天后 > 3GB)。

我可以 sudo kill -9 进程,并且似乎没有不良影响。然而,这些消息随后反复出现:

journalctl _UID=110

gnome-shell-x11.service: Scheduled restart job, restart counter is at 31.
Sep 14 08:13:48 indigo systemd[1392]: Stopped GNOME Shell on X11.
Sep 14 08:13:48 indigo systemd[1392]: Starting GNOME Shell on X11...
Sep 14 08:15:18 indigo systemd[1392]: gnome-shell-x11.service: start operation timed out. Terminating.
Sep 14 08:15:23 indigo systemd[1392]: gnome-shell-x11.service: State 'stop-sigterm' timed out. Killing.
Sep 14 08:15:23 indigo systemd[1392]: gnome-shell-x11.service: Killing process 36912 (gnome-shell) with signal SIGKILL.
Sep 14 08:15:23 indigo systemd[1392]: gnome-shell-x11.service: Killing process 36917 (dconf worker) with signal SIGKILL.
Sep 14 08:15:23 indigo systemd[1392]: gnome-shell-x11.service: Main process exited, code=killed, status=9/KILL
Sep 14 08:15:23 indigo systemd[1392]: gnome-shell-x11.service: Failed with result 'timeout'.
Sep 14 08:15:23 indigo systemd[1392]: Failed to start GNOME Shell on X11.
Sep 14 08:15:23 indigo systemd[1392]: gnome-shell-x11.service: Scheduled restart job, restart counter is at 32.
Sep 14 08:15:23 indigo systemd[1392]: Stopped GNOME Shell on X11.
Sep 14 08:15:23 indigo systemd[1392]: Starting GNOME Shell on X11...

我在虚拟机中运行相同版本的 pop,也在 X11 下,并且在虚拟机中没有在 gdm 下运行的进程。

这是我的主机 pop!os(我的真实桌面)上的内容:请注意,还有另一个 gnome-shell 进程在 gdm 下运行;总是有两个。其中只有一个成为常驻内存的失控消费者(我杀了那个)。


UID          PID    PPID  C STIME TTY          TIME CMD
gdm         1392       1  0 Sep13 ?        00:00:00 /lib/systemd/systemd --user
gdm         1399    1392  0 Sep13 ?        00:00:00 (sd-pam)
gdm         1444    1392  0 Sep13 ?        00:00:00 /usr/bin/appimagelauncherd
gdm         1445    1392  0 Sep13 ?        00:00:00 /usr/bin/appimagelauncherfs
gdm         1449    1392  0 Sep13 ?        00:00:00 /usr/bin/pulseaudio --daemonize=no --log-target=journal
gdm         1451    1392  0 Sep13 ?        00:00:00 /usr/libexec/tracker-miner-fs
gdm         1458    1379  0 Sep13 tty1     00:00:00 /usr/lib/gdm3/gdm-x-session gnome-session --autostart /usr/share/gdm/greeter/autostart
gdm         1460    1458  0 Sep13 tty1     00:00:00 /usr/lib/xorg/Xorg vt1 -displayfd 3 -auth /run/user/110/gdm/Xauthority -background none -noreset -keeptty -verbose 3
gdm         1463    1392  0 Sep13 ?        00:00:00 /usr/bin/dbus-daemon --session --address=systemd: --nofork --nopidfile --systemd-activation --syslog-only
gdm         1485    1392  0 Sep13 ?        00:00:00 /usr/libexec/gvfsd
gdm         1514    1392  0 Sep13 ?        00:00:00 /usr/libexec/gvfsd-fuse /run/user/110/gvfs -f -o big_writes
gdm         1522    1392  0 Sep13 ?        00:00:00 /usr/libexec/gvfs-udisks2-volume-monitor
gdm         1528    1392  0 Sep13 ?        00:00:00 /usr/libexec/gvfs-goa-volume-monitor
gdm         1532    1392  0 Sep13 ?        00:00:00 /usr/libexec/goa-daemon
gdm         1608    1392  0 Sep13 ?        00:00:00 /usr/libexec/goa-identity-service
gdm         1643    1392  0 Sep13 ?        00:00:00 /usr/libexec/gvfs-gphoto2-volume-monitor
gdm         1651    1392  0 Sep13 ?        00:00:00 /usr/libexec/gvfs-afc-volume-monitor
gdm         1656    1392  0 Sep13 ?        00:00:00 /usr/libexec/gvfs-mtp-volume-monitor
gdm         1698    1458  0 Sep13 tty1     00:00:00 /usr/libexec/gnome-session-binary --systemd --autostart /usr/share/gdm/greeter/autostart
gdm         1745    1392  0 Sep13 ?        00:00:00 /usr/libexec/at-spi-bus-launcher
gdm         1753    1745  0 Sep13 ?        00:00:00 /usr/bin/dbus-daemon --config-file=/usr/share/defaults/at-spi2/accessibility.conf --nofork --print-address 3
gdm         1811    1392  0 Sep13 ?        00:00:00 /usr/libexec/gnome-session-ctl --monitor
gdm         1824    1392  0 Sep13 ?        00:00:00 ssh-agent -D -a /run/user/110/openssh_agent
gdm         1829    1392  0 Sep13 ?        00:00:00 /usr/libexec/gnome-session-binary --systemd-service --session=gnome-login
gdm         1955    1392  0 Sep13 ?        00:00:00 /usr/libexec/at-spi2-registryd --use-gnome-session
gdm         1962    1392  0 Sep13 ?        00:00:00 /usr/libexec/xdg-permission-store
gdm         1997    1392  0 Sep13 ?        00:00:00 /usr/libexec/gsd-a11y-settings
gdm         1998    1392  0 Sep13 ?        00:00:00 /usr/libexec/gsd-color
gdm         1999    1392  0 Sep13 ?        00:00:00 /usr/libexec/gsd-keyboard
gdm         2001    1392  0 Sep13 ?        00:00:00 /usr/libexec/gsd-media-keys
gdm         2003    1392  0 Sep13 ?        00:00:00 /usr/libexec/gsd-power
gdm         2005    1392  0 Sep13 ?        00:00:00 /usr/libexec/gsd-print-notifications
gdm         2009    1392  0 Sep13 ?        00:00:00 /usr/libexec/gsd-rfkill
gdm         2010    1392  0 Sep13 ?        00:00:00 /usr/libexec/gsd-smartcard
gdm         2011    1392  0 Sep13 ?        00:00:00 /usr/libexec/gsd-sound
gdm         2014    1392  0 Sep13 ?        00:00:00 /usr/libexec/gsd-usb-protection
gdm         2016    1392  0 Sep13 ?        00:00:00 /usr/libexec/gsd-wacom
gdm         2020    1392  0 Sep13 ?        00:00:00 /usr/libexec/gsd-wwan
gdm         2022    1392  0 Sep13 ?        00:00:00 /usr/libexec/gsd-xsettings
gdm         2058    1392  0 Sep13 ?        00:00:00 /usr/libexec/gsd-printer
gdm         2269    1392  0 Sep13 ?        00:00:00 /usr/libexec/dconf-service
gdm        37465    1392  0 08:18 ?        00:00:00 /usr/bin/gnome-shell

在我的虚拟实例上:

$ ps -f -u gdm
UID          PID    PPID  C STIME TTY          TIME CMD

所以这很奇怪。

我不知道如何弄清楚为什么我基本上要运行整个 gdm 会话。

答案1

显然,让 gdm3 终止其 xserver 会话的补丁是相当新的,并且大多数地方都没有投入生产。我看到的错误甚至发生在 Fedora 32 中(如果你强制欢迎程序使用 xorg,这不是默认值)。

看:https://gitlab.gnome.org/GNOME/gdm/-/issues/222

虚拟机使用 wayland/xwayland 作为问候语。这是更容易修复的方法。

编辑/etc/gdm3/custom.conf 以注释掉强制 xorg.txt 的行。也就是说,将文件编辑为如下所示:

[daemon]
# Uncoment the line below to force the login screen to use Xorg
#WaylandEnable=false

因为当欢迎程序使用 wayland/xwayland 时,即使启动 xorg 登录会话,gdm3 也会终止其会话。所以不存在 gdm 拥有的 x 服务器。这可能节省至少 300MB 的常驻 RAM,在我的例子中还避免了内存泄漏。

相关内容