实例性能简介

本页介绍了 Filestore 实例可用的性能选项,并提供了一些优化性能的一般建议。当您使用 Google Cloud 控制台创建可用区实例和区域实例时,系统会默认启用自定义性能,以便您根据具体的工作负载需求,独立于容量来扩缩 IOPS。

下表总结了在自定义性能设置下,较低和较高容量范围的性能限制:

容量范围 服务层级 容量 每 TiB 预配的 IOPS
较低的容量范围 区域级(小型实例可在区域中使用) 100 GiB 到 10,239 GiB 4,000 至 17,000
区域级(区域中不提供小型实例) 1 TiB 到 9.75 TiB 4,000 至 17,000
可用区级 1 TiB 到 9.75 TiB 4,000 至 17,000
容量范围更大 区域 10 TiB 到 100 TiB 3,000 到 7,500
可用区级 10 TiB 到 100 TiB 3,000 到 7,500

了解效果计算

下表显示了基于每 TiB 的预配 IOPS 和分配容量的性能计算结果。这些计算基于不同的容量范围,旨在展示读取 IOPS、写入 IOPS、读取吞吐量和写入吞吐量的值如何随每 TiB 的最小和最大 IOPS 值而变化。

如需了解详情,请参阅读取和写入 IOPS

容量范围 每 TiB 的最小和最大
预配 IOPS
容量 读取 IOPS 写入 IOPS 读取吞吐量 (MiBps) 写入吞吐量 (MiBps) 单客户端读取吞吐量 (MiBps) 单个客户端写入吞吐量 (MiBps)
较低容量范围
(100 GiB 至 10,239 GiB)
4000 100 GiB 2,000* 600 47 16 47 16
600 GiB 2,344 703 55 19 55 19
1,024 GiB 4000 1200 94 32 94 32
10,239 GiB 39,996 11,999 940 320 450 260
17,000 100 GiB 2000 600 47 16 47 16
600 GiB 9,961 2,988 234 80 234 80
1,024 GiB 17,000 5,100 400 136 400 136
10,239 GiB 169,983 50,995 3,995 1,360 450 260
更高容量范围
(10 TiB 到 100 TiB)
3000 10 TiB 30000 9000 705 240 705 240
7500 100 TiB 750,000 225,000 17,625 6000 1,600 800

* 根据对小容量实例功能的访问权限,Filestore 区域实例的较低容量范围可以是 100 GiB 到 10,239 GiB,也可以是 1 TiB 到 9.75 TiB。如需了解详情,请参阅 小容量 Filestore 实例

性能伸缩

在使用一个客户端和使用少量客户端的场景中,您必须使用 nconnect 装载选项增加 TCP 连接数量才能达到最佳 NFS 性能。

对于特定服务层级,我们建议指定客户端与服务器之间的连接数如下:

层级 容量 连接数
区域级、可用区级 1-9.75 TiB nconnect=2
区域级、可用区级 10-100 TiB nconnect=7
基本 SSD - nconnect=7
企业 - nconnect=2
大规模 SSD - nconnect=7

一般来说,文件共享容量越大,连接的客户端虚拟机越少,通过使用 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=524288 对于每个 READ 请求,NFS 客户端最多可以从 NFS 服务器接收 524,288 个字节。
注意:对于基本级实例,请将 rsize 值设置为 1048576
wsize=524288 对于每个 WRITE 请求,NFS 客户端最多可以向 NFS 服务器发送 524,288 个字节。
resvport 与 NFS 服务器就此装载装点进行通信时,NFS 客户端会使用特权源端口。
async NFS 客户端延迟向 NFS 服务器发送应用程序写入,直到满足某些条件。
注意:使用 sync 选项会大大降低性能。

使用 read_ahead_kb 参数优化 NFS 读取吞吐量

NFS read_ahead_kb 参数用于指定 Linux 内核在顺序读取操作期间应预取的数据量(以千字节为单位)。这样一来,后续的读取请求就可以直接从内存中传送,从而缩短延迟时间并提高整体性能。

对于 Linux 内核版本 5.4 及更高版本,Linux NFS 客户端使用 128 KB 的默认 read_ahead_kb 值。我们建议您将此值增加到 20 MB,以提高顺序读取吞吐量。

成功在 Linux 客户端虚拟机上装载文件共享后,您可以使用以下脚本手动调整 read_ahead_kb 参数值:

mount_point=MOUNT_POINT_DIRECTORY
device_number=$(stat -c '%d' $mount_point)
((major = ($device_number & 0xFFF00) >> 8))
((minor = ($device_number & 0xFF) | (($device_number >> 12) & 0xFFF00)))
sudo bash -c "echo 20480 > /sys/class/bdi/$major:$minor/read_ahead_kb"

替换以下内容:

MOUNT_POINT_DIRECTORY 是文件共享所在目录的路径。

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

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

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

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

基于容量的性能限制

基于容量的限制适用于不支持自定义性能的服务层级,例如基本层级,或者您手动停用自定义性能的实例。

每个 Filestore 服务层级都提供不同级别的性能,但可能会因各种因素而异,例如缓存的使用、客户端虚拟机的数量、客户端虚拟机的机器类型以及测试的工作负载。

下表列出了为每个服务层级设置最小和最大容量时可以达到的性能上限。所有表值均为估计的限值。

服务层级 容量 读取 IOPS 写入 IOPS 读取吞吐量 (MiBps) 写入吞吐量 (MiBps) 单客户端读取吞吐量 (MiBps) 单个客户端写入吞吐量 (MiBps)
可用区级 1 TiB 9,200 2,600 260 88 260 88
9.75 TiB 89,700 25,350 2,535 858 450 260
10 TiB 92,000 26,000 2,600 880 1,600 800
100 TiB 920,000 260,000 26,000 8,800 1,600 800
区域 1 TiB 12000 4000 120 100 120 100
9.75 TiB 117,000 39,000 1,170 975 450 260
10 TiB 92,000 26,000 2,600 880 1,600 800
100 TiB 920,000 260,000 26,000 8,800 1,600 800
企业 1 TiB 12000 4000 120 100 120 100
10 TiB 120,000 40000 1200 1000 450 260
基本 HDD 1 TiB - 10 TiB 600 1000 100 100 100 100
10 TiB - 63.9 TiB 1000 5,000 180 120 180 120
基本 SSD 2.5 TiB - 63.9 TiB 60000 25,000 1200 350 1200 350

提升 Google Cloud 资源的性能

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

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

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

  • 为了便于参考,请验证挂接了 Persistent Disk (PD) 的虚拟机的性能,并将其与 Filestore 实例的性能进行比较。

    • 如果与 Filestore 实例相比,连接了 PD 的虚拟机的性能相近或更低,则可能表明存在与 Filestore 无关的性能瓶颈。为了提高非 Filestore 资源的基准性能,您可以调整与并行复合上传相关的 gcloud CLI 属性。如需了解详情,请参阅工具和 API 如何使用并行复合上传
    • 如果 Filestore 实例的性能明显低于附加了
      PD 的虚拟机,请尝试将操作分散到多个虚拟机上,以提高从 Cloud Storage 读取操作的性能。

后续步骤