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)
  • irmadlad@lemmy.world
    link
    fedilink
    English
    arrow-up
    3
    arrow-down
    1
    ·
    6 hours ago

    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.190
    

    Ubuntu 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
    
    • A9nWGzYt@lemmy.dbzer0.comOP
      link
      fedilink
      English
      arrow-up
      1
      ·
      32 minutes ago

      Well, here I have 41 containers and:

      free -hm
                     total        used        free      shared  buff/cache   available
      Mem:            31Gi       5.7Gi       426Mi       207Mi        25Gi        25Gi
      Swap:           31Gi       3.7Gi        28Gi
      

      As well as

      cat /proc/sys/vm/swappiness: 10
      

      and

      $ cat /proc/pressure/cpu
      some avg10=0.00 avg60=0.00 avg300=0.00 total=302436406
      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=64263542
      full avg10=0.00 avg60=0.00 avg300=0.00 total=63043120
      
      $ cat /proc/pressure/io
      some avg10=1.99 avg60=1.67 avg300=1.61 total=1844790000
      full avg10=1.90 avg60=1.59 avg300=1.56 total=1788451770