在 Debian(以及其他 Linux 发行版)里,swapper / swap 使用情况的监控通常可以从 系统级 swap 使用、进程级 swap 占用、I/O 情况、内核参数 几个层面来做。下面按“常用 → 进阶”给你一套实用方案。
freefree -h
关注:
Swap: total / used / freeswaponswapon --show
或
cat /proc/swaps
可以看到:
top / htoptop
Swap 总量f → 打开 SWAP 列,看每个进程的 swap 占用htop
SWAP 列for pid in $(ls /proc | grep '^[0-9]'); do
swap=$(awk '/VmSwap/{print $2}' /proc/$pid/status 2>/dev/null)
if [ "$swap" ]; then
cmd=$(cat /proc/$pid/cmdline 2>/dev/null | tr '\0' ' ')
echo "$pid $swap KB $cmd"
fi
done | sort -k2 -n -r
或更简单:
grep VmSwap /proc/*/status | sort -k2 -n -r | head
单位通常是 KB
vmstatvmstat 1
关注:
si(swap in)so(swap out)如果 si/so 长期不为 0 → 系统正在频繁 swap,性能会明显下降
iostatiostat -x 1
看 swap 所在磁盘的:
%utilawait/proc/meminfocat /proc/meminfo | grep -i swap
关键字段:
SwapTotalSwapFreeSwapCachedSwapCached 高 ≠ 坏,说明swap内容还在内存中
sar(sysstat)apt install sysstat
sar -S 1 # swap 使用
sar -W 1 # swap 换入换出
适合:
cat /proc/sys/vm/swappiness
常见:
临时改:
sysctl vm.swappiness=10
永久:
/etc/sysctl.conf
vm.swappiness=10
监控指标:
SwapUsedPercentswap_in / swap_outsi > 0 持续 N 分钟| 现象 | 可能原因 |
|---|---|
| Swap used 高,si/so=0 | 历史换出,未活跃 |
| si/so 持续 > 0 | 内存不足 |
| 某进程 VmSwap 很大 | 该进程被换出 |
| 磁盘 IO 高 + swap | 性能瓶颈 |
如果你愿意,我可以: