本页面介绍了如何提高 Cloud Storage FUSE 性能。
提高读写性能
为了提高读写性能,我们建议您执行以下操作:
启用缓存:Cloud Storage FUSE 提供四种可选的客户端缓存类型,可在本地存储特定类型的数据和元数据,以帮助提高性能:
Cloud Storage FUSE 缓存适用于所选存储空间支持的任何用户指定的目录。Cloud Storage FUSE 缓存性能与缓存使用的底层存储空间相匹配,且开销极低。
通过启用并行下载来加快读取速度:通过启用并行下载,加快大小超过 1 GB 的大型文件的读取速度。如需了解详情,请参阅使用并行下载提高读取性能。
尽可能运行顺序读写工作负载:与随机读写工作负载相比,Cloud Storage FUSE 更适合顺序读写工作负载。Cloud Storage FUSE 使用启发法来检测文件何时被顺序读取,这使得 Cloud Storage FUSE 能够使用相同的 TCP 连接向 Cloud Storage 发出更少、更大的读取请求。
根据读取类型调整文件大小:为了优化顺序读取性能,我们建议您上传和读取大小介于 5 MB 到 200 MB 之间的文件。为了优化随机读取性能,我们建议您上传和读取大小约为 2 MB 的文件。
装载启用了分层命名空间的存储桶:为了提高读写性能速度并确保原子性,以支持初始每秒查询次数 (QPS) 较高的操作,我们建议装载启用了分层命名空间的存储桶。如需详细了解启用了分层命名空间的存储桶如何提高 Cloud Storage FUSE 性能,请参阅装载启用了分层命名空间的存储桶。
提高首次读取性能
在运行工作负载之前,我们建议您先以递归方式列出已装载存储桶中的文件,以便提前填充统计信息和类型缓存,并以更快的批处理方法提高首次运行时的性能:
ls -R MOUNT_POINT > /dev/null
使用文件缓存提高吞吐量
Cloud Storage FUSE 的延迟时间高于本地文件系统。当您一次读取或写入一个小型文件时,吞吐量会降低,因为这会导致多次单独的 API 调用。一次读取或写入多个大型文件有助于提高吞吐量。使用 Cloud Storage FUSE 文件缓存功能提高较小的随机 I/O 的性能。 如需详细了解文件缓存以及如何启用此功能,请参阅使用 Cloud Storage FUSE 文件缓存。
装载启用了分层命名空间的存储桶
为了确保原子性以支持初始每秒查询次数 (QPS) 较高的操作(例如检查点和目录重命名或更改),我们建议您装载启用了分层命名空间(预览版)的存储桶。分层命名空间可将您的数据整理为分层文件系统结构,从而提高存储桶内的操作效率。列出对象调用 (BucketHandle.Objects
) 已替换为获取文件夹调用,从而缩短了响应时间,并减少了每个操作的列出调用总次数。
实现最大吞吐量
如需实现最大吞吐量,请使用具有足够 CPU 资源的机器来提高吞吐量并使网络接口卡 (NIC) 达到饱和。CPU 资源不足可能会导致 Cloud Storage FUSE 限流。
如果您使用的是 Google Kubernetes Engine,则在工作负载需要更高的吞吐量时,请增加分配给 Cloud Storage FUSE 边车容器的 CPU 数量。您可以增加边车容器使用的资源或分配不限数量的资源。
以每秒查询次数为单位评估 IOPS 需求
对于需要高瞬时每秒输入/输出操作数 (IOPS)(在 Cloud Storage 中也称为“每秒查询次数”)的工作负载,Filestore 是比 Cloud Storage FUSE 更好的选择。Filestore 也是在单个文件系统上获得非常高的 IOPS 和更低延迟的更好选择。
或者,如果底层缓存介质 IOPS 高、延时低,您还可以使用 Cloud Storage FUSE 文件缓存功能在其性能特征基础上进行构建。
执行负载测试
如需了解如何对 Cloud Storage FUSE 执行负载测试,请参阅 GitHub 文档中的性能基准。