centos swap性能测试工具
导读:CentOS 下评估 Swap 性能的工具与用法 一、工具总览与适用场景 工具 作用 典型用途 fio 面向文件/设备的灵活 I/O 基准测试 直接对 Swap 设备或 Swap 文件做顺序/随机、读/写带宽与 IOPS 测试...
CentOS 下评估 Swap 性能的工具与用法
一、工具总览与适用场景
| 工具 | 作用 | 典型用途 |
|---|---|---|
| fio | 面向文件/设备的灵活 I/O 基准测试 | 直接对 Swap 设备或 Swap 文件做顺序/随机、读/写带宽与 IOPS 测试 |
| sysbench(内存场景) | 生成内存压力,触发系统使用 Swap | 通过内存分配与回收压力,观察 si/so 与整体延迟变化 |
| vmstat | 系统级资源与 Swap 活动监控 | 实时查看 si/so、内存与 CPU 等待,判断是否发生换页 |
| free | 内存与 Swap 使用概况 | 快速查看 Swap 总量/已用/空闲 |
| swapon / swapon -s | 查看与启用 Swap | 确认 Swap 设备/文件、优先级与大小 |
| iostat / sar(sysstat) | 磁盘 I/O 统计与历史回放 | 评估底层磁盘吞吐、IOPS、await,关联 Swap 性能瓶颈 |
| dstat | 综合资源监控 | 同时观察 Swap、CPU、磁盘、网络等 |
| top/htop | 进程级内存占用 | 定位占用内存/触发换页的进程 |
| 以上工具覆盖“产生压力—采集指标—定位进程”的完整链路,适合在 CentOS 7/8/9 环境进行 Swap 性能评估与诊断。 |
二、快速上手流程
- 准备可测的 Swap 目标
- 使用独立分区或文件皆可;示例创建 2GB Swap 文件并启用:
sudo dd if=/dev/zero of=/swapfile bs=2G count=1 sudo chmod 600 /swapfile sudo mkswap /swapfile sudo swapon /swapfile echo '/swapfile swap swap defaults 0 0' | sudo tee -a /etc/fstab swapon -s
- 使用独立分区或文件皆可;示例创建 2GB Swap 文件并启用:
- 基线监控
- 打开三个终端并行观察:
watch -n 1 'free -h' vmstat -w 1 iostat -dx 1
- 打开三个终端并行观察:
- 制造压力并观察
- 用 fio 对 Swap 文件进行基准测试(示例为顺序写,持续 60s):
fio --ioengine=libaio --bs=4k --direct=1 --thread --time-based \ --rw=write --filename=/swapfile --runtime=60 --numjobs=1 --iodepth=1 \ --group_reporting --name=swap-seq-write - 或用 sysbench 触发内存压力(示例:单线程,分配并释放 1GB 内存,运行 60s):
sysbench memory --memory-block-size=1G --memory-total-size=1G --time=60 run
- 用 fio 对 Swap 文件进行基准测试(示例为顺序写,持续 60s):
- 结果判读要点
- vmstat 中 si/so 持续大于 0 表示发生换页;若 wa(I/O 等待)同时偏高,多为磁盘瓶颈。
- iostat 关注 await、svctm、r/s、w/s、kB_read/s、kB_wrtn/s,判断底层磁盘是否能承载当前 Swap 吞吐。
- free 观察 Swap 使用是否快速增长,配合 top/htop 定位占用内存最多的进程。
三、关键命令示例
- 直接对 Swap 文件做 4K 随机读/写(各 60s)
fio --ioengine=libaio --bs=4k --direct=1 --thread --time-based \ --rw=randread --filename=/swapfile --runtime=60 --numjobs=1 --iodepth=1 \ --group_reporting --name=swap-randread fio --ioengine=libaio --bs=4k --direct=1 --thread --time-based \ --rw=randwrite --filename=/swapfile --runtime=60 --numjobs=1 --iodepth=1 \ --group_reporting --name=swap-randwrite - 顺序读/写带宽(各 60s)
fio --ioengine=libaio --bs=4k --direct=1 --thread --time-based \ --rw=read --filename=/swapfile --runtime=60 --numjobs=1 --iodepth=1 \ --group_reporting --name=swap-seq-read fio --ioengine=libaio --bs=4k --direct=1 --thread --time-based \ --rw=write --filename=/swapfile --runtime=60 --numjobs=1 --iodepth=1 \ --group_reporting --name=swap-seq-write - 实时监控与历史统计
free -h vmstat -w 1 swapon -s iostat -dx 1 dstat -ta 10 sar -S 1 60 # 需安装并启用 sysstat - 调整 Swap 倾向(仅在测试环境使用)
cat /proc/sys/vm/swappiness sudo sysctl vm.swappiness=10 echo 'vm.swappiness=10' | sudo tee -a /etc/sysctl.conf
上述命令覆盖从“压测—监控—参数”的完整闭环,便于量化 IOPS/带宽/延迟 并关联系统行为。
四、结果解读与优化建议
- 何时判定 Swap 成为瓶颈
- vmstat 中 si/so 持续 > 0 且 wa 偏高,说明换页频繁且受限于 I/O;若 si/so 偶尔 > 0 而 wa 低,多为短时峰值,不一定构成瓶颈。
- 影响 Swap 性能的关键因素
- 存储介质:NVMe SSD > SATA SSD > HDD;介质越快,Swap 延迟与带宽越优。
- 内存容量与压力:可用内存越小,换页越频繁;应用内存访问模式决定换页压力。
- 内核参数:vm.swappiness(倾向使用 Swap 的程度)、vm.vfs_cache_pressure(回收目录项/索引节点缓存的压力)、vm.dirty_ratio/background_ratio(脏页写回策略)都会影响换页与 I/O 行为。
- 快速优化方向
- 优先增加物理内存或降低应用内存占用;将 Swap 放在更快的 NVMe 上(避免 NFS 等远程存储)。
- 适度降低 vm.swappiness(如 10),仅在必要时启用;结合 vm.vfs_cache_pressure 与脏页参数做权衡。
- 使用 tuned 选择更合适的性能配置(如 throughput-performance、latency-performance),并配合 iostat/sar 验证改进效果。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: centos swap性能测试工具
本文地址: https://pptw.com/jishu/769836.html
