全部文档
当前文档

暂无内容

如果没有找到您期望的内容,请尝试其他搜索词

文档中心

ks3fs读写性能优化操作指引

最近更新时间:2026-04-02 21:18:53

概述

ks3fs1.2.0版本开始引入了全新的读写性能优化模式(Performance Mode) ,该模式通过内存缓存替代传统的磁盘缓存,能够显著提升文件的读写吞吐量,适用于AI训练、大数据分析等高性能读写场景需求。

版本升级说明

ks3fs1.2.0 完全向下兼容ks3fs1.1.0版本,原有安装方式配置方式挂载方式挂载选项无需任何修改。ks3fs1.2.0仅在ks3fs1.1.0版本的基础上新增非必选的性能优化参数,不开启性能优化模式时,版本运行行为与ks3fs1.1.0完全一致。

ks3fs1.2.0核心变化如下:

变化项

核心说明

注意事项

兼容性保障

性能模式需手动添加参数开启,默认不启用。

升级后不改变原有业务逻辑,无侵入性影响。

缓存机制升级

性能模式采用内存缓存替代磁盘缓存。

需根据并发文件数预留足够内存,避免内存打满导致掉挂载。

写入规则优化

性能模式仅支持顺序写入。

性能模式不支持随机写入,会返回报错,数据库等需要随机写入类场景不适用。

读取方式变化

开启性能模式后不支持客户端多线程读取同一文件。

客户端多线程读取同一个文件,会出现文件预读缓存频繁清理,导致读取操作无法正常执行。

开启性能模式与未开启性能模式对比:

操作类型

开启性能模式

未开启性能模式

顺序写入

单线程大文件顺序写入场景下,开启性能模式的带宽提升20倍以上。

标准性能。

顺序读取

  • 单线程或多线程(4线程)大文件顺序读取场景下,带宽提升20倍以上。

  • 高并发(128线程)读取小文件的场景下,带宽提升10倍以上。

标准性能。

随机写入

不支持,报错Operation not supported

支持。

随机读取

支持(但不走预读,无性能提升)。

支持。

内存占用

较高(需根据并发数预留内存)。

较低(磁盘缓存)。

关于ks3fs性能测试结果,请参见文档:ks3fs读写性能测试

使用限制与注意事项

ks3fs1.2.0开启性能模式后,存在以下限制:

  • 仅支持顺序写入,不支持随机写入,随机写入会返回Operation not supported报错,因此不推荐数据库类应用、在线文档编辑、日志随机写入等场景开启性能模式。

  • 仅新文件的顺序写入可得到性能提升,已存在的文件写入无性能增益。

  • 仅顺序读取文件可获得性能提升,随机读取文件无性能增益。

  • 使用vim编辑文件时会报错提示,但文件内容可正常修改保存。

  • truncate操作仅支持清空文件,不支持将文件截断至指定大小。

挂载参数说明

性能模式下,您可以通过以下参数调整并发,提升读写性能。

分类

配置项名称

说明

是否必选

性能模式开关

performance

开启读写性能模式,默认不开启。

下载相关参数

prefetch_concurrency

全局预读并发数。

  • 默认值:100

prefetch_concurrency_per_file

单个文件的预读并发数。

  • 默认值:20

prefetch_chunk_size

预读的块大小(MB)。

  • 默认值:10

prefetch_chunks

单文件预读块总数量系数,不设置默认为3,此时单文件预读块总数量为3*20=60。计算公式为:单文件预读块总数量 = prefetch_chunks * prefetch_concurrency_per_file

单个文件总预取内存大小 = prefetch_chunks × prefetch_concurrency_per_file × prefetch_chunk_size = 3 × 20 × 10MB =600MB

上传相关参数

upload_concurrency

全局上传并发数。

  • 默认值:100

parallel_count

单文件上传并发数。

  • 默认值:20

multipart_size

分块上传时单块大小(MB)。

  • 默认值:10

该参数会影响最大支持的文件大小,分块上传时最大仅支持10000块,默认值下,最大支持的文件为95GB。若需上传大于95GB的文件,可适当调大multipart_size参数。

enable_content_crc64

开启CRC64校验,默认不开启。

为了保证数据完整性,建议开启CRC64校验。

推荐配置

针对不同内存规格的机器,建议配合调整并发参数以达到预期效果。不同内存机型并发参数推荐如下所示:

内存大小

推荐并发配置范围(prefetch_concurrency/upload_concurrency)

4GB-8GB

60-100

8GB-16GB

160-200

>16GB

200-300

快速使用

开启性能模式示例

1. 默认情况下,ks3fs1.2.0性能模式不开启 。

2. ks3fs1.2.0除新增以下非必选读写性能优化参数外,与ks3fs1.1.0版本安装方式配置方式挂载方式挂载选项一致,无需任何修改。

如需开启性能模式,在挂载ks3fs1.2.0时增加以下参数:

