本页面介绍了 Filestore 实例的性能限制,以及推荐的性能设置和测试选项。
每个 Filestore 服务层级都提供不同级别的性能,但受各种因素的影响(例如缓存的使用、客户端虚拟机的数量、客户端虚拟机的机器类型以及测试的工作负载),实际性能可能会有所不同。
下表列出了为每个服务层级设置最小和最大容量时可以达到的性能上限。
所有表格值均为估算限值,不保证一定能实现。如需了解自定义性能设置和限制,请参阅自定义性能限制。
服务层级 | 容量 | 读取 IOPS | 写入 IOPS | 读取吞吐量 (MiBps) | 写入吞吐量 (MiBps) | 单客户端读取吞吐量 (MiBps) | 单个客户端写入吞吐量 (MiBps) | 支持自定义性能 |
---|---|---|---|---|---|---|---|---|
BASIC_HDD | 1 TiB 到 10 TiB | 600 | 1000 | 100 | 100 | 100 | 100 | 否 |
10 TiB 到 63.9 TiB | 1000 | 5,000 | 180 | 120 | 180 | 120 | ||
BASIC_SSD | 2.5 TiB 到 63.9 TiB | 60000 | 25,000 | 1200 | 350 | 1200 | 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 | ||
REGIONAL | 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 |
效果伸缩
在上一表中列出的性能限制范围内,性能随容量线性变化。例如,如果您将企业版实例的容量从 1 TiB 增加到 2 TiB,则实例的性能上限也会从 12,000/4,000 次读取和写入 IOPS 增加到 24,000/8,000 次读取和写入 IOPS。
在使用一个客户端和使用少量客户端的场景中,您必须使用 nconnect
装载选项增加 TCP 连接数量才能达到最佳 NFS 性能。
对于特定服务层级,我们建议指定以下客户端与服务器之间的连接数:
层级 | 容量 | 连接数 |
---|---|---|
区域级、可用区级 | 1-9.75 TiB | nconnect=2 |
区域级、可用区级 | 10-100 TiB | nconnect=7 |
企业 | - | nconnect=2 |
大规模 SSD | - | nconnect=7 |
一般来说,文件共享容量越大,连接的客户端虚拟机越少,通过使用 nconnect
指定额外连接获得的性能提升越大。
自定义性能
设置自定义性能,以便根据工作负载需求配置性能,而无需考虑指定的容量。您可以指定 IOPS/TiB 比率,也可以设置固定的 IOPS 数。如需了解详情,请参阅自定义性能。
推荐的客户端机器类型
我们建议使用 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 内核在顺序读取操作期间应预取的数据量(以千字节为单位)。因此,后续的读取请求可以直接从内存中传送,从而缩短延迟时间并提高整体性能。
对于 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 集群虚拟机执行。
提升了 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 集群中的所有虚拟机都得到充分利用。如需了解详情,请参阅单个和多个客户端虚拟机的性能。