只读场景性能调优

本文将为您详细介绍在只读场景中,如何借助参数选项有效提升ossfs的读取性能。

重要

以下内容适用于ossfs 1.91.3及以上版本。最新版ossfs的下载安装,请参见安装ossfs

模式策略

ossfs提供了三种适用于不同场景下的模式策略。

默认模式

适合小文件(指page cache能够缓存文件)和大文件随机只读场景。如:AI 训练中大量原始图片素材文件。使用纯直读模式,即使开启了部分乱序仍然读取性能很差时,建议尝试使用默认模式。

ossfs读文件时,内核会缓存一份ossfs挂载点文件的数据在内存中,另外ossfs会将数据写在磁盘缓存文件上,因此内存还有一份缓存文件的数据,即一个文件会在内存中有双倍缓存。

  • 如果您的操作系统page cache最多缓存6 GB的脏数据,那么理论上默认模式适合大小为3 GB以下的文件读。

  • 您可以设置parallel_count参数调节下载数据的并发数量,设置multipart_size参数调节单个任务下载数据量。

纯直读模式

适合顺序只读大文件的场景,支持一定乱序(如跳跃范围为少量chunk)。如:AI推理加载大型safetensors模型文件。

  • 您需要开启-odirect_read

  • 直读模式的数据保留窗口为[-direct_read_backward_chunks * direct_read_chunk_size, +direct_read_prefetch_chunks * direct_read_chunk_size],其中direct_read_chunk_size默认为4 MB,direct_read_prefetch_chunks默认为32,direct_read_backward_chunks默认为1,即默认数据保留窗口为[-4 MB, +128 MB]。如果读取乱序确定在小范围内(例如:部分safetensors模型文件,连续两次读的位置跳跃范围在[-32 MB, +32 MB]之间),则可以设置-odirect_read_backward_chunks=8,保留当前偏移量之前32 MB的数据。

  • 您还可以适当调整direct_read_prefetch_chunksdirect_read_chunk_size参数,提升并行预取的数据量,充分利用网络带宽。

混合直读模式

适合小文件(指page cache能够缓存文件)和大文件混杂只读场景,支持一定乱序(如跳跃范围为数个chunk)。如:AI推理加载大型safetensors模型文件。如果大文件读取中出现大幅随机跳跃,此模式性能会低于默认模式。

  • 您需要开启-odirect_read

  • 您需要设置direct_read_local_file_cache_size_mb参数来控制下载落盘的数据大小。如机器page cache最多为6 GB时,可以设置-odirect_read_local_file_cache_size_mb=3072,当下载数据到达3 GB时,切换到直读模式。

  • 直读模式的数据保留窗口为[-direct_read_backward_chunks * direct_read_chunk_size, +direct_read_prefetch_chunks * direct_read_chunk_size]direct_read_chunk_size默认为4 MB,direct_read_prefetch_chunks默认为32,direct_read_backward_chunks默认为1,则默认数据保留窗口为[-4 MB, +128 MB]。如果读取乱序确定在少量范围内(如:部分safetensors模型文件,连续两次读的位置跳跃范围在[-32 MB, +32 MB]之间),则可以设置-odirect_read_backward_chunks=8,保留当前偏移量之前32 MB的数据。

  • 您还可以适当调整direct_read_prefetch_chunksdirect_read_chunk_size参数,提升并行预取的数据量,充分利用网络带宽。

使用建议

  • 如果您的文件是在通过ossfs写入时进行读取,请直接使用默认模式。

  • 如果您的ossfs只会对文件进行读取,或通过ossfs写入和读取的是不同文件。

    场景

    说明

    只有小文件

    请使用默认模式。

    只有大文件

    • 顺序读取或小幅跳跃(部分safetensors模型文件),请使用纯直读模式。

    • 大幅跳跃随机读取,请使用默认模式。

    • 无法确认读取模式,或使用纯直读模式并调整了direct_read_backward_chunks后,性能仍然差时,请使用默认模式。

    小文件和大文件混杂

    • 大文件为顺序读取或小幅跳跃(部分safetensors模型文件),请使用混合直读。

    • 大文件会大幅随机跳跃读取、无法确认读取模式或使用混合直读模式并调整了direct_read_backward_chunks后,性能仍然差时,请使用默认模式。

    说明

    当尝试纯直读模式和混合直读模式发现性能较差时,建议使用默认模式,将文件缓存至本地磁盘。使用默认模式时,磁盘性能容易成为ossfs的瓶颈,建议提高ossfs使用的磁盘配置。例如:使用ESSD AutoPL,并配置适当的预配置性能或使用性能突发。