Cloud Storage FUSE 性能和最佳实践

本页面介绍 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 文档中的性能基准