本页面介绍了 Filestore 实例的性能限制,以及推荐的性能设置和测试选项。
每个 Filestore 服务层级都提供不同级别的性能,这些性能可能会因各种因素而异,例如缓存的使用、客户端虚拟机的数量、客户端虚拟机的 机器类型以及测试的工作负载。
下表列出了为每个服务层级设置最小和最大容量时可以达到的性能上限。
表中的所有值均为估计的限制,不能保证。如需了解自定义性能设置和限制,请参阅自定义性能限制。
| 服务层级 | 容量 | 读取 IOPS | 写入 IOPS | 读取吞吐量 (MiBps) | 写入吞吐量 (MiBps) | 单个客户端读取吞吐量 (MiBps) | 单个客户端写入吞吐量 (MiBps) | 支持自定义性能 |
|---|---|---|---|---|---|---|---|---|
| BASIC_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 | ||
| BASIC_SSD | 2.5 TiB 到 63.9 TiB | 60,000 | 25,000 | 1,200 | 350 | 1,200 | 350 | |
| 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 |
性能伸缩
在上一表中列出的性能限制范围内,性能会随着容量线性扩缩。例如,如果您将企业实例容量从 1 TiB 翻倍到 2 TiB,则实例的性能限制也会从 12,000/4,000 次读取和写入 IOPS 翻倍到 24,000/8,000 次读取和写入 IOPS。
在使用一个客户端和使用少量客户端的场景中,您必须使用
装载选项增加 TCP
连接数量才能达到最佳 NFS 性能。nconnect
对于特定服务层级,我们建议指定客户端和服务器之间的以下连接数:
| 层级 | 容量 | 连接数 |
|---|---|---|
| 区域级、可用区级 | 1-9.75 TiB | nconnect=2 |
| 区域级、可用区级 | 10-100 TiB | nconnect=7 |
| 企业 | - | nconnect=2 |
| 大规模 SSD | - | nconnect=7 |
一般来说,文件共享容量越大,连接的客户端虚拟机越少,通过使用 nconnect 指定额外连接即可提升性能。
自定义性能
设置自定义性能,以便根据工作负载需求配置性能,而无需考虑指定的容量。您可以指定 IOPS 与 TiB 的比率,也可以设置固定的 IOPS 数量。如需了解详情,请参阅自定义性能。
对于 GKE 工作负载,您可以针对可用区级和区域级层级独立扩缩 IOPS,而无需考虑容量。借助 VolumeAttributesClass API,您可以动态调整实时卷的 IOPS,而无需停机。如需详细了解如何使用 CSI 驱动程序配置自定义性能,请参阅 配置自定义性能。
推荐的客户端机器类型
我们建议使用 Compute Engine 机器类型(例如 n2-standard-8),其出站流量带宽至少为 16 Gbps。此出站流量带宽允许客户端为容易缓存的工作负载实现大约 16 Gbps 的读取带宽。如需其他上下文,请参阅网络带宽。
Linux 客户端装载选项
建议使用以下 NFS 装载选项,尤其是 hard 装载、async 以及 rsize 和 wsize 选项,以便在 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 集群有四个虚拟机。每个客户端虚拟机仅与一个 Filestore 集群虚拟机通信,
无论使用
nconnect
装载选项为每个客户端指定了多少个 NFS 连接。如果使用单个客户端虚拟机,则读取和写入操作仅从单个 Filestore 集群虚拟机执行。
提升跨 Google Cloud 资源的性能
跨多个 Google Cloud 资源的操作(例如使用 gcloud 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 的读取操作性能。
对于可用区级、区域级和企业实例,至少需要四个客户端虚拟机才能充分利用性能。这可确保底层 Filestore 集群中的所有虚拟机都得到充分利用。 如需了解详情,请参阅单个和多个客户端虚拟机的性能。