Hello Linux folks, i would like to share one little hack which i have found.
On fedora, zram-generator
comes installed and configured by default with lz4
algorithm i believe, and no disk swap, if you have 8gb of ram or more, that is fine, but if you have 4gb or less, systemd-oomd
either kills your games when they use too much memory, or you face an OOMD and get your system frozen.
When configuring fedora, normally i would create an in-disk swap, so that my computer wouldn’t freeze but face a MASSIVE slowdown when on way too high memory usage, i also set zram-generator
to use the zstd
algorithm so that zram compression rate is higher but slightly slower, like that i can use my low memory more efficiently with a lower risk of OOMD.
I was watching a bringus studios video once, where he tried to run counter-strike 2 on a ps4 using linux and proton; the game would always use too much memory and that would freeze the system before it got a change to actually launch, the strange ps4 linux was using in-disk swap, and so, increasing swapiness
to 100 bringus tried to leverage that to make the game run. He was successful. In disk swap is very slow, so the performance was crap, but that does not matter…
So i had the idea to combine it with zram-swap to avoid the in-disk swap penalty, also using zstd
as the algorithm to make the most out of the memory, and it was a massive sucess! Some games which would make my system very unstable or straight up freeze on certain launch attempts started launching and working just fine! and without dumb in-disk swap slowdowns!
While running modded Victoria 2 i have noticed my system using about 3.3 to 3.4GB of swap, and about 3.5 gb of ram, so about 100 to 200MB of real uncompressed memory usage, assuming zstd is running at level 1 of compression, and achieving at least 3.0 as compression rate, in thesis, my system has now the equivalent to 10GB of ram, well above it’s weight! even more impressive considering how low are the numbers we are working here!
tldr: setting your swapiness=100
while using zstd
as your zram-generator
compression algorithm, and no in-disk swap will help your system use the most out of your ram with negligible performance penalty
[…] with negligible performance penalty
Which CPU do you have?
11th Gen Intel Core i3-1115G4 @ 4x 4.1GHz
according to screenfetch, in practice i get at most 3.9ghz on cold days, and 3.4 on the other ones; the cpu is running at 70°C on idle right now.
send help, global warming and the local corporations are turning my nice little city into an unbearable hell
edit: screenfetch doesn’t seem to be accurate with temps, i’m getting 46°C at idle
Am I right to assume you’ve got a laptop? Otherwise 70C is a terrible temp to hit at idle
Not infinite ram. I’d say double ram, plus there is a noticable, but quick delay when switching to an application that was compressed by ram. But it’s much, much faster than switching to an app that was swapped to disk.
Cachyos (arch based distro) does this hy default.
Yeah, with zram I was able to actually play Cities Skylines on my Steam Deck.
archwiki tuning has a listing with swappiness set up to 180 (yes apparently the number can go over 100)
Do you need a swappiness over 1 if you don’t have another swap device?
swapiness =/= priority, if your swapiness is at 1, the kernel is never going to use the device, if the number is high(like 100) every opportunity the kernel sees to put stuff in the swap, it is going to.
Will it not use it even after the ram fills up? I wouldn’t want the compressed part be prioritised anyways