本页面介绍 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
,并将 rsize
和 wsize
选项设置为 1 MB
,以便在 Linux 客户端虚拟机实例上实现最佳性能。要详细了解 NFS 装载选项,请参阅 nfs。
点击以展开 - 默认 NFS mount
选项
默认选项 | 说明 |
---|---|
hard |
NFS 客户端无限期地重试 NFS 请求。 |
timeo=600 |
NFS 客户端会等待 600 分秒(60 秒)后再重试 NFS 请求。 |
retrans=3 |
NFS 客户端会尝试 NFS 请求三次,再执行进一步的恢复操作。 |
rsize=1048576 |
对于每个 READ 请求,NFS 客户端最多可以从 NFS 服务器接收 1048576 个字节 (1 MiB)。 |
wsize=1048576 |
对于每个 WRITE 请求,NFS 客户端最多可以从 NFS 服务器接收 1048576 个字节 (1 MiB)。 |
resvport |
与 NFS 服务器就此装载装点进行通信时,NFS 客户端会使用特权源端口。 |
async |
NFS 客户端延迟向 NFS 服务器发送应用程序写入,直到满足某些条件。 注意:使用 sync 选项会大大降低性能。 |
测试性能
如果您使用的是 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