4.3 GB. That’s how much RAM my gnome-shell process was eating when I finally caught it red-handed.
Or: How I Learned to Stop Blaming My GPU and Love System Logs
My GNOME desktop had been getting progressively slower over the past few days. Window animations stuttered. The overview took forever to open. Dragging windows felt like moving furniture through molasses. The obvious suspect? My NVIDIA RTX 3080 Ti driving three high-resolution monitors at a combined 47.5 megapixels.
I was wrong. Spectacularly wrong.
The Setup (AKA: The Overkill Workstation)
Before we dive in, here’s what I’m working with:
- System: Ubuntu 22.04, GNOME on X11
- CPU: Intel i7/i9 (16 cores)
- RAM: 64 GB
- GPU: NVIDIA RTX 3080 Ti
- Displays: 3 monitors (2× 2560×1600 @ 200% scaling, 1× 4K @ ~133% scaling)
This machine should handle GNOME like a hot knife through butter. Instead, after a day or two of uptime, it felt like pushing a boulder uphill.
The Usual Suspects
When your Linux desktop gets laggy with an NVIDIA GPU, where do you look first? The GPU, obviously.
nvidia-smi && dpkg -l | grep nvidia-driver && ubuntu-drivers devices
Result: Driver 580.95.05 (recommended), CUDA 13.0, GPU running stable at 71°C, ~10 GB VRAM in use. Nothing unusual.
What about the display configuration? Maybe something’s misconfigured with my multi-monitor setup:
xrandr --query | grep -E "connected|[0-9]+x[0-9]+\*"
DP-0 connected 5120x3200+10240+0
DP-2 connected 5120x3200+0+0
DP-4 connected primary 5120x2880+5120+0
Three displays at high resolution. Yes, that’s 47.5 megapixels in total. Yes, Xorg was using 6 GB of VRAM. But that’s expected for this setup—the GPU wasn’t the problem.
The Investigation: Following the Breadcrumbs
Time to dig into the system logs. First, I needed to find where the current boot session started:
grep -n "kernel.*Linux version" /var/log/syslog
Then I searched for anything GPU-related, display-related, or error-related since boot:
tail -n +<BOOT_LINE> /var/log/syslog | grep -iE "nvidia|gpu|gnome-shell|mutter|Xorg|freeze|hung|timeout|failed|error|OOM|segfault|NVRM" | head -100
No NVIDIA Xid errors. No OOM events. No memory pressure warnings. The GPU and RAM were doing fine.
But wait—what’s all this noise from gnome-shell?
The Smoking Gun: 660+ JavaScript Errors
I filtered specifically for GNOME Shell JavaScript errors:
tail -n +<BOOT_LINE> /var/log/syslog | grep -iE "gnome-shell.*error|js error" | head -50
And there it was. Page after page of:
Dec 1 02:01:33 mb-desktop gnome-shell[7597]: JS ERROR: TypeError: this._bgManager is null
after__init/<@/home/mb/.local/share/gnome-shell/extensions/vertical-overview@RensAlthuis.github.com/workspaceThumbnail.js:276:13
_destroyThumbnails@resource:///org/gnome/shell/ui/workspaceThumbnail.js:981:33
And this gem, repeated 15 times in quick succession:
Dec 1 02:01:40 mb-desktop gnome-shell[7597]: message repeated 15 times: [ JS ERROR: TypeError: this._bgManager is null... ]
I grouped and counted the errors:
tail -n +<BOOT_LINE> /var/log/syslog | grep -E "gnome-shell\[7597\].*JS ERROR" | cut -d']' -f2- | sort | uniq -c | sort -rn | head -20
| Extension | Error Count | Error Type |
|---|---|---|
| vertical-overview | 660+ | TypeError: this._bgManager is null |
| dash-to-panel | ~400 | Conflicts with vertical-overview |
| ubuntu-dock | 14 | Impossible to enumerate trash children |
| another-window-session-manager | 6+ | Missing GTop, save errors |
The culprit: Every single time I pressed the Super key to open the overview,
the vertical-overview extension threw 16-24 JavaScript errors. Over two days
of normal usage, that added up to 660+ errors—and apparently, a whole lot of
leaked memory.
The Evidence: Memory Analysis
Now I knew what was happening. Time to prove how bad it was:
ps -C gnome-shell -o rss --no-headers | awk '{sum+=$1} END {print sum/1024 " MB"}'
Output: 4271 MB
That’s 4.3 GB of RAM for gnome-shell alone. Normal consumption should be 400-800 MB.
Looking at the full process list:
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
mb 7597 3.6 6.5 11176396 4271296 ? Rsl Dec01 99:27 /usr/bin/gnome-shell
Running since December 1st, consuming 6.5% of my 64 GB RAM (on a machine with 64 GB!), and accumulating 99 minutes of CPU time just for gnome-shell.
The Fix: One Command to Rule Them All
Here’s where it gets satisfying. You might think pressing Alt+F2, typing r,
and pressing Enter would fix it. That’s the classic GNOME Shell restart trick.
Nope. That’s a “soft restart” that doesn’t actually release the leaked memory.
The real fix:
killall -3 gnome-shell
This sends SIGQUIT to gnome-shell, causing it to dump core and restart
properly. Your running applications stay open, but gnome-shell gets a fresh
start.
After the restart:
ps -C gnome-shell -o rss --no-headers | awk '{sum+=$1} END {print sum/1024 " MB"}'
Output: 784 MB
3.5 GB freed instantly. The desktop was smooth again.
What I Learned the Hard Way
1. Alt+F2 → r Doesn’t Fix Memory Leaks
The GNOME Shell “restart” command (r) is really more of a refresh. It reloads
extensions and UI elements but doesn’t release accumulated memory. For actual
memory leaks, you need a real process restart.
2. Extension Compatibility Is a Minefield
The combination of vertical-overview and dash-to-panel was toxic. Both
extensions modify how the overview and workspaces work, and they stepped on each
other constantly. The errors cascaded every time I opened the overview.
3. Abandoned Extensions Are Ticking Time Bombs
Checking the vertical-overview GitHub repository, I found numerous open issues about memory leaks and compatibility problems with newer GNOME versions. The extension isn’t actively maintained anymore.
4. Your GPU Might Not Be the Problem
When you have a beefy GPU and high-resolution displays, it’s easy to blame graphics performance issues on the GPU. But gnome-shell is a JavaScript application running on your CPU, and its memory leaks have nothing to do with your graphics card.
The Long-Term Fix
Option A: Remove the Problematic Extensions
gnome-extensions disable vertical-overview@RensAlthuis.github.com
gnome-extensions disable dash-to-panel@jderose9.github.com
If you need a vertical overview, look for actively maintained alternatives or wait for GNOME to implement it natively.
Option B: Create a Restart Alias
If you’re attached to your extensions and willing to do periodic maintenance:
# Add to ~/.bashrc
alias gnome-restart='killall -3 gnome-shell'
Run it whenever things start feeling sluggish. Not elegant, but effective.
Option C: Monitor and Alert
Set up a simple cron job to warn you when gnome-shell gets too greedy:
# Check every hour, warn if gnome-shell exceeds 2GB
0 * * * * MEM=$(ps -C gnome-shell -o rss --no-headers | awk '{sum+=$1} END {print sum/1024}'); [ $(echo "$MEM > 2000" | bc) -eq 1 ] && notify-send "gnome-shell using ${MEM}MB"
Diagnostic Command Cheatsheet
Here’s everything you need to investigate your own gnome-shell issues:
# System info
nvidia-smi && dpkg -l | grep nvidia-driver
xrandr --query
# Find boot line in syslog
grep -n "kernel.*Linux version" /var/log/syslog
# Search for errors since boot
tail -n +<LINE> /var/log/syslog | grep -iE "gnome-shell.*error|js error"
# Group and count errors
tail -n +<LINE> /var/log/syslog | grep -E "gnome-shell.*JS ERROR" | cut -d']' -f2- | sort | uniq -c | sort -rn | head -20
# Check gnome-shell memory usage
ps -C gnome-shell -o rss --no-headers | awk '{sum+=$1} END {print sum/1024 " MB"}'
# Monitor memory usage continuously
watch -n 5 "ps -C gnome-shell -o rss --no-headers | awk '{sum+=\$1} END {print sum/1024 \" MB\"}'"
# The fix
killall -3 gnome-shell
The Transformation
| Before | After |
|---|---|
| 4.3 GB RAM | 784 MB RAM |
| Stuttering animations | Butter-smooth |
| Blamed the GPU | Found the real culprit |
| Hours of confusion | One command fix |
Wrapping Up
The next time your GNOME desktop feels sluggish, don’t immediately reach for GPU drivers or display settings. Check your extensions first. Those convenient little add-ons that customize your workflow might also be slowly eating your system alive.
And if you’re using vertical-overview—maybe it’s time to say goodbye.
What extensions have burned you? I’d love to hear your GNOME horror stories.