6 ms·
If you are on the experimental side: There is also zram (just swap in memory lz4/lzo compressed) and zswap (compressed cache in memory for swap pages before hi
by nisa 10y ago
If you are on the experimental side:
There is also zram (just swap in memory lz4/lzo compressed) and zswap (compressed cache in memory for swap pages before hitting disk) that needs a real swap device but compresses pages beforehand.
I run zswap on my Desktop and on a few servers and it gives you some more time before the oom killer comes and the system feels a bit longer responsive.
zram is a nice idea but quite a beast in practice (at least on MIPS with 32mb RAM) sys constantly at 100% if you need it and other quirks. Maybe it got better or I did something wrong.
But if you need an in-memory compressed block-device it's pretty great - you can just format it with ext4 and have a lz4 compressed tmpfs.
- mxvzr 10y agoI use zram rather than a regular swap partition on all my laptops (because I'd rather not swap on SSDs) and desktops (same reason and/or there is an absurd amount of RAM to begin with). I also hear that most chromebooks use zram too (you really don't want to be swapping on that eMMC memory). I set it up with one zram device per CPU core for a total space of ~20% available RAM. No performance issues w/ zram so far so I haven't felt the need to change the compression algorithm.
- nerdponx 10y agoFirst I've heard of either. How would I set these up?
- mxvzr 10y agoYou can setup zram like this. Typically you'll want to make a service for it since it needs to run on every boot. # modprobe zram num_devices=1 # echo 1G > /sys/block/zram0/disksize # mkswap zram0 /dev/zram0 -L zram0 # swapon -p 100 /dev/zram0 Official documentation here: https://www.kernel.org/doc/Documentation/blockdev/zram.txt https://www.kernel.org/doc/Documentation/blockdev/zram.txt
- isr 10y agozram has worked fine on my chromebooks. This is with running multiple chroots - and I have hit the oom killer a number of times (when even zram swap wasn't enough). Until you actually run out of memory, zram seems very much a set-and-forget type of thing. No babysitting required. tl;dr: it does what it says on the tin, and ... with minimal cpu impact.
- spangry 10y agoFrom what I understand, zram results in LRU cache inversion whereas zswap does not (as it intercepts calls to the kernel frontswap API). Although, if you have a workload that would benefit from MRU then I guess this is just a bonus :) Zswap maintains default kernel memory allocation behaviour, with the tradeoff that it needs a backing swap device to push old pages out to (which is why zram tends to be used more often in embedded devices that only have a single volatile memory store, of devices with limited non-volatile storage).