I have noticed that my home server is strangely using lots of swap (~5 GB), despite having only a few lightweight processes running and loads of RAM installed (32 GB).
Upon configuring Grafana + Prometheus, I noticed a trend where cache + buffer will progressively increase until swap starts to be used. My system and services combined will use ~8 GB RAM. Upon rebooting, the cache + buffer will start anywhere from 3–10 GB, progressively ramp up to ~25 GB in 1–2h, where swap will start to be needed (~3 GB). See the image attached for reference.
My swap filesystem is on an expensive (to me) SSD, and I would like to reduce its wear by as much as possible. I understand that swap can introduce only minimal wear on SSDs depending on its nature and that it can be harmless, but I am still not sure what is causing this behavior (and why) and whether I should worry about it or not. So I figured I should investigate what is happening here.
My main question is, how can I figure out what is causing this behavior? Is it expected? I am looking for guidance from others who are more experienced than me in the topic.
A little bit about my system:
I am running Debian 12 on an NVMe SSD containing the root partition (btrfs) and docker services. I also have two HDDs, one with persistent data (ext4), and the other with backups (ext4). This is majoritarily a single-user machine. I tried using the following kernel parameters, but it hasn’t helped:
vm.swappiness=10
vm.vfs_cache_pressure=200
My docker services are:
- *arr stack
- jellyfin
- nextcloud
- immich
- open-webui + ollama
- pi-hole
- invidious
- romm
- nginx proxy manager
- grafana + prometheus
- other minor services that I don’t think are doing much (uptime-kuma, stirlingpdf, vaultwarden, etc)


Huh…
System load: 1.26 Temperature: 57.0 C Usage of /: 20.4% of 454.86GB Processes: 527 Memory usage: 44% Users logged in: 1 Swap usage: 0% IPv4 address for eno1: 192.168.1.190Ubuntu 22.04.5 - 32 GB RAM - 53 total containers
cat /proc/sys/vm/swappiness: 60 (pretty much default) cat /proc/pressure/cpu: some avg10=0.68 avg60=0.62 avg300=0.67 total=960097774 full avg10=0.00 avg60=0.00 avg300=0.00 total=0 cat /proc/pressure/memory: some avg10=0.00 avg60=0.00 avg300=0.00 total=0 full avg10=0.00 avg60=0.00 avg300=0.00 total=0 cat /proc/pressure/io: some avg10=1.16 avg60=4.88 avg300=3.85 total=2831425045 full avg10=1.11 avg60=4.54 avg300=3.58 total=2653626377