3000 台 JuiceFS Windows 客户端性能评估

近期,我们在云端渲染场景中,对 100 至 3000 节点的 JuiceFS Windows 客户端进行了性能测试。测试内容为渲染前置任务,即在渲染任务之前执行所有存储相关操作。

与实际使用场景相比,本次测试采用了更为苛刻的条件,使用了大量小文件的数据进行测试。任务要求 1000 台机器平均时间在 30分钟内完成。客户原来使用SMB 服务,随着渲染机器数量增加,网络带宽、负载均衡等因素会降低性能表现,在 2000 台以上就基本无法使用。而 JuiceFS 测试结果在 3000 台并发渲染任务中依旧性能平稳,平均执行时间为 22 分 22 秒。

目前,JuiceFS Windows 客户端 Beta 版本已集成于社区版 v1.3 和 企业版 v5.2 中,具体优化历程可参考:首个 Windows Beta 版的优化之路。希望有需求的用户积极尝试并进行测试,并欢迎大家在使用过程中反馈问题和改进建议。

01 Windows 渲染场景用例与资源配置

渲染场景测试用例文件大小分布

此次测试样本共包含 65,113 个文件,其中大小在 128KB 以下的文件占比为 95.77%,相比日常的渲染场景,本次测试特别增加了小文件的占比,以更严苛的条件进行测试。

  • ≤1K: 11,053 个文件
  • 1K~4K: 1,804 个文件
  • 4K~128K: 49,504 个文件
  • 128K~1M: 1,675 个文件
  • 1>1M: 1,077 个文件

各组件硬件配置

部署方案

在此次测试中,我们使用了 JuiceFS 企业版,企业版采用了自研的高性能元数据引擎,并提供了分布式缓存支持,关于分布式缓存可参考文章:从资源闲置到弹性高吞吐,JuiceFS 如何构建 70GB/s 吞吐的缓存池

为了获得最佳性能,我们将 35GB 的样本完全预热到分布式缓存中。部署架构图如下:

JuiceFS 挂载参数设置

缓存服务器挂载参数:

bash 复制代码
juicefs mount jfs /jfs-mem \
    --buffer-size=4096 \
    --cache-dir=/dev/shm \
    --cache-group=cache-mem \
    --cache-size=122400 \
    --free-space-ratio=0.02 

Windows 客户端挂载参数:

bash 复制代码
juicefs.exe mount jfs J: --buffer-size=4096 --cache-group=cache-mem --no-sharing --console-url http://console:8080 --enable-kernel-cache

注意:

  • --console-url:指定控制台的URL,第一次挂载或者新建文件系统后须输入。
  • --enable-kernel-cache:启用 WinFSP 内核缓存:默认是不启用,大量随机 512 字节读取时性能比较差,

建议打开,请求就会聚合成 4K。

02 测试结果

数据存储在 JuiceFS 中,100 至 3000 台远端 windows 客户端读取这些数据时,渲染前置存储读取任务的耗时如下表所示。

从上面的数据中,我们可以看到:

  • JuiceFS 能够在不同规模的渲染前置存储任务中保持高效的性能,随着设备数量的增加,系统的吞吐量和 IOPS 性能提升。
  • 当设备规模达到 3000 台时,JuiceFS 能够稳定承受每秒 127 万次的元数据请求,分布式缓存吞吐14.7GB/s,Windows 客户端聚合吞吐达到 23.8GB/s,渲染任务完成耗时平均 22 分钟 22 秒。

03 总结

该测试场景基于实际渲染环境设计,但具有更高的负载与性能要求,旨在验证 JuiceFS 在渲染任务中的数据处理能力。测试内容涵盖 JuiceFS 的整体产品能力,包括 Windows 客户端、元数据服务器软件和分布式缓存集群软件。测试结果表明,JuiceFS 能够支持至少 3000 台 Windows 设备同时进行渲染前置存储相关读取的任务,平均完成时间为 22 分钟 22 秒,最大任务完成时间在 34 分钟以内,显示了 JuiceFS 在大多数渲染场景中能够有效满足实际业务对存储的需求。

相关推荐
Undoom4 分钟前
解锁超级生产力:手把手教你构建与GitHub深度集成的自动化工作流,让AI成为你的编程副驾驶
后端
退役小学生呀7 分钟前
二十一、DevOps:从零建设基于K8s的DevOps平台(二)
运维·docker·云原生·容器·kubernetes·devops
我是华为OD~HR~栗栗呀22 分钟前
前端面经-高级开发(华为od)
java·前端·后端·python·华为od·华为·面试
知五年三37 分钟前
【云原生】openebs-device+cstor存储方案部署
云原生·openebs·cstor
菜鸟小九1 小时前
SSM(MybatisPlus)
java·开发语言·spring boot·后端
不爱编程的小九九1 小时前
小九源码-springboot051-智能推荐旅游平台
java·spring boot·后端
数据知道1 小时前
Go基础:常用数学函数处理(主要是math包rand包的处理)
开发语言·后端·golang·go语言
期待のcode1 小时前
MyBatis框架—延迟加载与多级缓存
java·数据库·后端·缓存·mybatis
数据知道1 小时前
Go基础:文件与文件夹操作详解
开发语言·后端·golang·go语言
华仔啊2 小时前
Spring 配置混乱?搞懂这两个核心组件,问题真能少一半
java·后端·spring