实例性能简介

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

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

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

了解性能计算

下表显示了基于每个 TiB 的预配 IOPS 和分配的容量的性能计算。计算基于不同的容量范围,以显示每个 TiB 的最小和最大 IOPS 值对应的读取 IOPS、写入 IOPS、读取吞吐量和写入吞吐量的值如何变化。

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

容量范围 每个 TiB 的最小和最大
预配 IOPS
容量 读取 IOPS 写入 IOPS 读取吞吐量 (MiBps) 写入吞吐量 (MiBps) 单个客户端读取吞吐量 (MiBps) 单个客户端写入吞吐量 (MiBps)
较低容量范围
(100 GiB 到 10,239 GiB)
4,000 100 GiB 2,000* 600 47 16 47 16
600 GiB 2,344 703 55 19 55 19
1,024 GiB 4,000 1,200 94 32 94 32
10,239 GiB 39,996 11,999 940 320 450 260
17,000 100 GiB 2,000 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)
3,000 10 TiB 30,000 9,000 705 240 705 240
7,500 100 TiB 750,000 225,000 17,625 6,000 1,600 800

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

性能伸缩

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

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

层级 容量 连接数
区域级、可用区级 1-9.75 TiB nconnect=2
区域级、可用区级 10-100 TiB 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 内核在顺序读取操作期间应预提取的数据量(以 KB 为单位)。因此,后续读取请求可以直接从内存传送,从而减少延迟并提高整体性能。

对于 Linux 内核版本 5.4 及更高版本,Linux NFS 客户端使用默认的 read_ahead_kb 值 128 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 集群有四个虚拟机。无论使用 nconnect 装载选项为每个客户端指定了多少个 NFS 连接,每个客户端虚拟机都仅与一个 Filestore 集群虚拟机通信。如果使用单个客户端虚拟机,则读取和写入操作仅从单个 Filestore 集群虚拟机执行。

基于容量的性能限制

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

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

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

服务层级 容量 读取 IOPS 写入 IOPS 读取吞吐量 (MiBps) 写入吞吐量 (MiBps) 单个客户端读取吞吐量 (MiBps) 单个客户端写入吞吐量 (MiBps)
Zonal 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 12,000 4,000 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 12,000 4,000 120 100 120 100
10 TiB 120,000 40,000 1,200 1,000 450 260
基本 HDD 1 TiB - 10 TiB 600 1,000 100 100 100 100
10 TiB - 63.9 TiB 1,000 5,000 180 120 180 120
基本 SSD 2.5 TiB - 63.9 TiB 60,000 25,000 1,200 350 1,200 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 实例的性能进行比较。

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

后续步骤