本文介绍如何调整参数来提升预读性能、写性能。
FSX 支持预读、读缓存和写缓存模式,您可以根据实际使用场景,选择合适的模式,具体说明如下:
使用场景 | 推荐模式 | 性能 |
---|---|---|
顺序读或小范围随机读的场景 | 默认(预读) | 预读性能取决于预读的数据大小和预读线程数,详细介绍,请参见预读性能。 |
需要小数据量重复读取文件的场景 | 读缓存 | 读缓存性能会受磁盘读性能影响,详细介绍,请参见读缓存性能。 |
对写入性能敏感的场景 | 写缓存 | 您可以通过增加上传多段数据的线程来提高写带宽,详细介绍,请参见写性能 |
FSX 客户端对于顺序读或者小范围随机读场景会默认启用预读功能,也就是通过并行多个 Range 下载请求提前将文件的后续内容加载到内存中。您可以通过以下参数来控制单文件预读的带宽和内存占用,具体说明如下:
prefetch_buffer_size
: 设置每次预读请求向 TOS 读取的数据块大小,默认值为 4MB。较大的值可以减少 FSX 客户端向 TOS 的请求次数,但也会影响预读请求的吞吐带宽。prefetch_forward_buffer_count
:设置单文件预读的数据块数量上限,默认为 32。prefetch_backward_buffer_count
:设置保留当前读请求偏移之前预读数据块数量,默认为 1。与 prefetch_buffer_size
配合使用。num_prefetch_threads
参数调整,默认为 32。最大的读带宽受预读线程和单文件带宽限流值影响,您可以通过增加预读线程来提高读带宽。说明
如果您希望提升预读效率,您可以根据您的资源情况,设置较高的 num_prefetch_threads
和prefetch_forward_buffer_count
参数。
对于小数据量频繁读取某一批文件场景,FSX 客户端提供了读数据缓存功能,重复读取数据时会从读缓存获取内容,不需要访问 TOS,从而减少访问时延,提升读取性能。读缓存的性能受缓存目录所在磁盘读性能影响,建议选择性能较好的磁盘或者将 tmpfs 内存文件系统作为读缓存目录。
说明
一次性读取或非重复读取数据的场景下,不建议开启读缓存功能。
您可以通过以下参数来启动读缓存功能:
read_cache_dir
:配置读缓存目录,缓存路径可以指定为磁盘上某个目录或者 tmpfs 内存文件系统。max_read_cache_size
:配置读缓存空间大小,单位为 MB,默认为 0,建议按照需要缓存的数据量来预估读缓存空间大小。FSX 客户端默认会先写入数据到本地临时文件目录,临时文件目录可以在挂载时指定 temp_dir
参数进行配置,默认在 /tmp/
下创建临时目录作为临时文件目录。如果您对性能敏感,可以在挂载时指定 tmpfs
作为写临时文件目录。您可以通过以下参数来调整写性能:
temp_dir
:设置写缓存目录,可以通过指定 tmpfs
作为写缓存目录。num_bg_threads
:设置上传多段数据的线程数,默认为 32。最大的上传带宽受 num_bg_threads
和单文件带宽限流值影响,您可以通过增加上传多段数据的线程来提高写带宽。说明
如果您希望提升写效率,您可以根据您的资源情况,设置较高的 num_bg_threads
参数。