小伙伴们大家好,JuiceFS v0.17 在国庆小长假来临之际如期发布了!这是我们在 2021 年秋季推出的第二个版本,让我们直奔主题,看看都有哪些新变化吧。

本次更新累计 80+ 提交,共有 9 位来自 JuiceFS 社区的小伙伴在 GitHub 上贡献代码。在这里,我们向每一位贡献者表示最诚挚的感谢,同时欢迎屏幕前的你也加入到 JuiceFS 开源社区,贡献代码、文档或讨论想法。

通过 LTP 1270 项测试,Linux 系统下兼容性更完美

JuiceFS 的最新版本针对 Linux 系统环境做了进一步的优化,改进了 rename 和 setxattr 读其他参数的支持,顺利通过了 LTP 的 1270 项测试。

LTP(Linux Test Project)是一个由 IBM,Cisco 等多家公司联合开发维护的项目,旨在为开源社区提供一个验证 Linux 可靠性和稳定性的测试集。LTP 中包含了各种工具来检验 Linux 内核和相关特性。

测试结果:

Testcase                                           Result     Exit Value
-------- ------ ----------
fcntl17 FAIL 7
fcntl17_64 FAIL 7
getxattr05 CONF 32
ioctl_loop05 FAIL 4
ioctl_ns07 FAIL 1
lseek11 CONF 32
open14 CONF 32
openat03 CONF 32
setxattr03 FAIL 6 -----------------------------------------------
Total Tests: 1270
Total Skipped Tests: 4
Total Failures: 5
Kernel Version: 5.4.0-1029-aws
Machine Architecture: x86_64

其中,跳过和失败的项目主要是由于几个尚未支持的功能,详情见此文档

优化存储临时数据的性能

针对 Spark 的 shuffle 文件等临时数据存储需求,社区贡献者祝威廉(@allwefantasy)给 JuiceFS 贡献了数据延迟上传功能,它可以让 JuiceFS 优先将数据写入到本地缓存盘中,如果这些数据在短时间内又被删除,则无需写入对象存储,可以提供接近本地盘的读写性能。而当写入数据很多时,又会自动写到对象存储来释放本地盘空间,再也不用担心 shuffle 数据把磁盘写满了。

这个新功能让 JuiceFS 可以作为一个弹性本地盘使用,为临时数据提供无限存储空间和低延时访问。

为了进一步提升性能,还新增了一个运行在客户端内存中的元数据引擎(MemKV)。与其他元数据引擎一样,MemKV 的作用也是用来保存数据相关的元信息,但它不持久化,客户端 umount 以后,MemKV 的元数据就释放了。MemKV 完全在内存中运行,有着绝对的性能优势,非常适合用作临时文件的存储场景。

TiKV 元数据引擎在 Hadoop 场景中性能提升 5 倍

JuiceFS Java 客户端需要频繁做路径解析,Redis 引擎通过 Lua 实现了服务器端的多级路径解析,而 SQL 和 TiKV 引擎仍然需要多次元数据请求才能解析一个路径,尤其是当路径比较深时对影响有比较大的影响。

为了解决这个问题,本次更新在 JuiceFS Hadoop SDK 客户端中引入了类似于 Linux 内核的元数据缓存机制,可以分别通过参数控制目录、文件和属性的过期时间。可以通过如下的方式启用:

<property>
<name>juicefs.attr-cache</name>
<value>3</value>
</property>
<property>
<name>juicefs.entry-cache</name>
<value>3</value>
</property>
<property>
<name>juicefs.dir-entry-cache</name>
<value>3</value>
</property>

以下是对 9 层目录的元数据性能测试,可以看到启用元数据缓存够大幅提升元数据操作的性能。(数值代表操作的时延,越小越好。)

 
 

但需要注意的是,开启元数据缓存后会影响多客户端之间的一致性(有限时间窗口的最终一致性),比如一个客户端删除了某个文件后,其他节点可能因为缓存未到期,仍然认为文件存在。因此,一般建议在查询场景下使用该功能。如果是混合读写的场景,建议适当开启目录和属性的缓存,而关闭文件项的缓存。

1 分钟上手性能测试,结果一目了然

我们为 JuiceFS 内置的性能测试工具 bench 的结果做了进一步的优化,在简洁直观的基础上,进一步的让关键数据高亮显示,如果某项性能数据偏离正常区间,会显示为黄色甚至红色,建议特别关注下。

有关 JuiceFS 新版的更多内容,欢迎访问 GitHub 项目主页了解详情:

推荐阅读:
如何借助 JuiceFS 为 AI 模型训练提速 7 倍

