你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
了解 Azure NetApp 文件中的性能测试方法
这些测试中使用的基准检验工具称为灵活 I/O 测试器 (FIO)。
在测试存储性能上限的边缘时,工作负载生成必须高度并行化才能获得可能的最佳结果。
也就是说:
- 一个对多个客户端
- 多个 CPU
- 多线程
- 对多个文件执行 I/O
- 多线程网络连接(如 nconnect)
最终目标是在操作必须开始等待其他操作完成之前,尽可能地推动存储系统。 使用单个客户端遍历单个网络流或从/向单个文件读取/写入(例如,在单个客户端上使用 dd 或 diskpd)不会提供表明 Azure NetApp 文件的功能强弱的结果。 相反,这些设置将显示单个文件的性能,其趋势通常与线路速度和/或 Azure NetApp 文件服务的 QoS 设置相关。
此外,必须尽可能减少缓存,以实现存储所能实现的准确、有代表性的结果。 然而,对于现代应用程序来说,缓存是一种非常实用的工具,可助其达到最佳性能。 这些涵盖了具有一些缓存的场景,以及通过使用 FIO 选项进行工作负载随机化来绕过缓存的场景(具体而言,使用 randrepeat=0
来防止存储上的缓存,使用 directio 来防止客户端缓存)。
关于灵活 I/O 测试器
灵活 I/O 测试器 (FIO) 是一种开源的工作负载生成工具,通常用于存储基准测试,因为它在定义工作负载模式时易于使用且具有灵活性。 如需了解该工具如何与 Azure NetApp 文件配合使用,请参阅 Azure NetApp 文件服务的性能基准测试建议。
FIO 的安装
按照 FIO 自述文件中的二进制软件包部分为所选平台进行安装。
IOPS 的 FIO 示例
本部分的 FIO 示例使用以下设置:
- VM 实例大小:D32s_v3
- 容量池服务级别和大小:高级/50 TiB
- 卷配额大小:48 TiB
以下示例显示了 FIO 随机读取和写入。
FIO:8k 块大小 100% 随机读取
fio --name=8krandomreads --rw=randread --direct=1 --ioengine=libaio --bs=8k --numjobs=4 --iodepth=128 --size=4G --runtime=600 --group_reporting
FIO:8k 块大小 100% 随机写入
fio --name=8krandomwrites --rw=randwrite --direct=1 --ioengine=libaio --bs=8k --numjobs=4 --iodepth=128 --size=4G --runtime=600 --group_reporting
基准结果
有关 FIO 在 Azure NetApp 文件中的表现的官方基准结果,请参阅适用于 Linux 的 Azure NetApp 文件性能基准。
带宽的 FIO 示例
本部分中的示例显示了 FIO 顺序读取和写入。
FIO:64k 块大小100% 顺序读取
fio --name=64kseqreads --rw=read --direct=1 --ioengine=libaio --bs=64k --numjobs=4 --iodepth=128 --size=4G --runtime=600 --group_reporting
FIO:64k 块大小100% 顺序写入
fio --name=64kseqwrites --rw=write --direct=1 --ioengine=libaio --bs=64k --numjobs=4 --iodepth=128 --size=4G --runtime=600 --group_reporting
基准结果
有关 FIO 在 Azure NetApp 文件中的表现的官方基准结果,请参阅适用于 Linux 的 Azure NetApp 文件性能基准。
基于 FIO 的缓存
FIO 可以使用特定选项运行,以控制性能基准检验读取和写入文件的方式。 在排除缓存的基准测试中,FIO 标志 randrepeat=0
用于通过运行真正的随机工作负载(而不是重复模式)来避免缓存。
[randrepeat
]https://fio.readthedocs.io/en/latest/fio_doc.html#i-o-type)
默认情况下,如果未定义 randrepeat
,FIO 工具会将值设置为“true”,这意味着文件中生成的数据不是真正随机的。 因此,不会利用文件系统缓存来提高工作负载的整体性能。
在 Azure NetApp 文件的早期基准测试中,未定义 randrepeat
,因此实现了一些文件系统缓存。 在较新的测试中,此选项设置为“0”(false),以确保数据具有足够的随机性,从而避免 Azure NetApp 文件服务中的文件系统缓存。 此修改会导致总体数字略低,但可更准确地表示绕过缓存时存储服务的表现。