/proc/swaps仅提供交换区静态配置及粗粒度使用情况,不反映实时i/o负载;其每行含filename、type、size(kb)、used(kb)、prio五字段,used/size比值可间接评估内存压力,真正实时负载需结合/proc/vmstat、vmstat或/sys/block/*/stat分析。

1. /proc/swaps 显示的是什么?
/proc/swaps 是内核导出的只读虚拟文件,每行代表一个已启用的交换区(文件或分区),包含以下字段:
Filename:交换设备或文件路径
Type:partition(分区)或 file(交换文件)
Size:总大小(单位:KB)
Used:当前已使用量(单位:KB)
Prio:优先级(数值越大,越优先被使用)
2. 如何获取“当前负载状态”的合理理解?
虽然 /proc/swaps 本身不输出动态负载(如每秒换入/换出页数),但 Used / Size 的比值可作为内存压力的间接参考指标。例如:
- Used 接近 Size → 表示 swap 几乎占满,可能已出现频繁换页,系统响应变慢
- Used 持续上升且未回落 → 暗示物理内存长期不足,需检查内存泄漏或进程异常
- Prio 较高的 swap 先被使用,若高优先级 swap 已满而低优先级未动,说明配置不合理
3. 结合其他接口获取真正“实时负载”
若需监控交换 I/O 活动(即真正的负载),应配合以下方式:
-
/proc/vmstat:查找
pgpgin(换入页数)、pgpgout(换出页数),差值变化率反映实时 I/O 强度 - /sys/block/*/stat(对 swap 分区所在块设备):查看实际磁盘 I/O(read_sectors/write_sectors 等)
- vmstat 1 或 pidstat -r 1:观察 si(swap in)、so(swap out)字段的实时 KB/s 值
4. 实用命令示例
快速查看并计算使用率:
awk 'NR>1 {printf "%-20s %6.2f%%\n", $1, $4*100/$3}' /proc/swaps
持续监控变化(每2秒刷新):
watch -n 2 'awk '\''NR>1 {printf "%-20s %6.2f%%\n", $1, $4*100/$3}'\'' /proc/swaps'











