linux无“swap命中率”指标,应关注vmstat中si/so值是否持续>0以判断换页活跃度,结合free -h看swap用量、swapon --show查设备状态、top/htop定位高swap进程,并交叉验证mem available和oom日志。

Linux 系统中没有“Swap 命中率”这一标准指标——内核不统计或暴露类似 CPU cache hit ratio 的交换页命中/未命中比例。所谓“Swap 使用是否频繁”,真正要看的是换入(si)和换出(so)活动强度,而非“用了多少 Swap”。
一、看 Swap 是否正在被活跃使用(关键:查 si/so)
运行以下命令,观察连续几秒的 si(swap-in)和 so(swap-out)值:
-
vmstat 1 5:每秒采样一次,共 5 次;关注输出中 si 和 so 两列(单位 KB/s) - 若 si 或 so 持续 > 0(尤其 > 50–100 KB/s),说明内存压力大,内核正频繁搬运页面进出 Swap,这是性能瓶颈的明确信号
- 若 si == so == 0,即使
free -h显示 Swap used=1.8G,也只是历史残留,当前无换页压力
二、看 Swap 当前占用量与设备状态
确认 Swap 是否启用、用了多少、挂在哪:
Linux 性能分析与调优专家,覆盖 CPU、内存、磁盘 I/O、网络、内核参数、编译优化、容器/K8s。适用场景:系统卡顿/高负载、内存不足/OOM/Swap 高、CPU 异常/iowait 高。
-
free -h:看 Swap 行的 used 值(非 Mem 行);total 为 0 表示未启用 -
swapon --show:列出所有已激活的 Swap 设备(分区如/dev/nvme0n1p2,或文件如/swapfile),含大小、已用、优先级 -
cat /proc/swaps:原始格式,字段为filename type size used priority;注意used单位是 KB
三、定位哪些进程在用 Swap
Swap 占用是进程级累积结果,需结合进程视图排查:
-
top→ 按 f 进入字段管理 → 启用 SWAP 列 → 按 Shift+P 按 Swap 用量降序排列 -
htop(需安装)→ F2 进入 Setup → Columns → 添加 SWAP 字段 → 直观排序 - 查单个进程:例如 PID 是 1234,运行
grep VmSwap /proc/1234/status,输出如VmSwap: 12456 kB
四、辅助判断:是否真缺内存?
Swap 用得多 ≠ 一定有问题,得交叉验证物理内存余量:
- 看
free -h中 Mem 行的 available:只要还有几百 MB 可用,系统尚属健康 - 检查 OOM 日志:
dmesg | grep -i "killed process\|out of memory",有输出才说明濒临崩溃 - 观察缓存回收能力:
cat /proc/meminfo | grep -E "MemAvailable|SReclaimable",SReclaimable 高说明 buff/cache 可释放空间充足










