本页面介绍 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 |
ZONAL |
10 TiB | 92000/26000 | 2600/880 |
ZONAL |
100 TiB | 920,000/260,000 | 26000/8800 |
REGIONAL |
1 TiB | 12000/4000 | 120/100 |
REGIONAL |
9.75 TiB | 117000/39000 | 1,170/975 |
REGIONAL |
10 TiB | 92000/26000 | 2600/880 |
REGIONAL |
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 的可伸缩服务层级针对多个客户端虚拟机(而非单个客户端虚拟机)进行了优化。
对于可用区级、区域级和企业实例,至少需要四个客户端虚拟机才能充分发挥性能。这样可以确保底层 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 读取操作的性能。
对于可用区级、区域级和企业实例,至少需要四个客户端虚拟机才能充分发挥性能。这样可以确保底层 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