性能

本页面介绍 Filestore 的预期平均性能和推荐的性能设置。此外还介绍了如何测试 Filestore 实例的性能。

预期性能

每个 Filestore 服务层级都提供不同级别的性能。基本层级提供超过 10 TB 实例容量的稳定性能。对于大规模层级实例,性能会随着容量的增加或减少而线性增加或减少。

因各种因素(例如在客户端或服务器上使用缓存),对于客户端虚拟机实例,以及要测试的工作负载使用的 Compute Engine 机器类型,任何给定实例的性能都可能与报告的数字不同。

下表显示了基于 Filestore 实例的服务层级和配置容量的预期性能:

性能 容量(TB 读/写 IOPS 读/写 Tput(MB/秒)
BASIC_HDD 1-10 600/1,000 100/100
BASIC_HDD 10-63.9 1,000/5,000 180/120
BASIC_SSD 2.5-63.9 60,000/25,000 1,200/350
HIGH_SCALE_SSD 60 90,000/30,000 3,000/660
HIGH_SCALE_SSD 320 480,000/160,000 16,000/3,520

大规模 SSD 层级的性能调节和每个客户端的性能

大规模层级实例的性能可在 10 TB 步骤中使用分配的容量线性扩缩。下表显示了每使用 10 TB 容量可获得的性能。

指定 最大持续 IOPS 1 最大持续吞吐量 2(MB/秒)
10TB 读取 15000 500
10TB 写入 5000 110

这些性能数字也对应于每个实例的客户端的性能上限。例如,即使容量为 60 TB 的大规模层级实例的总持续读取/写入最大吞吐量为 3000/660 MB/秒,每个客户端可以实现的最大吞吐量为 500/110 MB/秒。基本层级实例没有每个客户端的性能上限。

推荐的客户端机器类型

我们建议将 Compute Engine 机器类型n1-standard-8 或更高版本用于客户端虚拟机实例。这样客户端便可以为容易缓存的工作负载实现大约 16 Gbps 的读取带宽。

Linux 客户端装载选项

建议使用默认的 NFS 装载选项,尤其是使用 hard 装载,async,并将 rsizewsize 选项设置为 1 MB,以便在 Linux 客户端虚拟机实例上实现最佳性能。要详细了解 NFS 装载选项,请参阅 nfs

测试性能

如果您使用的是 Linux,则可以使用 fio 工具来对基本层级实例针对读写吞吐量和 IOPS 进行基准化分析。本部分中的示例显示了您可能想要运行的常用基准化分析。为实现最高性能,您可能需要从多个客户端虚拟机实例运行 fio。这种基准化分析性能方法无法为大规模层级实例提供准确的结果。

以下示例对最大写入吞吐量执行基准化分析:

fio --ioengine=sync --direct=0 \
--fsync_on_close=1 --randrepeat=0 --nrfiles=1  --name=seqwrite --rw=write \
--bs=1m --size=20G --end_fsync=1 --fallocate=none  --overwrite=0 --numjobs=1 \
--directory=/mnt/gcfs --loops=10

以下示例对最大写入 IOPS 执行基准化分析:

fio --ioengine=sync --direct=0 \
--fsync_on_close=1 --randrepeat=0 --nrfiles=1  --name=randwrite --rw=randwrite \
--bs=4K --size=1G --end_fsync=1 --fallocate=none  --overwrite=0 --numjobs=80 \
--sync=1 --directory=/mnt/standard --loops=10

以下示例对最大读取吞吐量执行基准化分析:

fio --ioengine=sync --direct=0 \
--fsync_on_close=1 --randrepeat=0 --nrfiles=1  --name=seqread --rw=read \
--bs=1m --size=240G --end_fsync=1 --fallocate=none  --overwrite=0 --numjobs=1 \
--directory=/mnt/ssd --invalidate=1 --loops=10

以下示例对最大读取 IOPS 执行基准化分析:

fio --ioengine=sync --direct=0 \
--fsync_on_close=1 --randrepeat=0 --nrfiles=1  --name=randread --rw=randread \
--bs=4K --size=1G --end_fsync=1 --fallocate=none  --overwrite=0 --numjobs=20 \
--sync=1 --invalidate=1 --directory=/mnt/standard  --loops=10

  1. 数值基于 4K 读取/写入 IO 衡量。 

  2. 数值是根据 1M 次读取/写入 IO 来衡量的。