1. ARM 架构与 JuiceFS 性能优化背景
在当今计算架构多元化的时代,ARM 架构因其出色的能效比和可扩展性,正从移动设备领域快速向服务器和数据中心渗透。特别是在 AI 训练和大数据处理场景中,ARM 服务器的部署规模正在不断扩大。然而,这种架构转变也带来了新的性能挑战,尤其是在存储 I/O 密集型工作负载方面。
JuiceFS 作为一款基于对象存储构建的高性能分布式文件系统,其设计初衷就是要在保持对象存储低成本优势的同时,提供接近本地文件系统的性能体验。但在 ARM 架构上,JuiceFS 的性能表现与 x86 平台存在显著差异,这主要源于两种架构在内存模型、指令集和并发特性等方面的根本区别。
1.1 ARM 与 x86 的关键架构差异
从底层架构来看,ARM 属于 RISC(精简指令集计算机),而 x86 属于 CISC(复杂指令集计算机)。这种差异导致了几个直接影响性能的关键特性:
-
指令长度与译码复杂度:ARM64 的指令长度固定为 4 字节,而 x86 指令长度可变(1-15 字节)。这使得 x86 需要更复杂的译码器,而 ARM 则更依赖编译器优化。
-
原子操作对齐要求:ARM 架构对原子操作的内存地址对齐有严格要求,这与 x86 的宽松策略形成对比。特别是在使用 LL/SC(Load-Link/Store-Conditional)或 LSE(Large System Extensions)指令时,非对齐访问可能导致性能下降甚至错误。
-
内存模型差异:ARM 采用弱内存序模型(weakly ordered),允许更多的内存访问重排序,这与 x86 的强内存序模型形成对比。在多线程场景下,这种差异可能导致程序行为的不一致。
1.2 MLPerf Storage 基准测试的意义
MLPerf Storage 是由 MLCommons 开发的专门用于评估存储系统在 AI 训练场景中数据供给能力的基准测试套件。其 2.0 版本将测试分为训练负载和检查点负载两大类,其中训练负载又细分为:
- 3D U-Net:大样本(146MiB)医学图像分割模型
- ResNet-50:中等样本(150KiB)图像分类模型
- CosmoFlow:小样本(约几KB)宇宙学模拟数据处理模型
