Linux无法直接测Swap读写速度,因其由内核自动管理且不暴露为普通I/O接口;需通过stress施加内存压力,结合free、/proc/vmstat、vmstat、pidstat和iostat等工具观察换页行为与磁盘I/O指标间接评估。

Linux 中不能直接用标准工具“测 Swap 读写速度”,因为 Swap 是内核自动管理的虚拟内存机制,不暴露为普通块设备或文件接口供用户发起可控 I/O。所谓“Swap 性能”实际反映在系统整体响应和页面交换行为上,需通过压力触发 + 观察指标间接评估。
用 stress 模拟内存压力,观察 Swap 活动
这是最常用、最贴近真实场景的测试方式:人为制造内存压力,看系统是否开始换页、换出速率如何、响应是否延迟。
- 运行
stress -m 2 -l 1024:启动 2 个进程,每个持续分配并释放 1GB 内存,快速消耗可用 RAM - 同时开终端执行
watch -n 1 'free -h; echo; grep -i "swapped" /proc/meminfo':每秒刷新内存与 Swap 使用情况 - 关注
SwapUsed是否上升、pgpgin/pgpgout(/proc/vmstat 中)数值是否明显增长——后者代表每秒换入/换出的 KB 数,是 Swap I/O 的核心指标
检查 Swap 所在设备的底层 I/O 能力
Swap 性能瓶颈通常不在内核逻辑,而在磁盘本身。Swap 分区或文件最终落在某块物理/逻辑设备上,它的吞吐和延迟决定了 Swap 效果。
Linux系统管理专家,覆盖12大模块:用户权限、SSH、存储、网络、systemd、防火墙、日志监控、备份恢复、TLS证书、Ansible、容器、IaC。提供配置、验证、加固、监控、备份、自动化、故障排查、回滚闭环。关键词:useradd、sudo、sshd_config、chmod、SEL...
- 先查 Swap 位置:
swapon --show或cat /proc/swaps,确认它在哪个设备(如/dev/sda2)或文件(如/swapfile) - 若为分区,用
fio测试该设备随机写性能(Swap 主要是小页随机写):fio --name=swap-test --ioengine=libaio --rw=randwrite --bs=4k --size=1G --runtime=60 --time_based --filename=/dev/sda2 - 若为 Swap 文件,确保它未启用时再测对应文件所在分区(启用状态下 fio 可能干扰 Swap)
监控换页延迟与系统影响
高 Swap 使用不一定慢,但高延迟换页会拖垮交互体验。重点看是否出现“抖动”或响应卡顿。
- 运行
vmstat 1,观察si(swap in KB/s)和so(swap out KB/s)列:持续高于几十 MB/s 且伴随bi/bo(块 I/O)同步飙升,说明磁盘已成瓶颈 - 用
pidstat -r 1查看各进程的%mem和minflt/majflt:大幅增加的majflt(主缺页)意味着频繁从 Swap 加载页面,是性能下降的明确信号 - 配合
iostat -x 1看对应设备的%util和await:若await > 20ms且%util ≈ 100%,说明磁盘忙不过来,Swap 正拖慢系统
避免无效或误导性测试
有些方法看似在“测 Swap”,实则无效或反向干扰:
- 不要用
dd往 Swap 分区或文件里直接写数据——Swap 设备/文件被内核独占,dd会失败或破坏结构 - 不要只看
free输出的 Swap 使用量——0% 不代表没用,100% 也不等于卡死;关键看换页频率和延迟 - 禁用 Swap 后跑内存压力测试(如
stress -m)不是测 Swap 性能,而是验证 OOM Killer 行为


















