(Also posted on design.canonical.com)
I routinely have at least 20 tabs open in Chrome, 10 files open in Atom (my editor of choice) and I’m often running virtual machines as well. This means my poor little X1 Carbon often runs out of memory, at which point Ubuntu completely freezes up, preventing me from doing anything at all.
Just a few days ago I had written a long post which I lost completely when my system froze, because Atom doesn’t yet recover documents after crashes.
If this sounds at all familiar to you, I now have a solution! (Although it didn’t save me in this case because it needs to be enabled first - see below.)
oom_kill
The magic SysRq key can run a bunch of kernel-level commands.
One of these commands is called oom_kill
. OOM stands for “Out of memory”,
so oom_kill
will kill the process taking up the most memory, to free some up.
In most cases this should unfreeze Ubuntu.
You can run oom_kill
from the keyboard with the following shortcut:
# Kill the process taking up the most memory
alt + SysRq + f
Except that this is disabled by default on Ubuntu:
Enabling SysRq functions
For security reasons, SysRq keyboard functions are disabled by
default. To enable them, change the value in the file
/etc/sysctl.d/10-magic-sysrq.conf
to 1
:
# /etc/sysctl.d/10-magic-sysrq.conf
kernel.sysrq = 1
And to enable the new config run:
sudo sysctl --system
SysRq shortcut for the Thinkpad X1
Most laptops don’t have a physical SysRq
key. Instead they offer a keyboard
combination to emulate the key. On my Thinkpad, this is fn + s
. However, there’s
a quirk that the SysRq
key is only “pressed” when you release.
So to run oom_kill
on a Thinkpad, after enabling it, do the following:
- Press and hold
alt
- To emulate
SysRq
, pressfn
ands
keys together, then release them (keep holdingalt
) - Press
f
This will kill the most expensive process (usually the browser tab running
inbox.google.com
in my case), and freeup some memory.
Now, if your computer ever freezes up, you can just do this, and hopefully fix it.