JuiceFS v0.17 发布,通过 1270 项 LTP 测试!的更多相关文章

  1. mysql 5.7.17发布

    Mysql 5.7.17发布了,主要修复: Changes in MySQL 5.7.17 (2016-12-12, General Availability) Compilation Notes M ...

  2. hi-nginx-1.4.2发布,多项重要更新

    支持多种编程语言混合开发web应用的通用服务器hi-nginx-1.4.2已经发布了. 此次发布包含多项重要更新: 支持python2和3,通过编译选项--with-http-hi-python-ve ...

  3. PHP 5.4.17 发布!

    PHP 5.4.17发布.2013-07-04 经过1个RC 上个版本是2013-06-07的5.4.16.修正了大约20个Bug以及几个安全漏洞.尽管5.5.0正式版已经发布.但5.4还未停止更新. ...

  4. BlueMind 3.0.17 发布,消息和协作平台

    BlueMind 3.0.17 发布,此版本对即时消息 Web 应用连接处理做了较大改进(更可靠),还修复了通讯录浏览器. BlueMind 3.0.17 现已提供下载. 详细改进记录如下: Addr ...

  5. JavaScript 工具库:Cloudgamer JavaScript Library v0.1 发布

    JavaScript 工具库:Cloudgamer JavaScript Library v0.1 发布   研究了一年多的js,也差不多写一个自己的js库了.我写这个不算框架,只是一个小型的js工具 ...

  6. AspNet Core 发布到Linux系统和发布IIS 注意项

    AspNet Core 发布到Linux系统和发布IIS 注意项 1.发布时需要注意的 2.Windows Server 2012 api-ms-win-crt-runtime-l1-1-0.dll ...

  7. React Native v0.4 发布,用 React 编写移动应用

    React Native v0.4 发布,自从 React Native 开源以来,包括超过 12.5k stars,1000 commits,500 issues,380 pull requests ...

  8. React 17 发布候选版本, 没有添加新功能

    React 17 发布候选版本, 没有添加新功能 React v17.0 Release Candidate: No New Features https://reactjs.org/blog/202 ...

  9. ltp 测试流程及测试脚本分析

    LTP介绍 (2011-03-25 18:03:53) 转载▼ 标签: ltp linux 压力测试 杂谈 分类: linux测试 LTP介绍 一.LTP介绍1.简介LTP(Linux Test Pr ...

随机推荐

  1. C# 文件的读取与另存为(WPF)

    刚学习时,随便记录的一个小程序.因为有不少人看(应该都是学生),稍作修改,方便阅读. xaml:样式 <!--绑定事件--> <Window.CommandBindings> ...

  2. Ubuntu的build-essential有什么作用

    Ubuntu缺省情况下,并没有提供C/C++的编译环境,因此还需要手动安装.但是如果单独安装gcc以及g++比较麻烦,幸运的是,Ubuntu提供了一个build-essential软件包.查看该软件包 ...

  3. mzy,struts学习(一)

    大家都在讲struts已经过时了,现在都是前后台分离,没有必要去学一个淘汰的框架,但是怎么讲呢?我觉得,struts能够流行那么多年,肯定有它的原因,肯定有很多优秀和好的地方,有一个指导过我的人给我讲 ...

  4. 初识apache DBCP连接池

    连接案例: 首先:我们使用的是mysql数据库,所以要有一个mysql和java的JDBCjar包: 然后是DBCP中的两个jar包,DBCP使用的话,需要两个包: dbcp.jar和pool.jar ...

  5. MVVM框架三巨头之Vue的前世今生。

    前端有三宝,Angular,Vue,React.目前这三大主流JS框架已经成三分之势.其中的React框架是由脸书开发的,今天我们就来聊一聊VueJS的前世今生. 前世 在2013年的js开发者大会上 ...

  6. MySQL案例:一次单核CPU占用过高问题的处理

    客户现场反馈,top的检查结果中,一个CPU的占用一直是100%.实际上现场有4个CPU,而且这个服务器是mysql专属服务器. 我的第一反应是io_thread一类的参数设置有问题,检查以后发现re ...

  7. MySQL-SQL基础-DCL

    mysql> grant select,insert on sakila.* to 'zl'@'localhost' identified by '123'; Query OK, 0 rows ...

  8. Adaptive AUTOSAR 学习笔记 16 - 时间同步和网络管理

    本系列学习笔记基于 AUTOSAR Adaptive Platform 官方文档 R20-11 版本 AUTOSAR_EXP_PlatformDesign.pdf.作者:Zijian/TENG 原文地 ...

  9. 自己写一个Map

    Map的实现其实很简单,一个key对应一个value就行 . 本Map是写着玩的,是想告诉初学者我们也可以写一个简单的Map来自己用 代码: public class MyMap<K, V> ...

  10. MySQL(二)——常用命令

    一.MySQL服务器1.介绍安装服务:mysqld -install停止服务:net stop mysql启动服务:net start mysql用户名:root,密码:Password,连接数据库: ...