首页 > 其他分享 >性能、成本与 POSIX 兼容性比较: JuiceFS vs EFS vs FSx for Lustre

性能、成本与 POSIX 兼容性比较: JuiceFS vs EFS vs FSx for Lustre

时间:2024-09-04 17:14:42浏览次数:4  
标签:文件 Lustre EFS vs GB FSx JuiceFS

JuiceFS 是一款为云环境设计的分布式高性能文件系统。Amazon EFS 易于使用且可伸缩,适用于多种应用。Amazon FSx for Lustre 则是面向处理快速和大规模数据工作负载的高性能文件系统。

在本文中,我们将通过一系列测试,来评估这三种主流文件系统的性能与成本表现,帮助用户快速了解这些产品。

01 测试环境

测试采用了AWS 的 c5.4xlarge 实例(16核,32GB 内存,10Gbps 网络带宽),涵盖了AWS EFS、JuiceFS 云服务(位于美西2区),以及 AWS FSx for Lustre(1.2 TB、1,200 MB/s配置)。

JuiceFS 客户端测试:配置了 4 个线程,同时测试大文件(1,024 MiB 文件,每块1 MiB 读/写)和小文件(128 KiB 文件,100 个文件读/写)。

02 性能测试与用例

性能测试主要用于评估大文件和小文件的顺序读写性能:

  • 大文件顺序读写:对于需要持续吞吐量的应用非常关键,例如大语言模型(LLM)的数据处理和训练、基因测序、大数据分析、视频流和数据备份;
  • 小文件顺序读写:模拟了在计算机视觉数据处理和模型训练、媒体处理、科学计算等领域常见的工作负载。
    下表显示了吞吐量的测试结果(单位 MiB/s):
测试场景 EFS JuiceFS FSx for Lustre
写大文件 475 1,116 594
读大文件 568 1,016 590
写小文件 29 8 297
读小文件 104 160 274
  • 大文件:JuiceFS 在读写大文件方面是最快的。
  • 小文件:FSx for Lustre 在读写小文件方面表现最佳。

挂载 JuiceFS 的参数如下:

- buffer-size=1024
- max-upload=200
- max-download=200

03 费用比较

下表列出了这些产品的收费标准(单位 $):

费用项目 EFS JuiceFS FSx for Lustre
存储 0.30/GB-month 0.02/GB-month + S3 0.023/GB-month 0.60/GB-month
写访问 0.06/GB 0.10/GB cross AZ Free same region + S3 API $0.005/1,000 requests Free same AZ 0.10/GB cross AZ
读访问 0.03/GB 0.10/GB cross AZ Free same region + S3 API $0.0004/1,000 requests Free same AZ0.10/GB cross AZ
读小文件 104 160 274
  • AWS EFS 根据存储和访问量收费,对于大规模使用来说相对成本较高;
  • 使用 JuiceFS 产生的费用,包括 S3 和 JuiceFS 两部分,但仍然是一个成本较低方案,尤其是当数据在同一区域内访问时,成本效益尤为突出;
  • FSx for Lustre 提供了高性能,但其存储成本最高。

需要特别注意的是一项隐藏费用,跨可用区(AZ)数据传输费用。对于 AWS EFS 和FSx for Lustre 来说,跨不同可用区的数据传输可能会带来额外的成本。而 JuiceFS 利用了 S3 存储在同一地区内的可免费访问的特性,从而减少了这部分的费用。

04 POSIX 兼容性对比

在 AI 应用中,数据处理流程较为复杂,POSIX 兼容性成为团队考量的重要因素。因此,本次比较的结尾部分将提供这三种文件系统在 POSIX 兼容性方面的详细对比。在我们的另一篇博客文章中,对比了云上七款文件系统的 POSIX 兼容性,其中 JuiceFS 通过了全部 8832 项测试,EFS 未通过 1895 项测试,失败比例为 21%,具体测试项目可以参考这篇博客。

之前的测试未包含 FSx for Lustre, 我们按照上述博客中的测试方法,对 FSx for Lustre 的 POSIX 兼容性再次进行了测试,FSX for Lustre 有 16 项测试未通过, 其中 chown 失败 14 项,utimensat 失败 2 项。

此外,JuiceFS 支持 POSIX ACL、回收站、子目录挂载、子目录配额、数据透明压缩、数据在传输和静态时的加密、跨区域复制等功能。

05 小结

JuiceFS在顺序读/写场景中展现出了显著的性能优势,超越了AWS EFS,与 AWS FSx for Lustre 结果相当,但成本更低提供了。而针对随机读/写操作,通常网络文件系统是相对低效的,在这种情况下,为了获得最佳性能,建议使用高级集群技术,将操作集中在本地,同时将远程过程进行批量处理。

