There is a memory leak generating window previews on gnome shell and since pressing the Super key generates windows previews the memory usage grows exponentially. For me Gnome Shell eats about 100-150 MB every day I leave it running.
I tested this both on an Intel graphics machine and on a VM, in both Artful and Bionic. Both times clean install. 1. on a clean boot open System Monitor and Terminal side by side (or System Monitor and any other window) 2. press Super wait for the window preview and then press ESC (repeat this several times) 3. Observe the memory usage for Gnome Shell System Monitor grow You can also reproduce this by installing the Alternate Tab extension (https://extensions.gnome.org/extension/15/alternatetab/) which also generates window previews. 1. Alt+Tab between Terminal and System Monitor and watch the Gnome Shell memory usage grow every time. Another user on reddit also came to a similar conclusion: https://www.reddit.com/r/gnome/comments/7teono/possible_fix_to_improve_gnome_lag/ Effectively gnome shell becomes unusable even on 8 GB of RAM after a week of usage. I solve the issue by running ALT+F2 and 'r' every morning. People who are not technical of course will not do this and have a horrible experience. -- You received this bug notification because you are a member of Desktop Packages, which is subscribed to gnome-shell in Ubuntu. https://bugs.launchpad.net/bugs/1672297 Title: gnome-shell uses lots of memory, and grows over time Status in GNOME Shell: Unknown Status in Mutter: Fix Released Status in gnome-shell package in Ubuntu: Triaged Status in mutter package in Ubuntu: Triaged Bug description: gnome-shell's RSS is growing by 1 MiB every few minutes, and is now at almost 2 GiB. user 3039 1.8 16.1 4302340 1968476 tty2 Sl+ Mar09 120:17 /usr/bin/gnome-shell strace output is voluminous; here is a representative sample: poll([{fd=5, events=POLLIN|POLLOUT}], 1, -1) = 1 ([{fd=5, revents=POLLOUT}]) writev(5, [{"\231\n\10\0\n\0 \0\0\0\0\0\0\0\0\0\0\0\0\0\1\0\0\0\0\0\0\0\0\0\0\0", 32}], 1) = 32 poll([{fd=5, events=POLLIN}], 1, -1) = 1 ([{fd=5, revents=POLLIN}]) recvmsg(5, {msg_name(0)=NULL, msg_iov(1)=[{"\1\0{\224\0\0\0\0H\0\0\0\0\23\266\32\0\0\0\0\201\242\204\0\0\0\0\0\261.\0\0", 4096}], msg_controllen=0, msg_flags=0}, 0) = 32 recvmsg(5, 0x7fff60efac90, 0) = -1 EAGAIN (Resource temporarily unavailable) recvmsg(5, 0x7fff60efac90, 0) = -1 EAGAIN (Resource temporarily unavailable) poll([{fd=5, events=POLLIN|POLLOUT}], 1, -1) = 1 ([{fd=5, revents=POLLOUT}]) writev(5, [{"\212\5\4\0a\2228\0y\3\5\0%\3\27\4\231\6\5\0\n\0 \0a\2228\0\0\0\0\0"..., 36}, {NULL, 0}, {"", 0}], 3) = 36 poll([{fd=5, events=POLLIN}], 1, -1) = 1 ([{fd=5, revents=POLLIN}]) recvmsg(5, {msg_name(0)=NULL, msg_iov(1)=[{"\1\0}\224\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0", 4096}], msg_controllen=0, msg_flags=0}, 0) = 32 recvmsg(5, 0x7fff60efac90, 0) = -1 EAGAIN (Resource temporarily unavailable) poll([{fd=5, events=POLLIN|POLLOUT}], 1, -1) = 1 ([{fd=5, revents=POLLOUT}]) writev(5, [{"\212\n\2\0a\2228\0", 8}, {NULL, 0}, {"", 0}], 3) = 8 recvmsg(5, 0x7fff60efb020, 0) = -1 EAGAIN (Resource temporarily unavailable) recvmsg(12, 0x7fff60efb000, 0) = -1 EAGAIN (Resource temporarily unavailable) poll([{fd=4, events=POLLIN}, {fd=5, events=POLLIN}, {fd=11, events=POLLIN}, {fd=12, events=POLLIN}, {fd=14, events=POLLIN}, {fd=16, events=POLLIN}, {fd=26, events=POLLIN}, {fd=29, events=POLLIN}, {fd=32, events=POLLIN}, {fd=34, events=POLLIN}, {fd=37, events=POLLIN}, {fd=38, events=POLLIN}, {fd=40, events=POLLIN}, {fd=42, events=POLLIN}, {fd=43, events=POLLIN}], 15, 0) = 0 (Timeout) recvmsg(5, 0x7fff60efb040, 0) = -1 EAGAIN (Resource temporarily unavailable) recvmsg(5, 0x7fff60efb020, 0) = -1 EAGAIN (Resource temporarily unavailable) recvmsg(12, 0x7fff60efb000, 0) = -1 EAGAIN (Resource temporarily unavailable) poll([{fd=4, events=POLLIN}, {fd=5, events=POLLIN}, {fd=11, events=POLLIN}, {fd=12, events=POLLIN}, {fd=14, events=POLLIN}, {fd=16, events=POLLIN}, {fd=26, events=POLLIN}, {fd=29, events=POLLIN}, {fd=32, events=POLLIN}, {fd=34, events=POLLIN}, {fd=37, events=POLLIN}, {fd=38, events=POLLIN}, {fd=40, events=POLLIN}, {fd=42, events=POLLIN}, {fd=43, events=POLLIN}], 15, 0) = 0 (Timeout) recvmsg(5, 0x7fff60efb040, 0) = -1 EAGAIN (Resource temporarily unavailable) open("/proc/self/stat", O_RDONLY) = 36 fstat(36, {st_mode=S_IFREG|0444, st_size=0, ...}) = 0 fcntl(36, F_GETFL) = 0x8000 (flags O_RDONLY|O_LARGEFILE) fstat(36, {st_mode=S_IFREG|0444, st_size=0, ...}) = 0 read(36, "3039 (gnome-shell) R 2930 2917 2"..., 4096) = 354 read(36, "", 3072) = 0 close(36) = 0 recvmsg(5, 0x7fff60efb020, 0) = -1 EAGAIN (Resource temporarily unavailable) recvmsg(12, 0x7fff60efb000, 0) = -1 EAGAIN (Resource temporarily unavailable) poll([{fd=4, events=POLLIN}, {fd=5, events=POLLIN}, {fd=11, events=POLLIN}, {fd=12, events=POLLIN}, {fd=14, events=POLLIN}, {fd=16, events=POLLIN}, {fd=26, events=POLLIN}, {fd=29, events=POLLIN}, {fd=32, events=POLLIN}, {fd=34, events=POLLIN}, {fd=37, events=POLLIN}, {fd=38, events=POLLIN}, {fd=40, events=POLLIN}, {fd=42, events=POLLIN}, {fd=43, events=POLLIN}], 15, 117885) = 1 ([{fd=4, revents=POLLIN}]) read(4, "\1\0\0\0\0\0\0\0", 16) = 8 recvmsg(5, 0x7fff60efb040, 0) = -1 EAGAIN (Resource temporarily unavailable) recvmsg(5, 0x7fff60efb020, 0) = -1 EAGAIN (Resource temporarily unavailable) recvmsg(12, {msg_name(0)=NULL, msg_iov(1)=[{"[\2\327&h\0@\0i\0@\0(nu\22\n\0I\0\336\2\232\1\265\0038\2\362\2\355\1", 4096}], msg_controllen=0, msg_flags=0}, 0) = 32 recvmsg(12, 0x7fff60efb000, 0) = -1 EAGAIN (Resource temporarily unavailable) poll([{fd=4, events=POLLIN}, {fd=5, events=POLLIN}, {fd=11, events=POLLIN}, {fd=12, events=POLLIN}, {fd=14, events=POLLIN}, {fd=16, events=POLLIN}, {fd=26, events=POLLIN}, {fd=29, events=POLLIN}, {fd=32, events=POLLIN}, {fd=34, events=POLLIN}, {fd=37, events=POLLIN}, {fd=38, events=POLLIN}, {fd=40, events=POLLIN}, {fd=42, events=POLLIN}, {fd=43, events=POLLIN}], 15, 0) = 0 (Timeout) recvmsg(5, 0x7fff60efb040, 0) = -1 EAGAIN (Resource temporarily unavailable) write(4, "\1\0\0\0\0\0\0\0", 8) = 8 recvmsg(12, 0x7fff60efaed0, 0) = -1 EAGAIN (Resource temporarily unavailable) recvmsg(5, 0x7fff60efb020, 0) = -1 EAGAIN (Resource temporarily unavailable) recvmsg(12, 0x7fff60efb000, 0) = -1 EAGAIN (Resource temporarily unavailable) poll([{fd=4, events=POLLIN}, {fd=5, events=POLLIN}, {fd=11, events=POLLIN}, {fd=12, events=POLLIN}, {fd=14, events=POLLIN}, {fd=16, events=POLLIN}, {fd=26, events=POLLIN}, {fd=29, events=POLLIN}, {fd=32, events=POLLIN}, {fd=34, events=POLLIN}, {fd=37, events=POLLIN}, {fd=38, events=POLLIN}, {fd=40, events=POLLIN}, {fd=42, events=POLLIN}, {fd=43, events=POLLIN}], 15, 0) = 1 ([{fd=4, revents=POLLIN}]) read(4, "\1\0\0\0\0\0\0\0", 16) = 8 recvmsg(5, 0x7fff60efb040, 0) = -1 EAGAIN (Resource temporarily unavailable) open("/proc/self/stat", O_RDONLY) = 36 fstat(36, {st_mode=S_IFREG|0444, st_size=0, ...}) = 0 fcntl(36, F_GETFL) = 0x8000 (flags O_RDONLY|O_LARGEFILE) fstat(36, {st_mode=S_IFREG|0444, st_size=0, ...}) = 0 read(36, "3039 (gnome-shell) R 2930 2917 2"..., 4096) = 354 read(36, "", 3072) = 0 close(36) = 0 recvmsg(5, 0x7fff60efb020, 0) = -1 EAGAIN (Resource temporarily unavailable) recvmsg(12, 0x7fff60efb000, 0) = -1 EAGAIN (Resource temporarily unavailable) poll([{fd=4, events=POLLIN}, {fd=5, events=POLLIN}, {fd=11, events=POLLIN}, {fd=12, events=POLLIN}, {fd=14, events=POLLIN}, {fd=16, events=POLLIN}, {fd=26, events=POLLIN}, {fd=29, events=POLLIN}, {fd=32, events=POLLIN}, {fd=34, events=POLLIN}, {fd=37, events=POLLIN}, {fd=38, events=POLLIN}, {fd=40, events=POLLIN}, {fd=42, events=POLLIN}, {fd=43, events=POLLIN}], 15, 1) = 0 (Timeout) recvmsg(5, 0x7fff60efb040, 0) = -1 EAGAIN (Resource temporarily unavailable) poll([{fd=12, events=POLLIN|POLLOUT}], 1, -1) = 1 ([{fd=12, revents=POLLOUT}]) writev(12, [{"\217\3\4\0i\0@\0\0\0\0\0\0\0\0\0+\0\1\0", 20}, {NULL, 0}, {"", 0}], 3) = 20 poll([{fd=12, events=POLLIN}], 1, -1) = 1 ([{fd=12, revents=POLLIN}]) recvmsg(12, {msg_name(0)=NULL, msg_iov(1)=[{"\1\2\331&\0\0\0\0\250\0`\2\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0", 4096}], msg_controllen=0, msg_flags=0}, 0) = 32 recvmsg(12, 0x7fff60efaf60, 0) = -1 EAGAIN (Resource temporarily unavailable) recvmsg(12, 0x7fff60efaf60, 0) = -1 EAGAIN (Resource temporarily unavailable) ioctl(6, DRM_IOCTL_I915_GEM_MADVISE, 0x7fff60efa960) = 0 ioctl(6, DRM_IOCTL_I915_GEM_BUSY, 0x7fff60efa910) = 0 ioctl(6, DRM_IOCTL_I915_GEM_MADVISE, 0x7fff60efa900) = 0 ioctl(6, DRM_IOCTL_I915_GEM_PWRITE, 0x7fff60efa9b0) = 0 ioctl(6, DRM_IOCTL_I915_GEM_BUSY, 0x7fff60efac50) = 0 ioctl(6, DRM_IOCTL_I915_GEM_SET_DOMAIN, 0x7fff60efaba0) = 0 ioctl(6, DRM_IOCTL_I915_GEM_SW_FINISH, 0x7fff60efad30) = 0 ioctl(6, DRM_IOCTL_I915_GEM_SW_FINISH, 0x7fff60efae30) = 0 ioctl(6, _IOC(_IOC_READ|_IOC_WRITE, 0x64, 0x69, 0x40), 0x7fff60efadb0) = 0 ioctl(6, DRM_IOCTL_I915_GEM_SET_DOMAIN, 0x7fff60efae30) = 0 ioctl(6, DRM_IOCTL_I915_GEM_MADVISE, 0x7fff60efadb0) = 0 ioctl(6, DRM_IOCTL_I915_GEM_BUSY, 0x7fff60efad80) = 0 ioctl(6, DRM_IOCTL_I915_GEM_MADVISE, 0x7fff60efad70) = 0 ioctl(6, DRM_IOCTL_I915_GEM_SET_DOMAIN, 0x7fff60efad90) = 0 ioctl(6, DRM_IOCTL_I915_GEM_SET_DOMAIN, 0x7fff60efae90) = 0 ProblemType: Bug DistroRelease: Ubuntu 17.04 Package: gnome-shell 3.23.91-0ubuntu4 ProcVersionSignature: Ubuntu 4.10.0-11.13-generic 4.10.1 Uname: Linux 4.10.0-11-generic x86_64 ApportVersion: 2.20.4-0ubuntu2 Architecture: amd64 Date: Mon Mar 13 19:17:51 2017 DisplayManager: gdm3 InstallationDate: Installed on 2016-12-02 (100 days ago) InstallationMedia: Ubuntu-GNOME 16.10 "Yakkety Yak" - Release amd64 (20161012.1) ProcEnviron: LANGUAGE=en_AU:en TERM=xterm-256color PATH=(custom, no user) LANG=en_AU.UTF-8 SHELL=/bin/bash SourcePackage: gnome-shell UpgradeStatus: No upgrade log present (probably fresh install) To manage notifications about this bug go to: https://bugs.launchpad.net/gnome-shell/+bug/1672297/+subscriptions -- Mailing list: https://launchpad.net/~desktop-packages Post to : desktop-packages@lists.launchpad.net Unsubscribe : https://launchpad.net/~desktop-packages More help : https://help.launchpad.net/ListHelp