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 挂载参数设置
缓存服务器挂载参数:
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 客户端挂载参数:
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 在大多数渲染场景中能够有效满足实际业务对存储的需求。
3000 台 JuiceFS Windows 客户端性能评估的更多相关文章
- JuiceFS 性能评估指南
JuiceFS 是一款面向云原生环境设计的高性能 POSIX 文件系统,任何存入 JuiceFS 的数据都会按照一定规则拆分成数据块存入对象存储(如 Amazon S3),相对应的元数据则持久化在独立 ...
- 【Zabbix】在CentOS 7上搭建Zabbix服务,收集Windows客户端计数器性能数据(含过程中遇到的问题解决方法)
1.环境 1.1.关闭防火墙 命令:systemctl stop firewalld 或者 systemctl stop firewalld.service (备注:相应的,若要开启防火墙,将对应的& ...
- Linux网络性能评估工具iperf 、CHARIOT测试网络吞吐量
网络性能评估主要是监测网络带宽的使用率,将网络带宽利用最大化是保证网络性能的基础,但是由于网络设计不合理.网络存在安全漏洞等原因,都会导致网络带宽利用率不高.要找到网络带宽利用率不高的原因,就需要对网 ...
- [转]网络性能评估工具Iperf详解(可测丢包率)
原文链接:安全运维之:网络性能评估工具Iperf详解:http://os.51cto.com/art/201410/454889.htm 参考博文:http://linoxide.com/monito ...
- Linux服务器性能评估与优化(一)
网络内容总结(感谢原创) 1.前言简介 一.影响Linux服务器性能的因素 1. 操作系统级 性能调优是找出系统瓶颈并消除这些瓶颈的过程. 很多系统管理员认为性能调优仅仅是调整一下 ...
- 解决服务器Active Directory环境里Windows登录性能问题办法
Windows登录性能因素 当查找登录性能问题的原因时,考虑大量因素很重要.一些因素包括: 域控制器太接近用户 网络连接与可用的带宽 数据中心上的硬件资源(x64 vs.x86.内存等) 应用于用户和 ...
- Windows下性能最好的I/O模型——完成端口
I/O模型--完成端口 设计目的: 常见的网络通信分为两种:同步和异步. 在同步通信中,每一次接受数据都会导致主线程的挂起,从而阻塞住了其他操作.为了解决这一问题,我们通常会采取同步通信+多线程的策略 ...
- 转贴---Linux服务器性能评估
http://fuliang.iteye.com/blog/1024360 http://unixhelp.ed.ac.uk/CGI/man-cgi?vmstat ------------------ ...
- 如何提高windows的性能
默认windows启用了很多的效果,我们可能平时没有注意到,比如什么淡入淡出效果之类的,其实在我看来,这些效果不仅难看,而且影响了windows的性能,下面我就来说说怎么通过关闭这些效果来提高wind ...
- Putty+Xming实现在Windows客户端显示Linux服务器端的图形化程序
走了不少弯路啊~~~言归正传,最近研发和我说要在一台EC2的机器上运行一个带GUI的程序,当时我就纳闷了:EC2的机器应该没有桌面套件的吧,那该怎么运行GUI的程序呢?百思不得其解时收到一封邮件,大致 ...
随机推荐
- 为何PostgreSQL没有聚集索引?解读两大数据库的设计差异
为何PostgreSQL没有聚集索引?解读两大数据库的设计差异 前言 高效的数据检索是数据库管理的基石, PostgreSQL和SQL Server都能提供强大的数据访问方法以支持各种工作负载方面表现 ...
- 介绍注解 @FeignClient 日志打印功能
OpenFegin的日志打印功能是什么?Feign提供了日志打印功能,可以通过配置来调整日志级别,从而了解Feign执行Http请求的细节.通俗地说,就是对Feign接口的调用情况进行监控和输出. ...
- 图扑软件 | 带你体验 Low Poly 卡通三维世界
在三维场景搭建中,图扑软件提供了多样化的设计风格,以满足不同项目的视觉需求.无论是写实风格的细腻渲染.科幻未来的赛博质感,还是简约现代的几何美学,都能通过灵活的工具体系实现.而今天,我们将重点介绍一种 ...
- (原创)[C#]一步步解决DotNetZip因超长路径(MAX_PATH)报错的问题。
一.前言 超长路径(MAX_PATH)的问题,在很多地方都可能遇到,常见的解决办法无非三种:添加前缀\\?\.app.config添加配置.修改注册表等. 而对于其它第三方的DLL,我们如何去从外部解 ...
- git-intelligence-message 1.3.2 发布了,智能生成、提交git的工具
git-intelligence-message 1.3.2 发布了,这是一次小版本更新.主要内容是可以通过命令查看AI配置信息了. Git Intelligence Message (GIM) 是一 ...
- Redis五-哨兵
目录 哨兵 导读 基本概念 主从复制问题 Redis Sentinel的高可用性 安装和部署 部署数据节点 部署Sentinel节点 Seninel配置优化 sentinel API 实现原理 三个定 ...
- hot100之双指针
移动0(283) 先看代码 class Solution { public void moveZeroes(int[] nums) { int idx0 = 0; for (int idx = 0; ...
- thinkphp ,php5.3以上版本,开发调式工具 ,基于nodejs 的socketlog
源码官方网站 https://github.com/luofei614/SocketLog
- C++服务开发环境-万事开头难
C++服务开发环境-万事开头难 对于开发人员来说,仅仅学习编程语言的语法是不够的,还需要学习这门编程语言对应的构建流程,不然写出来的代码怎么变成程序运行起来呢? 出生较晚的编程语言,如golang.p ...
- 11-2 MySQL 数据库对象编写建议(参考)
11-2 MySQL 数据库对象编写建议(参考) @ 目录 11-2 MySQL 数据库对象编写建议(参考) 1. 数据库对象编写建议/推荐 1.1 关于库 1.2 关于表.列 1.3 索引 1.4 ...