总体而言, JuiceFS 提供了兼顾性能与成本优势的方案,在需要大量顺序读/写工作负载的场景,JuiceFS 是一个不错的选择。

希望这篇内容能够对你有一些帮助,如果有其他疑问欢迎加入 JuiceFS 社区与大家共同交流。

标签:文件,Lustre,EFS,vs,GB,FSx,JuiceFS
From: https://www.cnblogs.com/JuiceData/p/18396931

相关文章

  • VScode+STM32开发环境搭建
    VScode+STM32的开发环境搭建前言使用VScode开发STM32主要是因以下几个原因:1、经济受限:keil5需要收费啊;2、有VScode开发相关经验。开发环境搭建软件开发环境的搭建主要用到STM32CubeMX和VisualStudioCode两大软件;安装的步骤按正常的安装流程来即可。下载地址:STM3......
  • Qt项目转换为VS项目
    我们使用VS的“打开本地文件夹”打开我们使用QtCreator创建的项目打开以后资源管理器内容如下图所示如果希望将Qt项目转为VS项目,需要安装下面的扩展,点击扩展-->管理扩展,然后输入qt进行搜索,安装:QtVisualStudioTools在提示下载完成以后,需要关闭VS进行扩展安装,安装过程中可......
  • 文心一言 VS 讯飞星火 VS chatgpt (339)-- 算法导论23.1 8题
    八、设TTT为图GGG的一棵最小生成树,设......
  • vscode文件分层时找不到eslint配置问题
    我的文件夹是这样的--root--server--webserver里用的是eslint5.16.0,没有任何问题web因为是vuter+eslint9.9.1,就各种报错,项目越写越难受,最后忍不住查了一下到底怎么配置新版的vscode+eslint版本:vscode:1.92.2eslint:9.9.1vscode工作区.vscode文件夹里加上一个文......
  • 配置vscode中C&C++编译环境
    配置vscode中C&C++编译环境参考文章链接在文末。Win10系统。本文可能不太适合完全小白的同学参考学习...如果你在配置中遇到了什么问题,可以看一看,或许我能为你提供解决方案。一、卸载VScode,删除之前的配置这一步主要是因为本人之前一直在用vscode,但是各种扩展的使用混乱不堪......
  • 【VMware VCF】VCF 5.2:配置管理域 vSAN 延伸集群。
    VMwarevSAN解决方案中,根据集群的配置类型分为vSAN标准集群、vSAN延伸集群以及双主机集群(延伸集群特例)。我们最常见的使用方式应该是vSAN标准集群,也就是vSANHCI超融合集群,至少由3台ESXi主机所组成,这些ESXi主机安装位属于同一个数据中内,将本地磁盘聚合后提供给工作......
  • 解决vs2022 工具箱中不显示 Devexpress控件的问题
    无效果的尝试1、在工具箱点右键选择RepairToolBox...无效果2、在工具箱中点右键重置工具箱无效果3、在工具箱中右键选择项浏览选择对应的dll,报错提示“面向无法动态枚举工具箱项目的平台”无效果4、删除整个vs配置文件夹:%LocalAppData%\Microsoft\VisualStudio<ver......
  • VS2022 正在加载设计器,一直加载卡死(解决方案)
    双击打开一个Form1文件,显示正在加载设计器,一直加载卡死。  解决方法: 一、右键管理员运行VS2022 或属性,高级》管理员运行勾选二、修改下载的NuGet包存储位置:1、Nuget.Config文件路径:C:\Users\{登录用户名}\AppData\Roaming\NuGet文件内容原始文件内容为:xmlver......
  • c++vscode多文件实现通讯录管理系统
    c++vscode多文件实现通讯录管理系统作为c++入门级别的实战项目,此通讯管理系统项目不仅仅是对c++入门阶段学习成果的检验,也是对c++基础知识的回顾,体会c++在实战制作中的思路,是入门c++单文件实现通讯录系统的改进一、多文件通讯录管理系统简介系统需求通讯录是一个可......
  • ros openvslam
     CMakeLists.txtcmake_minimum_required(VERSION3.1)project(openvslamLANGUAGESCXXC)set(CMAKE_CXX_STANDARD11)set(CMAKE_CXX_STANDARD_REQUIREDON)if(POLICYCMP0042)cmake_policy(SETCMP0042NEW)endif()if(POLICYCMP0074)cmake_policy(SET......