this post was submitted on 17 Sep 2025
28 points (100.0% liked)
Linux
9582 readers
342 users here now
A community for everything relating to the GNU/Linux operating system (except the memes!)
Also, check out:
Original icon base courtesy of lewing@isc.tamu.edu and The GIMP
founded 2 years ago
MODERATORS
you are viewing a single comment's thread
view the rest of the comments
view the rest of the comments
Linux has kind of two forms of memory pages (entries in RAM), one is a file cache (page cache) and the other is "memory allocated by programs for work" (anonymous pages).
When you look at memory consumed by a process you are looking at RSS, page/file cache is part of kernel and for example in btop corresponds to
Cached
.Page cache can never be moved into swap - that would be the same as duplicating the file from one place on a disk to another place on a (possibly different) disk.
If more memory is needed, page cache is evicted (written back into the respective file, if changed). Only anonymous pages (not backed by anything permanent) can be moved into swap.
So what does "PostgreSQL heavily relies on the OSs disk cache" mean? The more free memory there is, the more files can be kept cached in RAM and the faster postgres can then retrieve these files.
When you add zram, you dedicate part of actual RAM to a compressed swap device which, as I said above, will never contain page cache.
In theory this still increases the total available memory but in reality that is only true if you configure the kernel to aggressively "swap" anonymous pages into the zram backed swap.
Notes: I tried to simplify this a bit so it might not be exact, also if you look at a process, the memory consumed by it is called RSS and it contains multiple different things not just memory directly allocated by the code of the program.