I dug out my old Asus Zenbook (UX305CA) and refurbished it: gave it a good cleaning, replaced the thermal paste, installed a new battery, upgraded the SSD, and did a clean install of Ubuntu 24.04 (don’t judge; everything else in my house is still Debian and/or OpenWRT).
The only thing I can’t upgrade is the memory since it’s soldered on. It’s got 8 GB which hasn’t really been a limit given my use cases, but since I’m in upgrade mode, I was thinking of running it with zram configured.
I just setup zram and gave it 50% of the physical memory as a starting point, set vm.swappiness
to 140, and am using zstd
as the compression algorithm.
Haven’t noticed much difference, so there doesn’t seem to be much CPU performance penalty even on this low-spec CPU (base clock 900 MHz lol). zramctl
shows it’s got 726 MB swapped to it currently which is compressed to 126 MB. Not bad! The only thing I haven’t done yet is set the power profile to “Power Saver” - if there are going to be noticeable performance penalties, that’s probably when it will show up.
I’ve only ever used zram on Raspberry Pis and on an old netbook, so I’m not sure if using it on a machine with an otherwise usable amount of RAM is even worth it.
Thoughts and/or suggestions for a better config?
I’m wondering the same. I haven’t read anything authoritative, but it definitely seems like it only consumes the RAM it’s using. Otherwise, it wouldn’t be able to create block devices that exceed the physical memory. I started to wonder when I had it set to 50% (4 GB) and gave it a stress test. The 4 GB it allocated filled up but was compressed to just about 1 GB, so I thought “surely this isn’t wasting 3 GB of RAM to hold 1 GB of pages.”
The guidelines I’ve read seem like there’s some guesswork involved in the planning. Basically you can make the zram device as large as you want so long as the compressed data is less than the physical RAM (not all pages compress equally as you mentioned).
I’ve since bumped it to 200% of system ram (16 GB), and I think that’s probably good enough for my use cases. I’m seeing about a 4:1 average compress ratio, so I could go higher, but 8 GB has been plenty usable up until now. :shrug: I also left the original swap file in place with a lower priority as a spillover (I’m not really missing the 4 GB of disk space that uses, so might as well keep it).