本页面介绍 Cloud Storage FUSE 在延迟时间、带宽、缓存和重试方面的性能,以及使用 Cloud Storage FUSE 时的最佳实践。
读写
与随机读写工作负载相比,Cloud Storage FUSE 更适合顺序读写工作负载。Cloud Storage FUSE 使用启发式方法来检测文件何时被顺序读取,这使得 Cloud Storage FUSE 能够使用相同的 TCP 连接向 Cloud Storage 发出更少、更大的读取请求。
为了优化顺序读取性能,建议上传和读取大小介于 5 MB 到 200 MB 之间的文件。为了优化随机读取性能,建议您上传和读取大小约为 2 MB 的文件。
IOPS(每秒查询次数)
Filestore 对于需要高瞬时每秒输入/输出操作次数(IOPS,在 Cloud Storage 中也称为“每秒查询次数”)的工作负载,Filestore 是比 Cloud Storage FUSE 更好的选择。Filestore 也是在单个文件系统上获得非常高的 IOPS 和更低延迟的更好选择。
延迟和吞吐量
Cloud Storage FUSE 的延时高于本地文件系统。当您一次读取或写入一个小文件时,吞吐量会降低,因为这会导致多个单独的 API 调用。一次读取或写入多个大文件有助于提高吞吐量。
Cloud Storage FUSE 的文件系统延迟时间会影响 rsync
,后者一次只能读写一个文件。如需并行向存储桶或从存储桶转移多个文件,您应该尝试运行 gsutil -m rsync
来使用 gsutil。如需了解详情,请参阅 gsutil rsync
文档。
速率限制
如需限制 Cloud Storage FUSE 发送到 Cloud Storage 的流量速率,您可以在 gcsfuse mount
命令中使用以下选项:
--limit-ops-per-sec
选项控制 Cloud Storage FUSE 向 Cloud Storage 发送请求的速率。--limit-bytes-per-sec
选项控制 Cloud Storage FUSE 从 Cloud Storage 下载数据的带宽。
如需详细了解这些选项,请参阅 gcsfuse mount
文档。
所有速率限制都是近似值,并在 8 小时内完成。默认情况下,不会应用速率限制。
上传过程控制
默认情况下,从 Cloud Storage FUSE 到 Cloud Storage 的失败请求会使用指数退避算法重试,最高可达指定的退避持续时间,默认情况下值为 1
(一分钟)。退避时长超过指定的限制后,重试会停止。您可以在 gcsfuse mount
调用中使用 --max-retry-sleep
选项来指定退避时长。值为 0
表示停用重试功能。
如需详细了解 --max-retry-sleep
选项,请参阅 gcsfuse mount
文档。
缓存
默认情况下,Cloud Storage FUSE 使用统计信息缓存和类型缓存。
您可以在 gcsfuse mount
调用中使用 --stat-cache-capacity
、--stat-cache-ttl
和 --type-cache-ttl
选项来控制 Cloud Storage FUSE 的缓存行为:
--stat-cache-capacity
选项控制统计信息缓存的大小。--stat-cache-ttl
选项指定 Cloud Storage FUSE 缓存统计信息条目的时长。--type-cache-ttl
选项用于指定 Cloud Storage FUSE 将 Cloud Storage 中对象映射到其相应类型(例如文件或目录)的缓存时长。
如需详细了解统计信息缓存和类型缓存选项,请参阅 gcsfuse mount
文档。
注意事项
当您列出已装载存储桶中的所有对象时(例如,通过运行 ls
),Cloud Storage FUSE 会在 Cloud Storage 上调用对象:列出 API。API 会对结果进行分页,这意味着 Cloud Storage FUSE 可能需要发出多次调用,具体取决于存储桶中的对象数量。请注意,这可能会使列表操作费用高昂,速度缓慢。
基准
如需了解如何对 Cloud Storage FUSE 执行负载测试,请参阅 GitHub 文档中的性能基准。