我知道我可以用fio
任何给定的静态工作负载对我的磁盘进行基准测试。但是,是否有任何开源高质量基准测试工具支持在我选择以下参数作为常量的情况下进行测试:
- 测试文件大小(例如 500 MB)
- 静态 QD(至少可设置为 1、2、4 和 8)
- 工作负载(例如,在整个文件范围内随机读取 4k)
- 直接 I/O 访问(类似于
libaio
offio
) - 以 µs 为单位定义最大延迟
并且基准测试应该缓慢增加 IOPS,直到延迟超过设定的限制,之后基准测试完成。测试结果将是每个 IOPS 值的延迟,或者更好的是,每个 IOPS 值的最小+平均+最大延迟。
基本上我在问一个可以做这个 storagereview.com 图表所需的类似基准测试的工具:
我知道我可以fio
使用不同的设置重复运行以生成所需的数据,但我想知道是否有一些用于此目的的预制工具。是否存在这样的基准测试工具?
fio
有一个选项可以发现可以在一定延迟下完成的最高 IOPS...来自fio 文档的“I/O 延迟”部分:请参阅 fio 帮助的整个I/O 延迟部分,因为有很多操作相互作用在一起。您可能还会发现fio 的 Steady State 模式和单独的工具Diskplorer(它自己驱动
fio
)很有用。但是,我注意到您已经澄清了您的问题,并且上述选项/工具不会在一定数量的不同“最大 IOPS”点处生成延迟数(但是 Diskplorer确实会针对 I/O 深度数生成延迟/IOPS)。除此之外
fio
,您还可以查看使用vdbench
StorageReview 自己实际上似乎在该评论中使用的工具(尽管他们的页面声称他们使用 fio),但您必须向libaio
类似的提交挥手告别 - 我相当确定vdbench
不执行特定于平台的 AIO,因为它试图与平台无关(因此它只能使用多个线程/进程来增加深度)。这是我编写的 bash 脚本(在 github 上托管的 fio-ramp):
示例图(英特尔 SSD 910 上的延迟与 IOPS,随机 4K 读取 QD32,日志-日志图):
与Diskplorer相比,它为每个 IOPS 目标运行一个新
fio
进程并收集最小、平均和最大延迟。我比 python 更了解 bash,所以这对我来说更容易编写。从长远来看,改进 Diskplorer 可能会更好,以防它的许可证是可接受的(目前尚未为该项目定义许可证)。