在 Debian 上监控 swap 使用 可以从“实时查看”“历史趋势”“进程级分析”三个层面来做。下面按实用程度给你一套方案。
freefree -h
重点看:
Swap: 行的 total / used / free示例:
Swap: 2.0Gi 512Mi 1.5Gi
swapon查看 swap 设备和启用状态:
swapon --show
或
cat /proc/swaps
top / htop实时看整体 swap:
top
或(更友好):
htop
F6 → 选 SWAP 排序,看谁在用 swapfor pid in $(ls /proc | grep '^[0-9]'); do
swap=$(awk '/VmSwap/{print $2}' /proc/$pid/status 2>/dev/null)
[ "$swap" ] && echo "PID:$pid Swap:${swap} kB"
done | sort -k2 -n -r
或更简单:
grep VmSwap /proc/*/status | sort -k2 -n -r | head
smem(推荐)安装:
apt install smem
查看 swap 使用:
smem -s swap -r
或按用户:
smem -u -s swap
sar(sysstat)安装:
apt install sysstat
启用:
systemctl enable --now sysstat
查看 swap 历史:
sar -S
或某一天:
sar -S -f /var/log/sysstat/saXX
node_exporter 暴露:
node_memory_SwapTotal_bytesnode_memory_SwapFree_bytesvmstat 1
关注:
si(swap in)so(swap out)如果长期 > 0,说明内存不足。
swap 用了很多但内存还有?
swappiness 太高cat /proc/sys/vm/swappiness
sysctl vm.swappiness=10
swap 一直涨不降?
如果你愿意,可以告诉我:
我可以给你一套更精确的监控配置。