97
In defence of swap: common misconceptions
(chrisdown.name)
A community for everything relating to the linux operating system
Also check out !linux_memes@programming.dev
Original icon base courtesy of lewing@isc.tamu.edu and The GIMP
I've never understood why GNU/Linux actually needs swap. Okay, I created a 4G partition for it, having 32G of RAM. I never used all that RAM, but even so, stuff regularly ends up in swap. Why does the OS waste write cycles on my SSD if it doesn't have to?
However, if I artificially fill up all 32G of RAM, the system almost completely freezes faster than switching to using swap as a "lifeline". And it only comes back to life when OOM Killer finally remembers its existence and kills some f__ing important process.
It doesn't. It's just good to have in most circumstances.
Also, sidenote: "GNU" doesn't apply here. Swapping is purely kernel business, no GNU involvement here.
Physical memory does not just contain program data, it also contains the filesystem cache, which is also important for performance and responsiveness. The idea is that some of the least recently used memory pages are sometimes evicted to swap in favor of more file caching.
You can tweak this behavior by setting the
vm.swappiness
kernel parameter with sysctl. Basically higher values mean higher preference for keeping file backed pages in memory, lower values mean higher preference for keeping regular memory pages in memory.By default
vm.swappiness = 60
. If you have an abundance of memory, like a desktop system with 32G, it can be advantageous to lower the value of this parameter. If you set it to something low like 10 or 1, you will rarely see any of this paradoxical swap usage, but the system will still swap if absolutely necessary. I remember reading somewhere that it's not a good idea to set it to 0, but I don't remember the reason for that.Alternatively, there is no rule that says you can't disable swap entirely. I've run a 32G desktop system without any swap for years. The downside is that if your 32G does run out, there will be no warning signs and the OOM killer will unceremoniously kill whatever is using the most memory.
tl;dr just do this: