当前位置: 首页 > Linux

JuiceFSv0.17发布,通过1270LTP测试!

时间:2023-04-06 23:43:01 Linux

大家好,JuiceFSv0.17已经在国庆假期如期发布啦!这是我们2021年秋季发布的第二个版本,所以让我们开门见山,看看有什么新内容。本次更新共有80+次提交,共有9位来自JuiceFS社区的小伙伴在GitHub上贡献了代码。在此,我们向每一位贡献者表示最诚挚的感谢,欢迎您在屏幕前加入JuiceFS开源社区,贡献代码、文档或讨论想法。通过LTP1270测试,Linux系统下兼容性更完美最新版JuiceFS针对Linux系统环境进行了进一步优化,完善了对rename和setxattr读取其他参数的支持,顺利通过了LTP1270测试。LTP(LinuxTestProject)是由IBM、Cisco等公司共同开发和维护的项目,旨在为开源社区提供一个测试集,以验证Linux的可靠性和稳定性。LTP包括各种工具来验证Linux内核和相关功能。测试结果:TestcaseResultExitValue----------------------fcntl17FAIL7fcntl17_64FAIL7getxattr05CONF32ioctl_loop05FAIL4ioctl_ns07FAIL1lseek11CONF32open14CONF32openat03CONF32setxattr03FAIL6-----------------------------------------------总测试:1270Total跳过测试:4个失败总数:5个内核版本:5.4.0-1029-aws机器架构:x86_64其中,跳过和失败的项目主要是由于几个不支持的功能,详见此文档。优化存储临时数据的性能为了满足Spark的shuffle文件的临时数据存储需求,社区贡献者WilliamZhu(@allwefantasy)为JuiceFS贡献了数据延迟上传功能,允许JuiceFS先将数据写入本地缓存磁盘,如果数据在短时间内删除,无需写入对象存储,可提供接近本地磁盘的读写性能。当写入大量数据时,会自动写入对象存储,释放本地磁盘空间,无需担心磁盘被shuffle数据填满。这个新特性让JuiceFS可以作为一个弹性本地磁盘,提供无限的存储空间和对临时数据的低延迟访问。为了进一步提高性能,添加了在客户端内存中运行的元数据引擎(MemKV)。与其他元数据引擎一样,MemKV也用于保存与数据相关的元数据,但它不是持久化的。客户端卸载后,释放MemKV元数据。MemKV完全在内存中运行,具有绝对的性能优势,非常适合临时文件存储场景。TiKV元数据引擎在Hadoop场景下性能提升5倍JuiceFSJava客户端需要频繁的路径解析,Redis引擎通过Lua实现服务器端多级路径解析,而SQL和TiKV引擎仍然需要多次元数据请求来解析一个路径,尤其是当路径比较深,影响比较大。为了解决这个问题,本次更新在JuiceFSHadoopSDK客户端引入了类似Linux内核的元数据缓存机制,可以通过参数控制目录、文件、属性的过期时间。可以通过以下方式启用:juicefs.attr-cache3juicefs.entry-cache3juicefs.dir-entry-cache3下面是9层目录的元数据表现测试,可以看到开启元数据缓存可以大大提升元数据操作的性能。(该值代表操作的延迟,越小越好。)但是需要注意的是,元数据缓存开启后,会影响多个客户端之间的一致性(有限时间窗口的最终一致性),比如客户端删除文件下载后,其他节点可能仍然认为该文件存在,因为缓存尚未过期。所以一般推荐在查询场景下使用该功能。如果是读写混合的场景,建议适当开启目录和属性的缓存,关闭文件项的缓存。1分钟上手性能测试,结果一目了然。我们进一步优化了JuiceFS内置的性能测试工具台的结果。在简单直观的基础上,我们进一步突出了关键数据。如果某项性能数据偏离了正常范围,就会显示为黄色甚至红色,建议特别注意。更多新版JuiceFS详情请访问GitHub项目主页:推荐阅读:如何使用JuiceFS将AI模型训练提速7倍如何使用JuiceFS性能工具进行分析调优