ACTA Scientiarum Naturalium Universitatis Pekinensis
A Bfgs-corrected Gauss-newton Solver for Bundle Adjustment
ZHAO Shuaihua1, LI Yanyan2, CAO Jian1,†, CAO Xixin1
1. School of Software and Microelectronics, Peking University, Beijing 102600; 2. Technische Universität München, Munich 80333; † Corresponding author, E-mail: caojian@ss.pku.edu.cn
Abstract Aiming at the problem that the Gauss-newton (GN) method is sensitive to the initial information matrix in the Bundle Adjustment (BA) model, which leads to limited application scenarios, the paper proposes a novel method BFGS-GN using BFGS (Broyden-fletcher-goldfarb-shanno) algorithm to improve the traditional Gauss-newton method. When the information matrix of the Gauss-newton method loses positive definiteness, BFGS algorithm can be used to modify the normal equations, which fundamentally eliminates the mathematical defect that the Gauss-newton method is sensitive to initial values. Experimental results demonstrate that proposed method is robust to different types of initials. The same accuracy and the number of iterations as GN can be obtained when the initial values are good. As for bad inputs, Gn-based BA method cannot work but BFGS-GN can converge to a minimum. Key words bundle adjustment; Gauss-newton; BFGS algorithm; initial value robustness
光束法平差(bundle adjustment, BA)是三维重建和视觉SLAM (simultaneous localization and mapping)的核心技术,主要应用于相机位姿和路标点的后端优化。获得相机内参矩阵、外参矩阵、影像特征点和空间3D物点坐标初值后, 可以使用BA模型对以上参数进行整体优化, 消除误差, 并获得精确的视觉信息[1]。
在视觉重建中, BA模型的目标是获得更加精确
的相机位姿和空间路标点。围绕这一目标, 针对光束法平差的研究分为以下几个方向。
1) 使用其他质量更高的传感器获得更高质量的初值。Zhang等[2]着眼于使用标靶来获得精度更高的初值, 以保证优化过程中的问题收敛, 但在提高初值精度时, 往往需要精度更高的采集设备和更多的人工预处理。
2) 建立包含更多约束内容的光束法平差模型。
算方法[12],但每步迭代都需计算海森矩阵(Hessian matrix)的高阶信息, 无法实现实时运行。本文通过分析高斯牛顿方法对初值敏感的原因发现, 在解算过程中, 是由于近似海森矩阵失去正定特点, 才导致下降方向无法求解。本文引入BFGS方法迭代求解目标方程的高阶导信息, 更加精准的表现求解目标中的海森矩阵, 在增加少量可控计算量的基础上,可以极大地提高方法的鲁棒性。在较差初值的情况下, 本文方法也可以获得较好的下降方向, 从根本上解决基于高斯牛顿方法的光束法平差方法对初值敏感的问题。
1基于高斯牛顿方法的光束法平差的缺陷分析1.1 光束法平差模型
(5)
并令一)就是k
(6)就是观测方程的海森矩阵, J J 称为低阶导数T kk
1 Fig. 1
J J Sparsity of
J J matrix
Ak 1s 具有与 矩阵相同的稀疏结构。k k使用稀疏化的 Ak 1s 矩阵替代式(19)中的 Ak+1,在求解下降方向后, 可以顺利地对光束法平差问题进行解算:
(22)
Fig. 3
数据集的初始值距离真实值较远, 所以高斯牛顿方法中的近似 Hessian 矩阵不能很好地表示真实的Hessian 矩阵, 并且在优化的过程中失去正定性。BFGS-GN方法通过对高斯牛顿的目标方程进行修正, 可以更加准确地逼近真实Hessian 矩阵, 并且始终有能力使矩阵在迭代过程中保持正定特性。对于Malaga 数据集, BFGS-GN方法可以收敛到 0.512;对于 College 数据集, 仅需7步就能使MSE收敛到0.352。测试数据集的初始误差、迭代次数和最终收敛精度如表2所示, 其中的第3和第4列分别表示使用初始未知参数计算的均方误差和使用最优参数计算的收敛后的均方误差, 以像素作为统一的单位。此外, 我们还记录了迭代次数。
从整体上看, 与基于高斯牛顿的光束法平差方法相比, 对于初值较好的数据, BFGS-GN方法具有
赵帅华等 基于 BFGS 修正的高斯牛顿光束法平差解算方法
vehicles: the mapping component // IEEE/RSJ International Conference on Intelligent Robots and Systems (IROS). Vancouver, 2017: 634–641 Yang S C, Song Y, Kaess M, et al. Pop-up SLAM: semantic monocular plane SLAM for low-texture environments // IEEE/RSJ International Conference on Intelligent Robots and Systems (IROS). Daejeon, 2016: 1222–1229 Wu Changchang, Agarwal S, Curless B, et al. Multicore bundle adjustment // The 24th IEEE Conference on Computer Vision and Pattern Recognition (CVPR). Providence, RI, 2011: 3057–3064 Zhao Liang, Huang Shoudong, Sun Yanbiao, et al. Parallaxba: bundle adjustment using parallax angle feature parametrization. The International Journal of Robotics Research, 2015, 34(4/5): 493–516 Tang Chengzhou, Tan Ping. BA-NET: dense bundle adjustment networks [EB/OL]. (2019–08–25) [2019– 12–01]. https://arxiv.org/abs/1806.04807 Madsen K, Tingle O, Nielsen H B, et al. Methods for non-linear least squares problems. 2nd ed. Lyngb: Technical University of Denmark, 2004 Hager W W, Zhang H. A survey of nonlinear conjugate gradient methods. Pacific Journal of Optimization, 2006, 2(1): 35–58 Byröd M, Astrom K. Conjugate gradient bundle adjustment // European Conference on Computer Vision. Heraklion, 2010: 114–127 Zhou Weijun, Chen Xiaojun. Global convergence of a new hybrid Gauss-newton structured BFGS method for nonlinear least squares problems. Siam Journal on Optimization, 2010, 20(5): 2422–2441 Li Yanyan, Fan Shiyue, Sun Yanbiao, et al. Bundle adjustment method using sparse BFGS solution. Remote Sensing Letters, 2018, 9(8): 789–798高翔, 张涛. 视觉 SLAM 十四讲: 从理论到实践.北京: 电子工业出版社, 2017: 248–253
1. 北京大学软件与微电子学院, 北京 102600; 2. 北京大学信息科学技术学院, 北京† 通信作者, Email: yhyang@ss.pku.edu.cn 100871;
摘要 研究并实现面向NVME SSD的用户态高性能共享式文件系统(UHSFS), 并提出简单弹性的数据布局技术、多粒度IO队列弹性分离技术以及多用户共享内存架构, 这些关键技术能够显著地提升元数据的操作性能和IO处理能力, 并且实现用户态文件系统的共享访问。实验结果表明, 与 UNFS, NVFUSE, BLOBFS和BLUEFS等用户态文件系统相比, UHSFS的元数据操作性能和Filebench综合负载性能最优; IO队列分离技术能够大幅度地提升吞吐量; 与 F2FS, XFS, Ext4等内核态文件系统相比, UHSFS 同样表现出性能优势。关键词 用户态; 文件系统; NVME 协议; 固态硬盘
究用户态文件系统, 试图通过在用户态使用轮询机制来减少开销, 并消除不必要的上下文切换。因此,轻薄而高效的用户态文件系统逐渐成为NVME SSD的重要选择, 亦成为学术界与工业界共同的研究热点。然而, 现有的面向NVME SSD的用户态文件系统存在如下缺陷。
1) 文件系统布局无法兼顾空间利用率和读写性能。现有的用户态文件系统往往将轻而薄作为设计目标, 因此在空间分配上的策略较为单一。例如,对不同尺寸或流式写入的文件采用固定的分配方法, 导致空间利用率或性能低下。此外, 应用和文件系统各自实现日志[3], 也导致大量不必要的 IO。
2) 未充分发挥NVME SSD的多队列高性能特性。多队列技术是NVME的一个重要的提高性能的方法。借助于多队列技术, NVME实现按照任务、调度优先级和CPU 核(core)分配不同队列。但是, SSD具有读写不对称性, 大小文件的延迟同样存在差别, 现有的文件系统没有根据IO请求的特性区分队列, 性能存在一定的提升空间。
3) 不支持多个应用程序对SSD的共享访问。由于文件系统处于用户态, 未经过操作系统的块设备驱动, 因此, 应用程序只能绑定SSD进行读写访问。显然, 这与传统的内核态文件系统的使用有较大的差异, 无法实现多个应用程序对SSD的共享访问, 而这种访问在一些场景(如多个客户共享读取一个热点视频)中十分重要。
针对上述问题, 本文面向NVME SSD设计一个用户态文件系统UHSFS (user-space high-performance shared file system), 主要贡献包括以下3个方面。
1) 提出简单弹性的数据布局技术, 可以避免大量不必要的IO, 提升小文件的空间利用率。利用NVME对原子操作的支持, 去除元数据操作的预写日志和维护dentry的开销, 在内存中同时维护两套索引, 实现快速的元数据操作。
2) 提出多粒度IO队列弹性分离技术来解决读写混合IO的队列抢占问题。针对NVME多队列的特性进行管理, 将轻量级的分类器用于调度IO 请求被送至哪一种类型的队列中, 显著地降低IO 请求的平均响应时间。
3)提出多用户共享内存架构来解决用户态文件系统无法被多用户进程共享访问的问题。在多个应用程序与文件系统之间, 通过共享内存的方式传递消息和数据, 实现NVME SSD的多进程高效共享。传统的内核态文件系统存在拷贝、上下文切换以及中断等方面的开销, 因此, 轻薄高效的用户态文件系统逐渐成为研究热点。近年来, 一些面向NVME SSD的用户态框架、驱动及文件系统被相继提出。
Intel公司提出针对高性能NVME SSD设备的存储性能开发工具包 SPDK[4], 将所有必需的驱动程序移动到用户空间, 避免系统调用, 并允许从应用程序进行零拷贝访问, 通过轮询方式检查操作完成情况, 以降低延迟, 通过消息传递机制来避免IO路径中的锁冲突。BLOBFS[5]是基于SPDK实现的用户态文件系统, 功能较为简单, 没有提供齐全的 POSIX接口, 不提供对目录的支持, 不支持原地址更新, 只能被一个进程独享使用。Bluestore[6]是一个针对SSD特性优化的存储引擎, 其中包含一个轻量级的文件系统 BLUEFS[7], 并含有用户态块设备抽象层 Nvmedevice, 调用SPDK的用户态块设备驱动。与BLOBFS相似, BLUEFS只提供少量文件接口, 只支持顺序写和两层目录, 只能被一个进程独享使用。Yongseok[8]提出基于 SPDK 的 NVME Driver的用户态文件系统NVFUSE, 使用类似Ext3的文件系统布局, 并计划通过实现轻量级日志, 来进行文件系统的一致性管理, 目前开发不活跃。Dashfs[9]是一种利用进程间通信机制的用户态文件系统, 同样是基于SPDK开发, 仅提供简单的文件操作, 不支持目录, 不考虑崩溃一致性, 研究重点在于通过微内核参与的方式实现进程的信任和安全认证, 但缺乏页缓存机制, 访问性能存在一定的提升空间, 并且缺乏对进程的死锁检测机制。
[10] Kim等 提出用户级IO框架 Nvmedirect, 通过允许用户应用程序直接访问存储设备来提高性能。与SPDK不同, Nvmedirect可以与内核的传统IO堆栈共存, 以便现有基于内核的应用程序可以在不同的分区上与Nvmedirect应用程序同时使用同一个NVME SSD。Nvmedirect 提供队列管理, 每个用户应用程序可根据其IO特性和需要来选择自己的IO策略。Nvmedirect框架比SPDK框架简单,框架线程直接操作设备的IO队列。然而, Nvmedirect是一个用户态调度的框架, 使用起来不方便。Forestfs[11]是 Nvmedirect支持的用户态文件系统, 使用Forestdb[12]进行文件系统元数据管理。
1021
北京大学学报(自然科学版)第56卷 第6期 2020年11月
与 BLOBFS相比, Forestfs支持多级目录和原地更新, 但代码量小, 功能较为简单。
Micron公司提出面向NVME SSD的用户态驱动 UNVME[13], 驱动和客户端应用合并在一个进程内, 性能较好, 但限制一个NVME设备在同一时刻只能被一个应用程序访问。基于UNVME, Micron公司提出 UNFS[14], 但只支持同步接口, 不支持异步接口, 不提供崩溃一致性保证。
除此之外, 还有很多面向NVME SSD的用户态文件系统, 包括 Rustfs[15], Moneta-d[16], CRUISE[17], Burstfs[18], SCFS[19]和 Bluesky[20]等, 由于尚未开源, 因此测试中未进行对比。依赖内核的用户态文件系统不在本文的讨论范围, 虽然开发简便, 但性能十分不理想[21]。
综上所述, 面向NVME SSD的用户态框架、驱动和文件系统的优势在于, 支持零拷贝, 以轮询方式访问来减少中断, 并针对SSD的某些特性做了相关的优化, 可以减少软件带来的开销。存在的共性问题在于文件系统布局无法兼顾空间利用率和读写性能, 未充分利用NVME SSD多队列特性的性能优势, 难以支持多个应用程序对SSD的高效共享访问, 这些都制约了NVME SSD的发展。
UHSFS以页(page)为最小粒度进行空间的分配和读写, page固定设置为4 KB。同时, 利用NVME原子操作, 实现元数据更新的一致性保证。如图1所示, UHSFS的文件系统布局包括超级块(super block)、索引节点(inode)和数据区(data zone)三部分。
超级块大小为2 MB, 记录文件系统类型、版本号等不可变信息以及元数据区大小等可变信息。
索引节点: 单个大小为4 KB, 记录文件或目录的元数据。对于每个索引节点, 头部包含256 B的索引节点编号(ino)、256 B的目录全路径和512 B的元数据(如创建时间、修改时间和权限等), 剩余3 KB则根据索引节点类型使用不同布局。
数据区: 包括小数据区和大数据区。不同尺寸的文件通常是不同的文件类型, 并天然地具备访问频率和生命周期的差异。UHSFS利用这一特性, 将小文件集中在小数据区存储, 大文件分配粒度则与 SSD擦除粒度对齐, 从而减少闪存转换层(flash translation layer, FTL)垃圾回收的开销[22], 在性能和空间利用率上取得平衡。
杨洪章等 基于用户态文件系统的共享访问与性能提升研究
取延迟和吞吐量下降。在SSD上进行混合读写操作, 可能会因以下原因相互干扰。
1) 两个操作共享许多关键资源, 例如差错检测和修正(error checking and correction, ECC)引擎以及
[2]锁保护映射表等。Lee 等 指出, 混合读写产生的相互干扰在NVME设备上仍然存在, 同一个提交队列中的读请求可能必须等到与其竞争的写请求完成, 从而增加了请求延迟。
2) 写操作和读操作都可能在内部生成后台操作, 如预读和异步写回等。
3) 混合读写可以屏蔽某些SSD的内部优化。例如, 闪存芯片通常提供高速缓存模式来传输一系列读或写操作。闪存有两个寄存器: 数据寄存器和缓存寄存器。当处理一系列读或写操作时, 在缓存寄存器与控制器之间传输一页数据的同时, 另一页数据可以在闪存介质与数据寄存器之间移动。但是, 这种流水线操作必须在一个方向上执行, 而混合读和写将中断流水线操作, 降低读写效率。
NVME协议提供多个队列来处理IO命令, 当前Linux内核中的NVME驱动程序在主机系统中为每个CPU核创建一个提交队列和一个完成队列, 以便避免加锁和缓存冲突, 而用户态驱动在队列管理上更加灵活, 每个用户应用程序都可以根据其IO 特性和要求来选择自己的IO完成方法和调度策略。考虑到现有混合式IO队列存在弊端, 结合NVME协议天然具备的多队列特性, 本文进行IO队列的弹性分离设计, 如图2所示。所有的队列被分为4种类型: 大粒度读、大粒度写、小粒度读和小粒度写, 每一种类型会有0或多个队列。当一次IO请求发送给用户态驱动时, 一个轻量级的分类器用于调度该IO请求被发送至哪一种类型的队列中。分离方式包括读写分离和大小分离。1) 读写分离。为了减少混合读写操作下的写干扰, 以往的研究将重点放在IO调度上, 提出提高读请求优先级的读首选调度方案。但是, 读首选调度仍然会增加读请求的延迟, 因为它在某些情况下
[25]不能完全消除写干扰 。本文采用将UHSFS的读写请求在底层IO提交队列分离的方法, 利用NVME多队列的特性, 最大程度地减少读写之间的干扰。
2) 大小分离。大负载顺序写请求的性能显著好于小负载随机写请求。在文件系统中, 由于文件大小的不同、分配数据块的不连续性以及上层应用发出请求的不确定性, 可能在底层IO提交队列产
1023
北京大学学报(自然科学版)第56卷 第6期 2020年11月
杨洪章等 基于用户态文件系统的共享访问与性能提升研究
虑在共享内存达到容量极限后, 将哪些数据从内存中置换出来。一种简单的方法是使用LFU, LRU, ARC, FIFO 和MRU等经典的缓存替换算法, 然而这些算法未考虑在多个用户场景下访问热点重合的问题, 例如一个文件仅被一个用户访问, 而另一个文件同时被多个用户访问, 即便前者刚刚被访问,后者也应拥有更高的重要性。就本文提出的共享内存而言, 共享是重要特征, 被共享访问的文件不能简单地因最近一段时间未访问而被换出。因此, 本文提出一种多用户多因子共享内存置换算法, 当共享内存已满, 需要要淘汰部分文件时, 以文件的E值作为依据, 选取Top N个文件作为缓存淘汰对象, E值的计算公式如下:
ln Sj ]
其中, Ej表示共享内存中第j个文件换出的指标, 指标越大, 表示越应该换出; Sj表示共享内存中第j个文件的大小; T表示一段时间周期; tji表示共享内存中第j个文件, 在T时间周期内, 在时间i 内, 最近未被使用的时间; Rji表示共享内存中第j个文件,在T 时间周期内, 在时间i内的相关系数, Rji=mji/n, N为总进程数, Mji为在时间i 内, 对第j个文件有操作的进程的数量。α表示LRU参数, 根据历史统计获取; β表示相关性参数, 根据历史统计获取; γ表示全相关参数, 取一个很小的数值, 为避免 为 0,根据历史统计获取。
Ej e [ (1
Rji) / T, (2)
除在进程间利用共享内存外, 本文还提出更细粒度的, 非统一内存访问(non-uniform memory access architecture, NUMA)内的共享内存, 用来解决跨 NUMA内存接触和访问 NVME设备的高延时问题。管理进程将负责请求处理的工作线程绑定在与 NVME设备同NUMA节点的CPU上, 此外, 管理进程使用一个全局预分配的同NUMA节点的内存池作为数据缓冲。对于特定的NVME设备, 工作线程是唯一的, 仅从同NUMA节点内存池中分配读写缓冲区。因此, 缓存命中率得以进一步提升, 对文件元数据以及数据的操作也可以在无锁的情况下完成, 降低了CPU开销。请求队列的存在也为进一步的IO优化提供了契机。总之, 管理进程通过为每个 NVME SSD分配一个同NUMA的工作线程,实现简洁高效的请求处理。
3
北京大学学报(自然科学版)
实验
第56卷 第6期 2020年11月
本研究在Linux 系统中, 实现用户态文件系统UHSFS及其关键技术, 并在4个方面测试 UHSFS的性能: 文件系统元数据操作性能、多粒度IO队列弹性分离技术、基于Filebench的综合负载以及与内核文件系统的对比。
3.1实验环境
所有实验都在一台多核NUMA架构的服务器上进行, 具体配置如表1所示。在前3个实验中,都与开源的用户态文件系统进行比较, 包括UNFS, NVFUSE, BLOBFS 和 BLUEFS。在最后一个实验中, UHSFS与典型的内核态文件系统进行比较, 包括 F2FS, XFS 和 Ext4。
由于测试中SSD支持块级别的原子写入, 因此, 对其以4 KB为单位进行格式化时, UHSFS 所需要的原子性能够得到保证。
3.2元数据操作性能测试
我们对目录、文件的create 操作、stat 操作和remove操作性能进行评估测试。文件测试时默认的数量为 100万, 由于BLOBFS文件创建性能过低,实际测试的文件数量为10万。目录测试时是展平的目录结构, 即在同一目录下创建文件和目录, 由于目录支持较差, BLOBFS和 BLUEFS未进行相关测试。
文件元数据操作测试结果如表2所示, UHSFS的整体性能最优。与整体性能排名第二的UNFS相比, 文件 create 操作、stat操作和 remove操作中性
1026
杨洪章等 基于用户态文件系统的共享访问与性能提升研究
7.2%~65.5%。上述测试在 64 KB和4 KB文件的提升最低值和最高值分别出现在不同的IO 深度中,效果不是随请求尺寸和IO深度而线性地变化, 本文认为这与不同负载时SSD的处理能力以及SSD自身队列对用户态软件队列的削弱程度有关。
为了测试数据大小混合与分离的影响, 本节模拟工作负载先向UHSFS同时发出100万个4 KB随机写和10万个 64 KB顺序写的IO 请求, 然后, 向UHSFS同时发出100万个4 KB随机读和10万个64 KB顺序读的IO请求, 实验结果如表5所示。对于不同的队列深度, 弹性分离特性开启后, 吞吐量提升 9.81%~53.68%。随着队列深度的增加, 效果趋于明显, 经过软件重新排序的IO能够被SSD更高效地处理。为了测试读写请求和数据大小全混合与全分离的影响, 模拟工作负载向UHSFS同时发出50万个4 KB随机写、50万个4 KB随机读、5万个 64 KB顺序写以及5万个64 KB顺序读的IO请求, 实验结果如表6所示。读写请求和数据大小全分离后, 系统的吞吐量整体上提升 28.2%~55.7%。
3.4 Filebench 负载性能测试
为了验证UHSFS的整体性能, 使用 Filebench的 4种负载 fileserver, varmail, webserver 和 webproxy进行测试, 配置为 Filebench 的默认配置, 实
Table 5
Performance test results of data size mixing and separation (MB/S)
北京大学学报(自然科学版)
Table 7第56卷 第6期 2020年11月
Test configuration of four workloads in filebench
杨洪章等 基于用户态文件系统的共享访问与性能提升研究
Technical Conference. Berkeley, 2015: 235–247 Yang Ziye, Harris J R, Walker B, et al. SPDK: a development kit to build high performance storage applications // Proceedings of the IEEE International Conference on Cloud Computing Technology and Science. Hong Kong, 2017: 154–161 Intel. Storage performance development kit [EB/OL]. (2019–10–20) [2020–02–01]. https://spdk.io/ Weil S A. Goodbye XFS: building a new faster storage backend for ceph [EB/OL]. (2017–09–12) [2020–02–01]. https://www.snia.org/sites/default/files/ Dc/2017/presentations/general_session/weil_sage% 20_Red_hat_goodbye_xfs_building_a_new_faster_ storage_backend_for_ceph.pdf Lee D Y, Jeong K, Han S H, et al. Understanding write behaviors of storage backends in ceph object store // Proceedings of the IEEE International Conference on Massive Storage Systems and Technology. Santa Clara, CA, 2017: 1–10 Yongseok O. NVME based file system in user-space [EB/OL]. (2018–12–09) [2020–02–01]. https://github. COM/NVFUSE/NVFUSE Liu J, Andrea C A, Remzi H, et al. File systems as processes // Proceedings of the 11th USENIX Workshop on Hot Topics in Storage and File Systems. Berkeley, 2019: No. 14 Kim H J, Lee Y S, Kim J S. Nvmedirect: a userspace I/O framework for application-specific optimization on NVME SSDS // Proceedings of the 8th USENIX Workshop on Hot Topics in Storage and File Systems. Berkeley, 2016: 41–45 Kim H J. Nvmedirect _v2 forestfs [EB/OL]. (2018– 05–03) [2020–02–01]. http://github.com/nvmedirect/ nvmedirect_v2/tree/master/forestfs Ahn J S, Seo C, Mayuram R, et al. Forestdb: a fast key-value storage system for variable-length string keys. IEEE Transactions on Computers, 2015, 65(3): 902–915 Mircon Technology Inc. UNME [EB/OL]. (2019–05– 02) [2020–02–01]. https://github.com/micronssd/un vme Mircon Technology Inc. User space nameless filesystem [EB/OL]. (2017–04–07) [2020–02–01]. https:// github.com/micronssd/unfs Hu Z, Chidambaram V. A rust user-space file system [EB/OL]. (2019–05–08) [2020–02–01]. https://github.
1029
北京大学学报(自然科学版)第56卷 第6期 2020年11月
com/utsaslab/rustfs Caulfield A M, Mollov T I, Eisner L A, et al. Providing safe, user space access to fast, solid state disks. ACM SIGARCH Computer Architecture News, 2012, 40(1): 387–400 Rajachandrasekar R, Moody A, Mohror K, et al. A 1 PB/S file system to checkpoint three million MPI tasks // Proceedings of the 22nd ACM International Symposium on High-performance Parallel and Distributed Computing. New York, 2013: 143–154 Wang T, Mohror K, Moody A, et al. An ephemeral burst-buffer file system for scientific applications // Proceedings of the International Conference for High Performance Computing, Networking, Storage and Analysis. Salt Lake City, 2016: 807–818 Bessani A, Mendes R, Oliveira T, et al. SCFS: a shared cloud-backed file system // Proceedings of the USENIX Annual Technical Conference. Berkeley, 2014: 169–180 Vrable M, Savage S, Voelker G M. Bluesky: a cloudbacked file system for the enterprise // Proceedings of the 10th USENIX Conference on File and Storage Technologies. Berkeley, 2012: 1–14 Bharath K R V, Vasily T, Erez Z. To FUSE or not to FUSE: performance of user-space file systems // Proceedings of the 15th Usenix Conference on File and Storage Technologies. Berkeley, 2017: 59–72 Xu Qiumin, Siyamwala H, Ghosh M, et al. Performance analysis of NVME SSDS and their implication on real world databases // Proceedings of the 8th ACM International Systems and Storage Conference. Haifa, 2015: 1–11 Chen Feng, Lee Rubao, Zhang Xiaodong, et al. Essential roles of exploiting internal parallelism of