优化和测试实例性能

使用集合让一切井井有条 根据您的偏好保存内容并对其进行分类。

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

预期性能

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

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

性能 容量(TiB 读/写 IOPS 读取/写入吞吐量 (MiB/s)
BASIC_HDD 1–10 600/1,000 100/100
BASIC_HDD 10–63.9 1,000/5,000 180/120
BASIC_SSD 2.5–63.9 60,000/25,000 1,200/350
HIGH_SCALE_SSD 10 92000/26000 2600/880
HIGH_SCALE_SSD 100 920,000/260,000 26000/8800
ENTERPRISE 1 12000/4000 120/100
ENTERPRISE 10 120000/40000 1200/1000

上表显示了大规模和企业的最大和最小容量的预期性能。在这些限制之间,性能会随着容量扩缩而呈线性扩缩。例如,如果将企业实例容量从 1 TiB 加到 2 TiB,该实例的预期性能就会从 12000/4000 读取/写入 IOPS 加到 24000/8000 读取/写入 IOPS。

在使用一个客户端和使用少量客户端的场景中,您必须使用 nconnect 装载选项增加 TCP 连接数量才能达到最佳 NFS 性能。对于大规模层级,建议最多指定 7 个连接;对于 Enterprise 层级,建议最多指定 2 个连接。通常,文件共享容量越大,连接客户端虚拟机越少,使用 nconnect 指定额外的连接时的性能就越好。

推荐的客户端机器类型

我们建议使用 Compute Engine 机器类型(例如 n2-standard-8),其出站流量带宽为 16 Gbps。对于支持缓存的工作负载,此出站流量带宽可让客户端实现大约 16 Gbps 读取带宽。如需了解其他背景信息,请参阅网络带宽

Linux 客户端装载选项

建议使用以下 NFS 装载选项,尤其是使用 hard 装载,async,并将 rsizewsize 选项设置为 1 MiB,以便在 Linux 客户端虚拟机实例上实现最佳性能。要详细了解 NFS 装载选项,请参阅 nfs

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

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

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

对于企业大规模层级实例,至少需要 4 个客户端虚拟机才能充分利用性能。这可确保底层 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 中。

  • 对于参考点,请验证挂接了永久性磁盘的虚拟机的性能并与 Filestore 实例的性能进行比较。

    • 如果与 Filestore 实例相较而言,永久性磁盘挂接的虚拟机在性能上类似或更慢,则可能表示与 Filestore 无关性能瓶颈。请尝试以下操作,提高非 Filestore 资源的基准性能:

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

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

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

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

      • 对于企业大规模层级实例,至少需要 4 个客户端虚拟机才能充分利用完整的性能。这可确保底层 Filestore 集群中的所有虚拟机都得到充分利用。如需了解详情,请参阅单个和多个客户端虚拟机的性能

测试性能

如果您使用的是 Linux,则可以使用 fio 工具来对基本层级实例针对读写吞吐量和 IOPS 进行基准化分析。本部分中的示例显示了您可能想要运行的常用基准化分析。为实现最高性能,您可能需要从多个客户端虚拟机实例运行 fio。这种基准化分析性能方法无法为 Enterprise 层级和大规模层级实例提供准确的结果。

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

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

后续步骤