Linux Pressure

Linux CPU Pressure, measured by Pressure Stall Information (PSI) in the kernel (4.20+), indicates how much time tasks wait for the CPU, unlike simple usage, showing true resource contention affecting performance, especially when tasks are stalled due to memory pressure ("thrashing") or I/O bottlenecks, viewable via /proc/pressure/cpu or tools like Netdata/Prometheus. High PSI values (avg10, avg60, avg300) mean tasks are waiting, even if usage looks low, signaling performance issues, often requiring deeper investigation into memory/I/O for the root cause

Common Causes & What the Output Means

  • Some line: Time when at least some tasks are stalled.
  • Full line: Time when all non-idle tasks are stalled (severe).
  • High PSI, Low Usage: Tasks are waiting, often due to:
    • Memory Pressure: High kswapd activity moving pages to swap, causing page faults.
    • I/O Pressure: Disk/network bottlenecks making processes wait.
    • Thrashing: Constant memory page swapping, wasting CPU cycles

What is CPU Pressure?

  • CPU Usage: Shows how much CPU is busy (running tasks).
  • CPU Pressure: Shows how much CPU is idle because tasks are waiting for it (or other resources like memory/I/O)

How to Check CPU Pressure (PSI)

    Kernel Files: Check /proc/pressure/cpu for percentages of time tasks waited (e.g., avg10 for 10s, avg60 for 60s, avg300 for 300s).
    cat /proc/pressure/cpu
    

Support in XorMon

It will be supported since XmrMon v2.2
  • Proxmox hosts by default
  • Linux: it needs to be enabled at first
    grubby --update-kernel=ALL --args="psi=1"
    # or
    echo 1 > /sys/kernel/psi_enabled
    
    # test if this exists
    ls -l /proc/pressure/cpu
    

Examples