优化和测试实例性能

本页面介绍 Filestore 的预期平均性能和推荐的性能设置。此外还介绍了如何测试 Filestore 实例的性能。

预期性能

每个 Filestore 服务层级都提供不同级别的性能。由于各种因素(例如缓存的使用、客户端虚拟机的数量、客户端虚拟机的机器类型以及测试的工作负载),任何给定实例的性能都可能与预期数量有所不同。

下表根据 Filestore 实例的服务层级和配置的容量显示了其预期性能:

性能 容量 读取和写入 IOPS 读写吞吐量 (MiB/s)
BASIC_HDD 1 TiB 到 10 TiB 600/1,000 100/100
BASIC_HDD 10 TiB 至 63.9 TiB 1,000/5,000 180/120
BASIC_SSD 2.5 TiB 至 63.9 TiB 60,000/25,000 1,200/350
ZONAL(可用区级,容量范围低) 1 TiB 9200/2600 260/88
ZONAL(可用区级,容量范围低) 9.75 TiB 89700/25350 2,535/858
HIGH_SCALE_SSD(现为可用区级,高容量范围) 10 TiB 92000/26000 2600/880
HIGH_SCALE_SSD(现为可用区级,高容量范围) 100 TiB 920,000/260,000 26000/8800
ENTERPRISE 1 TiB 12000/4000 120/100
ENTERPRISE 10 TiB 120000/40000 1200/1000

上表显示了每个服务层级最小和最大容量的预期性能。在这些限额之间,性能会随着容量的增长而线性扩展。例如,如果您将企业实例的容量从 1 TiB 翻倍到 2 TiB,则该实例的预期性能从 12,000/4,000 读写 IOPS 翻倍至 24,000/8,000 读写 IOPS。

在使用一个客户端和使用少量客户端的场景中,您必须使用 nconnect 装载选项增加 TCP 连接数量才能达到最佳 NFS 性能。我们建议为可用区级服务层级指定最多 7 个连接,为企业层级指定最多 2 个连接。一般来说,文件共享容量越大、连接的客户端虚拟机越少,使用 nconnect 指定其他连接所获得的性能就越好。

推荐的客户端机器类型

建议使用 Compute Engine 机器类型(例如 n2-standard-8),它可以提供 16 Gbps 的出站流量带宽。通过这个出站流量带宽,客户端可以为便于缓存的工作负载实现大约 16 个 Gbps 的读取带宽。如需了解其他背景信息,请参阅网络带宽

Linux 客户端装载选项

我们建议您使用以下 NFS 装载选项(尤其是 hard 装载、async 以及 rsizewsize 选项),以便在 Linux 客户端虚拟机实例上实现最佳性能。要详细了解 NFS 装载选项,请参阅 nfs

默认选项 说明
hard NFS 客户端无限期地重试 NFS 请求。
timeo=600 NFS 客户端会等待 600 分秒(60 秒)后再重试 NFS 请求。
retrans=3 NFS 客户端会尝试 NFS 请求三次,再执行进一步的恢复操作。
rsize=262144 对于每个 READ 请求, NFS 客户端最多可以从 NFS 服务器接收 262144 字节。
注意:对于基本层级实例,请将 rsize 值设置为 1048576
wsize=1048576 对于每个 WRITE 请求, NFS 客户端最多可以向 NFS 服务器发送 1048576 字节 (1 MiB)。
resvport 与 NFS 服务器就此装载装点进行通信时,NFS 客户端会使用特权源端口。
async NFS 客户端延迟向 NFS 服务器发送应用程序写入,直到满足某些条件。
注意:使用 sync 选项会大大降低性能。

单个客户端虚拟机和多客户端虚拟机性能

Filestore 的可伸缩服务层级针对多个客户端虚拟机(而非单个客户端虚拟机)进行了优化。

对于enterprise-可用区级实例,至少需要四个客户端虚拟机才能充分利用全部性能。这样可以确保底层 Filestore 集群中的所有虚拟机都得到充分利用。

