本文将为您详细介绍在只读场景中,如何借助参数选项有效提升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_chunks
、direct_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_chunks
、direct_read_chunk_size
参数,提升并行预取的数据量,充分利用网络带宽。
使用建议
如果您的文件是在通过ossfs写入时进行读取,请直接使用默认模式。
如果您的ossfs只会对文件进行读取,或通过ossfs写入和读取的是不同文件。
场景
说明
只有小文件
请使用默认模式。
只有大文件
顺序读取或小幅跳跃(部分safetensors模型文件),请使用纯直读模式。
大幅跳跃随机读取,请使用默认模式。
无法确认读取模式,或使用纯直读模式并调整了direct_read_backward_chunks后,性能仍然差时,请使用默认模式。
小文件和大文件混杂
大文件为顺序读取或小幅跳跃(部分safetensors模型文件),请使用混合直读。
大文件会大幅随机跳跃读取、无法确认读取模式或使用混合直读模式并调整了direct_read_backward_chunks后,性能仍然差时,请使用默认模式。
说明当尝试纯直读模式和混合直读模式发现性能较差时,建议使用默认模式,将文件缓存至本地磁盘。使用默认模式时,磁盘性能容易成为ossfs的瓶颈,建议提高ossfs使用的磁盘配置。例如:使用ESSD AutoPL,并配置适当的预配置性能或使用性能突发。