你当前正在访问 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 文件服务中的文件系统缓存。 此修改会导致总体数字略低,但可更准确地表示绕过缓存时存储服务的表现。

后续步骤