为了更多上下文,最小的可伸缩 Filestore 集群有四个虚拟机。每个客户端虚拟机仅与一个 Filestore 集群虚拟机通信,无论使用 nconnect 装载选项指定的每个客户端的 NFS 连接数是多少。如果使用单个客户端虚拟机,则仅从单个 Filestore 集群虚拟机执行读写操作。

提高各项 Google Cloud 资源的性能

跨多个 Google Cloud 资源的操作(例如使用 gsutil 将数据从 Cloud Storage 复制到 Filestore 实例)可能速度较慢。为帮助缓解性能问题,请尝试以下操作:

  • 确保 Cloud Storage 存储桶、客户端虚拟机和 Filestore 实例都位于同一区域

    双区域为 Cloud Storage 中存储的数据提供了最高性能的选项。如果使用此选项,请确保其他资源位于双区域中包含的单个区域之一中。例如,如果您的 Cloud Storage 数据位于 us-central1,us-west1 中,请确保您的客户端虚拟机和 Filestore 实例位于 us-central1 中。

  • 作为参考点,请验证挂接了 PD 的虚拟机的性能,并与 Filestore 实例的性能进行比较。

    • 如果挂接了 PD 的虚拟机的性能与 Filestore 实例类似或更慢,这可能表示存在与 Filestore 无关的性能瓶颈。请尝试以下操作来提高非 Filestore 资源的基准性能:

      • 应用 gsutil -m 选项。此选项允许支持的操作(包括 cpmvrsync)并行运行。

      • 应用以下 gsutil 配置。每个参数都是在 boto 配置文件中设置的可变的 boto 配置值。用户可以直接修改文件(推荐),也可以使用 gsutil -o 选项:

    • 如果 Filestore 实例的性能明显低于挂接了 PD 的虚拟机的性能,请尝试将操作分布到多个虚拟机上。

      • 这有助于提高从 Cloud Storage 读取操作的性能。

      • 对于enterprise-可用区级实例,需要至少四个客户端虚拟机才能充分发挥性能。这可确保充分利用底层 Filestore 集群中的所有虚拟机。如需了解详情,请参阅单个和多客户端虚拟机性能

测试性能

如果您使用的是 Linux,则可以使用 fio 工具对基本层级实例的读写吞吐量和 IOPS 进行基准化分析。请注意,不建议对企业和可用区级实例使用此方法进行性能基准测试。

本部分中的示例显示了您可能想要运行的常用基准化分析。您可能需要从多个客户端虚拟机实例运行 fio,以实现最高性能。

以下示例对最大写入吞吐量执行基准化分析:

fio --ioengine=libaio --filesize=32G --ramp_time=2s \
--runtime=5m --numjobs=16 --direct=1 --verify=0 --randrepeat=0 \
--group_reporting --directory=/mnt/nfs  \
--name=write --blocksize=1m --iodepth=64 --readwrite=write

以下示例对最大写入 IOPS 执行基准化分析:

fio --ioengine=libaio --filesize=32G --ramp_time=2s \
--runtime=5m --numjobs=16 --direct=1 --verify=0 --randrepeat=0 \
--group_reporting --directory=/mnt/nfs  \
--name=randwrite --blocksize=4k --iodepth=256 --readwrite=randwrite

以下示例对最大读取吞吐量执行基准化分析:

fio --ioengine=libaio --filesize=32G --ramp_time=2s \
--runtime=5m --numjobs=16 --direct=1 --verify=0 --randrepeat=0 \
--group_reporting --directory=/mnt/nfs  \
--name=read --blocksize=1m --iodepth=64 --readwrite=read

以下示例对最大读取 IOPS 执行基准化分析:

fio --ioengine=libaio --filesize=32G --ramp_time=2s \
--runtime=5m --numjobs=16 --direct=1 --verify=0 --randrepeat=0 \
--group_reporting --directory=/mnt/nfs  \
--name=randread --blocksize=4k --iodepth=256 --readwrite=randread

后续步骤