最近更新时间:2026-07-17 15:05:41
ks3fs从V1.2.0版本开始推出读写性能模式,以内存缓存替代磁盘缓存,大幅提升读写吞吐量,适配 AI 训练、大数据分析场景。从V1.3.0 版本开始新增性能模式支持随机写、设置内存使用上限等功能。
特性 | V1.1.0 | V1.2.0 | V1.3.0+ |
|---|---|---|---|
性能模式 | 不支持 | 支持( ks3fs从V1.2.0版本开始支持开启性能模式。 | 支持( |
顺序写入 | 标准性能 | 开启性能模式后,单线程大文件顺序写带宽提升20倍以上 | 开启性能模式后,单线程大文件顺序写带宽提升20倍以上 |
顺序读取 | 标准性能 | 开启性能模式后,大文件顺序读带宽提升20倍以上,高并发小文件带宽提升10倍以上 | 开启性能模式后,大文件顺序读带宽提升20倍以上,高并发小文件带宽提升10倍以上 |
随机写入 | 支持,标准性能 |
| 支持,标准性能 |
随机读取 | 支持,标准性能 | 支持,标准性能 | 支持,标准性能 |
多线程读同一文件 | 支持 |
| 支持 |
内存控制方式 | 使用磁盘缓存,内存占用低 |
|
|
兼容性 | 不涉及 | 完全向下兼容V1.1.0版本,默认不启用性能模式 | 完全向下兼容V1.1.0和V1.2.0版本,默认不启用性能模式 |
适用场景 | 通用文件访问场景 | 以顺序读写为主的 AI 训练、大数据分析场景 | 全场景覆盖,推荐优先使用,适配通用业务、AI 训练、大数据场景 |
操作使用限制 | 无 |
| 无 |
操作类型 | 开启性能模式(V1.2.0+) | 未开启性能模式 |
|---|---|---|
顺序写入 | 单线程大文件顺序写入场景下,开启性能模式的带宽提升20倍以上 | 标准性能 |
顺序读取 |
| 标准性能 |
随机写入 |
| 支持 |
随机读取 | 支持(但不走预读,无性能提升) | 支持 |
内存占用 | 较高(需根据并发数预留内存) | 较低(磁盘缓存) |
1. 关于ks3fs性能测试结果,请参见文档:ks3fs读写性能测试。
2. ks3fs从V1.2.0版本开始支持开启性能模式,默认不开启。
性能模式开启后,您可以通过以下参数调整并发,提升读写性能。
分类 | 配置项名称 | 说明 | 是否必选 |
|---|---|---|---|
性能模式开关 | performance | 开启读写性能模式,默认不开启。 | 否 |
内存管理配置 | memory_limit | 总使用内存限制(MB),设置后会根据内存限制自适应调整upload和prefetch的并发程度。 1. 该参数自 V1.3.0 版本起支持。 2. 若不配置此选项,默认取值为系统物理内存的一半。 | 否 |
下载相关参数 | prefetch_concurrency | 全局预读并发数。
| 否 |
prefetch_concurrency_per_file | 单个文件的预读并发数。
| 否 | |
prefetch_chunk_size | 预读的块大小(MB)。
| 否 | |
prefetch_chunks | 单文件预读块总数量系数,不设置默认为3,此时单文件预读块总数量为3*20=60。计算公式为: 单个文件总预取内存大小 = | 否 | |
上传相关参数 | upload_concurrency | 全局上传并发数。
| 否 |
parallel_count | 单文件上传并发数。
| 否 | |
multipart_size | 分块上传时单块大小(MB)。
该参数会影响最大支持的文件大小,分块上传时最大仅支持10000块,默认值下,最大支持的文件为95GB。若需上传大于95GB的文件,可适当调大 | 否 | |
enable_content_crc64 | 开启CRC64校验,默认不开启。 为了保证数据完整性,在使用V2签名时,强烈建议开启CRC64校验。 | 否 |
ks3fs从V1.3.0版本开始新增memory_limit参数,用于指定性能模式内存上限。依托MemoryLimiter管控读写缓冲区内存,避免内存溢出导致掉挂载。
核心机制:
硬性限制:内存达到上限后,新的内存请求排队等待内存释放。
公平排队:各文件句柄独立FIFO队列,内存释放优先响应队首请求。
热更新:支持配置文件热更新,修改参数无需重新挂载。
参数推导逻辑:
设置了 memory_limit:系统根据内存上限自动设置并发参数。
未设置 memory_limit:由并发参数计算内存上限,最大不超过系统物理内存一半。
如果仅设置并发参数不设置内存上限,ks3fs将根据并发参数占用内存计算公式预估内存占用大小,确保不超过系统可用内存。
1. 总内存占用 = 下载内存占用 + 上传内存占用
2. 下载内存公式:min(prefetch_concurrency, prefetch_concurrency_per_file × 文件数) × prefetch_chunks × prefetch_chunk_size + 超额文件数 × prefetch_chunk_size × prefetch_chunks
3. 上传内存公式:min(upload_concurrency, parallel_count × 文件数) × multipart_size + 超额文件数 × multipart_size
场景 | 操作流 | 内存计算方式 |
|---|---|---|
下载 | KS3 → 本地 | 仅计算下载内存 |
上传 | 本地 → KS3 | 仅计算上传内存 |
复制 | KS3 → KS3 | 计算下载内存 + 上传内存 |
计算示例(基于默认参数):
同时处理文件数 | 超额文件数 | 是否降级 | 下载基础内存 | 下载额外内存 | 下载总内存 |
|---|---|---|---|---|---|
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 |
计算示例:
同时处理文件数 | 超额文件数 | 是否降级 | 上传基础内存 | 上传额外内存 | 上传总内存 |
|---|---|---|---|---|---|
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 |
总内存 = 下载内存 + 上传内存
同时处理文件数 | 超额文件数 | 是否降级 | 下载总内存 | 上传总内存 | 下载+上传总内存 |
|---|---|---|---|---|---|
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 |
如需开启,挂载时增加 -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使用memory_limit直接控制内存上限,系统自动计算并发参数:
ks3fs bucket:/path /mnt/ks3 \
-o url=http://ks3-cn-beijing.ksyuncs.com \
-o sigv4 \
-o region=BEIJING \
-o performance \
-o memory_limit=8192ks3fs bucket:/folder /mnt/ks3 \
-o url=http://ks3-cn-beijing.ksyuncs.com \
-o sigv4 \
-o region=BEIJING \
-o performance \
-o memory_limit=8192 \
-o prefetch_concurrency=160
纯净模式
