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)
  • mvirts@lemmy.world
    link
    fedilink
    English
    arrow-up
    4
    ·
    20 hours ago

    I used to do this as well, and tell Linux to never overcommit, but for a desktop system normal programs are not built for this scenario. Firefox will crash with 15% system ram usage because it requests a ton of virtual memory for each process on startup.

    Swap can also be important if you want to get the most out of your ram because without swap, pages that are holding unimportant parts of the system can’t move out of the way for a large number of data pages that need processing. My latest memory revelation is zswap, which seems to be better than actual compressed memory. So far it’s served me well running ML loads on old hardware.

    • Andres@social.ridetrans.it
      link
      fedilink
      arrow-up
      4
      ·
      19 hours ago

      @mvirts Also, if the swap is there, linux will use it. If you have 8gb of swap, the kernel will assume that you want it to use that much swap.

      If you don’t want it using that much swap, just reduce your amount of swap. I have various servers (a build machine w/ 96gb of ram, a VPS w/ only 2gb of ram, etc) with zero swap. The vast majority of my machines where I actually want swap? They get 1gb, max. Other than for very specific workloads, there’s no reason to ever have that much swap imo.