共计 1351 个字符,预计需要花费 4 分钟才能阅读完成。
背景介绍
atto 是一个轻量级的磁盘基准测试工具,主要用于评估存储设备(如 HDD、SSD、NVMe 等)的底层性能。它通过模拟不同的 I / O 模式(顺序 / 随机读写)和块大小,帮助开发者快速获取存储设备的真实性能表现。

适用场景包括:
- 新硬盘性能验证
- RAID 阵列调优
- 云存储选型对比
- 文件系统性能测试
核心指标解析
1. IOPS(Input/Output Operations Per Second)
IOPS 表示每秒完成的 I / O 操作次数,是衡量随机访问性能的核心指标。例如:
- 消费级 SSD 的 4K 随机读写 IOPS 通常在 50K-100K
- 高性能 NVMe SSD 可达数百万 IOPS
2. 吞吐量(Throughput)
单位时间内传输的数据量(MB/s),主要反映顺序读写性能。注意:
- 大块数据(如 1MB)测试时更关注吞吐量
- 受接口带宽限制(如 SATA3 上限约 600MB/s)
3. 延迟(Latency)
单次 I / O 操作的响应时间(μs),直接影响用户体验:
- 普通 SSD 的读写延迟通常在几十微秒
- 延迟超过 1ms 可能引发系统卡顿
实战演示
基础测试命令
# 测试 1MB 块大小的顺序读写(持续 10 秒)atto -b 1M -t 10 -f /dev/nvme0n1
# 测试 4K 随机读写(队列深度 32)atto -b 4K -t 10 -q 32 -r -f /dev/sda
参数说明:
-b:块大小(4K/1M 等)-t:测试时长(秒)-q:队列深度-r:随机模式-f:测试设备路径
完整测试用例
# 综合测试脚本(需 root 权限)#!/bin/bash
device="/dev/nvme0n1"
echo "=== 顺序读写测试 ==="
atto -b 1M -t 30 -f $device
echo "\n=== 随机读写测试 ==="
atto -b 4K -t 30 -q 64 -r -f $device
结果解读
典型输出示例:
Sequential write:
Throughput: 548.12 MB/s
Latency: avg=182μs, max=1243μs
Random read:
IOPS: 98542
Latency: avg=32μs, p99=89μs
分析要点:
- 对比厂商标称值(注意测试条件是否一致)
- 观察延迟分布(p99 值比平均值更有参考意义)
- 检查性能曲线是否平稳(突然下跌可能触发限速)
避坑指南
常见误区
- 测试时间过短(建议≥30 秒避免缓存干扰)
- 忽略队列深度影响(QD1 模拟单线程,QD32 模拟高并发)
- 未清除缓存(测试前执行
echo 3 > /proc/sys/vm/drop_caches) - 混合读写比例不当(根据实际场景设置 -rw 参数)
硬件注意事项
- 确保接口带宽足够(NVMe 设备不要接在 SATA 接口)
- 避免测试过程中有其他 I / O 操作
- 多盘测试时注意散热(性能过热会降频)
进阶建议
工具链扩展
fio:更复杂的负载模拟iostat:实时监控 I / O 状态blktrace:分析 I / O 路径瓶颈
优化方向
- 调整文件系统参数(如 ext4 的 journal 模式)
- 优化 RAID 条带大小
- 使用 direct I/ O 绕过页缓存
思考题
- 为什么队列深度增加时 IOPS 会先上升后持平?
- 测试虚拟机存储时有哪些特殊注意事项?
- 如何设计测试用例才能准确反映数据库负载特点?
希望这篇指南能帮助你快速上手 atto 测试。实际应用中建议结合具体业务场景设计测试方案,并养成保存历史测试数据的习惯,这对性能问题排查非常有帮助。
正文完