-o performance

示例:

ks3fs bucket:/path /mnt/ks3 \
  -o url=http://ks3-cn-beijing.ksyuncs.com \
  -o sigv4 \
  -o region=BEIJING \
  -o performance

性能参数配置示例

机器内存为8-16GB时,配置示例如下:

ks3fs bucket:/folder /mnt/ks3 \
-o url=http://ks3-cn-beijing.ksyuncs.com \
-o sigv4 \
-o region=BEIJING \
-o performance \
-o prefetch_concurrency=160 \
-o upload_concurrency=160

内存占用说明

  • 开启性能模式后,ks3fs 使用内存缓存替代磁盘缓存来提升性能,因此会显著增加内存占用。

  • 并发文件数量越多(同时读写的文件数量)、并发数越高、数据块越大内存占用越多,因此若服务器内存偏小,可通过减少并发文件数量、调小并发数、调小数据块大小来降低内存占用,避免因内存不足导致掉挂载,影响业务稳定性。

  • 为了防止因文件并发数过多导致内存耗尽,ks3fs1.2.0 引入了自动降级机制:

    • 正常模式:当同时处理的文件数小于等于全局并发上限时,每个文件都能获得完整的并发加速,性能最强 。

    • 降级模式:当同时处理的文件数大于全局并发上限时,系统会自动进入降级模式,自动降低超额文件的内存分配(每个文件降至1个并发),以确保任务不卡死、不报错,但整体吞吐量会有所下降 。

不同场景内存计算

总内存占用 = 下载内存占用 +上传内存占用

1. 下载内存占用计算公式:下载内存 = min(全局预读并发数prefetch_concurrency, 单文件预读并发数prefetch_concurrency_per_file × 同时处理文件数) × 3 × 预读块大小prefetch_chunk_size + 超额文件数 × 预读块大小prefetch_chunk_size × 3

2. 上传内存占用计算公式:上传内存占用 = min(单文件上传并发数parallel_count × 同时处理文件数, 全局上传并发数upload_concurrency) × 上传分块大小multipart_size + 超额文件数 × 上传分块大小multipart_size

场景

操作流

内存计算方式

下载

KS3 → 本地

仅计算下载内存

上传

本地 → KS3

仅计算上传内存

复制

KS3 → KS3

计算下载内存 + 上传内存

场景一:下载

计算公式:下载内存占用 = min(全局预读并发数prefetch_concurrency, 单文件预读并发数prefetch_concurrency_per_file × 同时处理文件数) × 3 × 预读块大小prefetch_chunk_size + 超额文件数 × 预读块大小prefetch_chunk_size × 3

计算示例:

同时处理文件数

超额文件数

是否降级

下载基础内存

下载额外内存

下载总内存

3个

0

min(100, 60)×3×10 = 1800MB

0MB

1.76GB

5个

0

min(100, 100)×3×10 = 3000MB

0MB

2.93GB

10个

5

min(100, 200)×3×10 = 3000MB

5×10×3 = 150MB

3.08GB

15个

10

min(100, 300)×3×10 = 3000MB

10×10×3 = 300MB

3.22GB

场景二:上传

计算公式:上传内存占用 = min(全局上传并发数upload_concurrency, 单文件上传并发数parallel_count × 同时处理文件数) × 上传分块大小multipart_size + 超额文件数 × 上传分块大小multipart_size

计算示例:

同时处理文件数

超额文件数

是否降级

上传基础内存

上传额外内存

上传总内存

3个

0

min(100, 60)×10 = 600MB

0MB

0.59GB

5个

0

min(100, 100)×10 = 1000MB

0MB

0.98GB

10个

5

min(100, 200)×10 = 1000MB

5×10 = 50MB

1.02GB

15个

10

min(100, 300)×10 = 1000MB

10×10 = 100MB

1.07GB

场景三:复制

总内存占用 = 下载内存占用 +上传内存占用

1. 下载内存占用计算公式:下载内存 = min(全局预读并发数prefetch_concurrency, 单文件预读并发数prefetch_concurrency_per_file × 同时处理文件数) × 3 × 预读块大小prefetch_chunk_size + 超额文件数 × 预读块大小prefetch_chunk_size × 3

2. 上传内存占用计算公式:上传内存占用 = min(单文件上传并发数parallel_count × 同时处理文件数, 全局上传并发数upload_concurrency) × 上传分块大小multipart_size + 超额文件数 × 上传分块大小multipart_size

计算示例:

同时处理文件数

超额文件数

是否降级

下载总内存

上传总内存

下载+上传总内存

3个

0

1.76GB

0.59GB

2.35GB

5个

0

2.93GB

0.98GB

3.91GB

10个

5

3.08GB

1.02GB

4.1GB

15个

10

3.22GB

1.07GB

4.29GB

文档导读
纯净模式常规模式

纯净模式

点击可全屏预览文档内容
文档反馈