优化和测试实例性能

本页面介绍 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 9,200/2,600 260/88
ZONAL 9.75 TiB 89700/25350 2,535/858
ZONAL 10 TiB 92,000/26,000 2,600/880
ZONAL 100 TiB 920,000/260,000 26000/8800
REGIONAL 1 TiB 12000/4000 120/100
REGIONAL 9.75 TiB 117,000/39,000 1,170/975
REGIONAL 10 TiB 92,000/26,000 2,600/880
REGIONAL 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 的容量,这是实例的预期性能 读写 IOPS 从 12000/4000 加倍到 24000/8000 读写 IOPS 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 NFS 客户端的每个 WRITE 请求最多可以向 NFS 服务器发送 1048576 字节 (1 MiB)。
resvport 与 NFS 服务器就此装载装点进行通信时,NFS 客户端会使用特权源端口。
async NFS 客户端延迟向 NFS 服务器发送应用程序写入,直到满足某些条件。
注意:使用 sync 选项会大大降低性能。

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

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

对于可用区实例、区域实例和企业实例,至少需要四个客户端虚拟机才能充分发挥性能。这样可以确保 底层 Filestore 集群中的实例被充分利用。

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

提升各项 Google Cloud 资源的性能

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

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

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

  • 为方便参考,请验证已挂接 PD 的虚拟机的性能,并将其与 Filestore 实例的性能进行比较。

    • 如果与 Filestore 实例相比,挂接了 PD 的虚拟机的性能相近或更慢,则可能表明存在与 Filestore 无关的性能瓶颈。提高基准 非 Filestore 资源的性能,您可以调整 与并行复合上传相关联的 gcloud CLI 属性。 如需了解详情,请参阅工具和 API 如何使用并行复合上传

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

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

      • 对于可用区级、区域级和企业实例,至少要有四个客户端虚拟机 才能充分发挥效用这可确保充分利用底层 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

后续步骤