本页面介绍 Filestore 的预期平均性能和推荐的性能设置。此外还介绍了如何测试 Filestore 实例的性能。
预期性能
每个 Filestore 服务层级都提供不同级别的性能。由于各种因素(例如缓存的使用、客户端虚拟机的数量、客户端虚拟机的机器类型以及测试的工作负载),任何给定实例的性能都可能与预期数量有所不同。
下表根据 Filestore 实例的服务层级和配置的容量显示了其预期性能:
性能 | 容量 | 读取和写入 IOPS | 读写吞吐量 (MiB/s) |
---|---|---|---|
BASIC_HDD |
1 TiB 到 10 TiB | 600/1,000 | 100/100 |
BASIC_HDD |
10 TiB 至 63.9 TiB | 1,000/5,000 | 180/120 |
BASIC_SSD |
2.5 TiB 至 63.9 TiB | 60,000/25,000 | 1,200/350 |
ZONAL (可用区级,容量范围低) |
1 TiB | 9200/2600 | 260/88 |
ZONAL (可用区级,容量范围低) |
9.75 TiB | 89700/25350 | 2,535/858 |
HIGH_SCALE_SSD (现为可用区级,高容量范围) |
10 TiB | 92000/26000 | 2600/880 |
HIGH_SCALE_SSD (现为可用区级,高容量范围) |
100 TiB | 920,000/260,000 | 26000/8800 |
ENTERPRISE |
1 TiB | 12000/4000 | 120/100 |
ENTERPRISE |
10 TiB | 120000/40000 | 1200/1000 |
上表显示了每个服务层级最小和最大容量的预期性能。在这些限额之间,性能会随着容量的增长而线性扩展。例如,如果您将企业实例的容量从 1 TiB 翻倍到 2 TiB,则该实例的预期性能从 12,000/4,000 读写 IOPS 翻倍至 24,000/8,000 读写 IOPS。
在使用一个客户端和使用少量客户端的场景中,您必须使用 nconnect
装载选项增加 TCP 连接数量才能达到最佳 NFS 性能。我们建议为可用区级服务层级指定最多 7
个连接,为企业层级指定最多 2
个连接。一般来说,文件共享容量越大、连接的客户端虚拟机越少,使用 nconnect
指定其他连接所获得的性能就越好。
推荐的客户端机器类型
建议使用 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=262144 |
对于每个 READ 请求, NFS 客户端最多可以从 NFS 服务器接收 262144 字节。注意:对于基本层级实例,请将 rsize 值设置为 1048576 。 |
wsize=1048576 |
对于每个 WRITE 请求, NFS 客户端最多可以向 NFS 服务器发送 1048576 字节 (1 MiB)。 |
resvport |
与 NFS 服务器就此装载装点进行通信时,NFS 客户端会使用特权源端口。 |
async |
NFS 客户端延迟向 NFS 服务器发送应用程序写入,直到满足某些条件。 注意:使用 sync 选项会大大降低性能。 |
单个客户端虚拟机和多客户端虚拟机性能
Filestore 的可伸缩服务层级针对多个客户端虚拟机(而非单个客户端虚拟机)进行了优化。
对于enterprise-和可用区级实例,至少需要四个客户端虚拟机才能充分利用全部性能。这样可以确保底层 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
中。作为参考点,请验证挂接了 PD 的虚拟机的性能,并与 Filestore 实例的性能进行比较。
如果挂接了 PD 的虚拟机的性能与 Filestore 实例类似或更慢,这可能表示存在与 Filestore 无关的性能瓶颈。请尝试以下操作来提高非 Filestore 资源的基准性能:
应用
gsutil -m
选项。此选项允许支持的操作(包括cp
、mv
和rsync
)并行运行。应用以下
gsutil
配置。每个参数都是在boto
配置文件中设置的可变的boto
配置值。用户可以直接修改文件(推荐),也可以使用gsutil -o
选项:
如果 Filestore 实例的性能明显低于挂接了 PD 的虚拟机的性能,请尝试将操作分布到多个虚拟机上。
这有助于提高从 Cloud Storage 读取操作的性能。
对于enterprise-和可用区级实例,需要至少四个客户端虚拟机才能充分发挥性能。这可确保充分利用底层 Filestore 集群中的所有虚拟机。如需了解详情,请参阅单个和多客户端虚拟机性能。
测试性能
如果您使用的是 Linux,则可以使用 fio 工具对基本层级实例的读写吞吐量和 IOPS 进行基准化分析。请注意,不建议对企业和可用区级实例使用此方法进行性能基准测试。
本部分中的示例显示了您可能想要运行的常用基准化分析。您可能需要从多个客户端虚拟机实例运行 fio,以实现最高性能。
以下示例对最大写入吞吐量执行基准化分析:
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