使用 Cloud Storage FUSE 文件缓存

Cloud Storage FUSE 文件缓存功能是基于客户端的读取缓存,可让您从所选择的速度更快的缓存存储空间中传送重复文件读取。本页面介绍如何启用和使用 Cloud Storage FUSE 文件缓存。如需文件缓存、统计信息缓存或类型缓存的概览,请参阅缓存概览

准备工作

文件缓存需要使用目录路径来缓存文件。您可以在现有文件系统上创建新目录,也可以在预配的存储空间上创建新的文件系统。如果您要预配要使用的新存储空间,请按照以下说明创建新的文件系统:

  1. 对于 Google Cloud Hyperdisk,请参阅创建新的 Google Cloud Hyperdisk 卷

  2. 对于 Persistent Disk,请参阅创建新的 Persistent Disk 卷

  3. 对于本地 SSD,请参阅将本地 SSD 添加到虚拟机

  4. 对于内存中 RAM 磁盘,请参阅创建内存中 RAM 磁盘

启用和配置缓存行为

  1. 使用 Cloud Storage FUSE 配置文件中的 file-cache 字段启用和配置文件缓存,并在 cache-dir 字段中指定要使用的缓存目录。文件缓存默认处于停用状态。请注意,您可以通过将目录传递给 cache-dir 字段来启用文件缓存。

  2. 可选:使用配置文件中的 metadata-cache 字段配置统计信息缓存和类型缓存。如需详细了解统计信息和类型缓存,请参阅类型缓存概览统计信息缓存概览

  3. 可选:通过将 ttl-secs 选项设置为基于重复读取之间的预期时间的值来增加缓存条目的 TTL,同时均衡一致性需求。我们建议您将 ttl-secs 值设置为工作负载所允许的最大值。您可以在 Cloud Storage FUSE 配置文件中配置 TTL。如需详细了解如何为缓存条目设置 TTL,请参阅存留时间

    例如,以下配置文件启用 TTL 为 3600 秒且缓存目录设置为 /path/to/a/directory/ 的文件缓存、统计信息缓存和类型缓存。请注意,max-size-mb 设置为 -1,这会将文件缓存配置为使用所有可用容量。

    file-cache:
      max-size-mb: -1
      cache-file-for-range-read: false
    
    metadata-cache:
      stat-cache-max-size-mb: 32
      ttl-secs: 3600
      type-cache-max-size-mb: 4
    
    cache-dir: /path/to/a/directory
    
  4. 可选:通过启用 enable-parallel-downloads 属性(使用多个工作器并行下载文件,并使用文件缓存目录作为预提取缓冲区),加快大型文件(包括首次读取)的读取速度。如需详细了解并行下载以及如何配置其支持的属性,请参阅使用并行下载提升读取性能

  5. 在运行工作负载之前,在装载的存储桶上手动运行 ls -R 命令来预先填充元数据,从而以更快的批处理方法在首次读取之前填充类型缓存。 如需详细了解如何提升首次读取性能,请参阅提升首次读取性能

使用并行下载功能并行下载多个文件

您可以通过启用并配置并行下载功能来提升读取性能。该功能会使用多个工作器并行下载文件,并将文件缓存目录用作预提取缓冲区。我们建议在加载大型文件(例如模型部署和检查点恢复)的单线程读取场景中使用并行下载。

在启用并行下载之前,请考虑以下事项:

  • 如果您的应用在 8 个线程上具有高读取并行度,可能会出现轻微的性能下降。

  • 我们不建议为训练工作负载使用并行下载,因为它们的读取并行度较高。

  • 如需使用并行下载功能,您必须先启用并配置文件缓存。

  • 要读取的文件必须符合文件缓存目录的可用容量,该容量可使用 max-size-mb 属性进行控制。

配置并行下载

  1. Cloud Storage FUSE 配置文件中,将 enable-parallel-downloads 属性设置为 true,并视需要配置以下支持设置:

    • parallel-downloads-per-file:可为每个文件生成以将对象从 Cloud Storage 下载到文件缓存的工作器的数量上限。默认值为 16

    • max-parallel-downloads:在任何给定时间可在所有文件下载作业中生成的工作器的数量上限。默认值设为机器上的 CPU 核心数的两倍。如需指定无限制,请输入值 -1

    • download-chunk-size-mb:每个工作器将对象下载到文件缓存时向 Cloud Storage 发出的每个读取请求的大小(以 MiB 为单位)。默认大小为 50 MiB。请注意,只有读取的文件达到指定大小时,系统才会触发并行下载。

后续步骤