操作系统研究的“奥斯卡” 首次独归亚州!解读SOSP 2023最佳论文 TreeSLS:基于单级存储的全系统持久微内核

TreeSLS: A Whole-system Persistent Microkernel with Tree-structured State Checkpoint on NVM

Fangnuo Wu, Mingkai Dong, Gequan Mo, and Haibo Chen

Shanghai Jiao Tong University

https://dl.acm.org/doi/abs/10.1145/3600006.3613160


引言

主流计算机采用多级存储模型,分为内存 (DRAM) 和存储 (HDD/SSD) 两大类。内存是快速但易失的,操作系统和应用程序都在内存中运行。存储是慢速但持久的,通常用来保存文件。应用程序在内存中处理数据,在存储设备中持久化数据。数据持久化需要应用程序进行显式控制,即在内存和存储设备之间大量搬移数据,并保证崩溃一致性,这会大幅增加编程复杂性和性能开销。

如果操作系统采用单级存储模型、支持应用透明的数据持久性,应用程序就只需要访问内存接口、摆脱传统外部存储设备的概念无需管理文件,那么整个系统将更加简单、高效、可移植。基于Aurora单级存储,RocksDB 等应用程序的代码可以删减40% [1]。

SOSP’23最佳论文 TreeSLS是一种基于持久内存(NVM)实现单级存储(single-level store, SLS)、支持全系统持久性的微内核。TreeSLS是上海交大陈海波教授团队的最新佳作,是自1967年首届SOSP召开以来首篇由亚洲研究人员独立获得的最佳论文。

本文将带您深入了解TreeSLS的研究背景、关键技术、评估结果和研究贡献,以及作者在论文问题定位方面的技巧。

本文将从如下方面解读TreeSLS:

  • 背景介绍。介绍微内核、系统持久性、单级存储的概念,以及Aurora (SOSP'21) 单级存储系统。

  • 论文解读。1) 研究动机。概述现有工作存在的关键问题以及作者做这项研究的目标。2) 设计思路。总结TreeSLS的两个主要设计目标。3) 关键技术。简要阐述TreeSLS的设计和实现。4) 评估分析。展示TreeSLS在不同场景下的评估数据和对比分析。

  • 论文评述。我们对本文进行原创性评述,分析论文定位和呈现技巧,以及作为最佳论文的核心贡献。

1. 背景介绍

1.1 微内核 (Microkernel)

图片

图1: 宏内核 vs. 微内核 (维基百科)

如图1所示,微内核是一种最小化的操作系统内核,它只负责CPU调度、内存管理、和进程通信。其他服务,如驱动程序、文件系统和网络,作为单独的用户进程运行,并通过消息与内核通信。

微内核的优点:

  • 安全稳定,因为在内核模式下运行的服务较少,降低了攻击和崩溃的风险。

  • 易维护,因为服务可以轻松地更改或替换,而不影响系统。

  • 可移植,因为内核可以适应不同的硬件平台。

微内核的缺点:

  • 通信开销:在微内核系统中,获取服务涉及向服务器发送IPC消息并在另一个IPC消息中获取结果。如果驱动程序实现为进程,则此过程需要上下文切换;如果驱动程序实现为过程,则此过程需要函数调用。而在宏内核系统中,获取内核服务仅需要具有两个模式切换的单个系统调用。 

  • 数据传输开销:在微内核系统中,进程A将数据传输到进程B并返回可能会产生额外的数据拷贝开销。在宏内核系统中,内核可以直接访问进程A缓冲区中的数据。

基于微内核的代表性操作系统:

  • MINIX 3:一个小而可靠的操作系统,它的微内核只有12,000行代码。

  • Mach:一个开创性的微内核,影响了许多其他操作系统,如GNU Hurd和Mac OS X。

微内核和宏内核哪个更加优越是存在广泛争议的。大家感兴趣可以查看塔能鲍姆-托瓦兹辩论

1.2 操作系统持久性 (Persistence)

操作系统持久性是指操作系统在重启或断电后能够保持其状态的特性。这意味着在关机前运行或存储在系统中的程序和数据在重新启动后仍然可用和可访问。操作系统持久性可以通过不同的技术实现,例如系统镜像或日志。

系统镜像是整个系统状态的快照,包括内存、磁盘和处理器寄存器。它可以保存到一个文件或一个单独的存储设备,并在需要时恢复。这种技术简单快速,但是需要足够的RAM来容纳整个系统状态,并且无法捕捉最后一次保存镜像后的任何变化。日志是应用到系统的事件的记录,例如文件操作、网络请求或用户输入。日志可以存储在一个持久的存储设备中,并在启动时回放以恢复系统状态。这种技术更可靠和一致,但是可能很慢并且消耗大量的磁盘空间。

1.3 单级存储操作系统 (SLS OS)

单级存储操作系统把两级存储设备当作统一的存储空间,不区分内存(DRAM)和辅存(磁盘/SSD)。这意味着操作系统可以自动管理数据和程序在不同存储设备之间的分配和移动,不需要应用程序显式地从磁盘读写数据。

单级存储操作系统有以下好处:

  • 简化了编程模型,因为应用程序不需要处理文件、目录或磁盘I/O操作。它们只需要使用内存地址来访问数据和代码。

  • 提高了性能和可靠性,因为操作系统可以根据数据和程序的使用模式和存储设备的可用性来优化数据和程序的放置和移动。它也可以通过从持久内存恢复系统状态来从故障中恢复。

  • 增强了可移植性和可扩展性,因为应用程序不依赖于存储设备的具体硬件配置或容量。它们可以在任何支持单级存储操作系统的系统上运行。

    下表列举了一些具有代表性的单级存储操作系统。

图片

1.4 Aurora SLS OS

Aurora之前的SLS系统与POSIX API不兼容,Aurora是第一个支持运行POSIX应用程序的SLS系统。Aurora 解决了捕获 POSIX 状态并有效跟踪系统范围内存更新的挑战,支持未修改和定制的 POSIX 应用程序、扩展单级存储的概念、引入 POSIX 对象模型和系统阴影技术。Aurora的系统架构如下图所示。

图片

Aurora的特点:

  • 通过检查点、以原子性的方式持久化进程分组。

  • 可以持久化未经修改的POSIX应用,同时提供API给应用程序调用以实现更加高效的持久化。

  • 检查点的频率是可调节的,默认为10ms(问题1: 检查点频率仍然不够高)。

  • Aurora 为应用程序提供 灵活的API 来控制和优化持久性,包括创建检查点、恢复检查点、控制内存区域(将一些内存区域从检查点中排除出去)和控制外部同步的功能(问题2: 注意,2021年Aurora文章发表时在实现上还不支持外部同步),来降低应用检查点操作的开销。

  • Aurora 在内存和磁盘上应用 COW 语义,以最大限度地减少应用程序停止时间并维持高检查点频率。

  • Aurora给应用程序提供的API如下面表3所示。

    图片

2. TreeSLS 论文解读

2.1 研究动机

现有工作存在的关键问题:Aurora 系统主要解决如何缓解基于快速 NVMe 设备设计的 SLS 的性能问题。然而,Aurora仍然面临: 1) NVMe SSD写放大导致的性能降级;2) SSD存储设备的性能无法支撑高频检查点,无法克服掉电导致的数据丢失风险;3) 现有的 SLS 不得不为应用程序提供定制化的API(如 journaling APIs)来支持外部同步来保证应用程序要求的即时持久性(比如kv服务器只要响应了客户端的写请求,就必须保证用户写入的kv数据不丢失)。

有希望的替代方案:高性能且可字节可寻址的非易失性存储器 (NVM) 是实现单级存储 (SLS) 更有前途的介质,可以快速、直接地操作持久数据。但是,4) 在持久内存上运行并不会让整个系统自然持久。 Intel eADR等技术可以保证CPU缓存中的数据最终持久化,但CPU和设备寄存器中的数据仍然可能丢失。 能否利用NVM的高性能、可字节寻址、以及持久性来实现高效的单级存储 (SLS),同时支持高频检查点以及对应用程序透明的外部同步?

图片

如上图1所示,TreeSLS全系统持久微内核的两个主要设计目标:低开销检查点 + 应用透明的持久化。

2.2设计思路

为了达到高效的全系统持久性,TreeSLS需要解决两个问题:1)如何高效捕获整个系统的状态;2)如何高效对全系统状态做检查点。

权能 (Capability) 是一种令牌或指针,它授予对特定资源的访问,例如内存对象、设备或内核服务。权能是seL4 [2] 等微内核系统的安全和访问控制的基础。在seL4中,权能存储在节点中,节点是包含一系列权能的内核对象。每个节点都有一个父节点,除了根节点,根节点是最顶层的节点,包含所有初始的权能。一个节点可以创建子节点,并将一些权能委托给它们。一个节点也可以撤销或修改其子节点的权能。

权能派生树(Capability Derivation Tree)是一种树形数据结构,表示系统中各种权能的关系和权限,展示了系统中节点和权能的层次和继承关系。权能派生树由内核维护,并可以通过系统调用由用户级应用程序操作。内核保证只有有效和授权的操作可以进行。权能派生树允许应用程序根据自己的需求和策略创建、共享、委托和撤销权能。

图片

图片

TreeSLS采用权能树(Capability Tree)和检查点管理器(Checkpoint Manager)来实现全系统持久性。权能树是 SLS 的更好抽象,因为与单片内核相比,它简化了检查点设置和恢复。TreeSLS 中的检查点管理器负责获取检查点并管理 NVM 空间。检查点管理器使用重做/撤消日志来维护崩溃一致性并从电源故障中恢复。

2.3 关键技术

(1) TreeSLS权能树检查点:

  • TreeSLS使用权能对象根(ORoot)结构来检查权能树中的对象,避免冗余检查点。

  • 线程、IPC 连接、通知、IRQ 通知和 VM 空间等对象在检查点期间直接复制到备份权能树。

  • 页表不包含在检查点中,因为它们可以在恢复后重建。

  • PMO(物理内存对象)是一种特殊的对象,在备份权能树中进行复制,并且单独跟踪修改的内存页。

  • 其他系统状态组件(例如内核缓冲区和写时复制相关位)作为特殊节点包含在权能树中。

    下图 (a) 展示了原始的copy-on-write检查点方法。设计细节可参考原文。

图片

(2) 版本机制确保一致性:

  • 每个对象都维护检查点和备份,通过版本机制确保一致性。

  • 检查点基数树用于组织每个检查点对象的页面,每个页面有零个或一个备份。

  • TreeSLS 根据页面的备份版本号有选择地恢复页面,从而最大限度地减少恢复期间需要恢复的页面数量。

(3) 基于内存页面混合拷贝的检查点优化:

  • TreeSLS提出了混合复制方法,将停止并复制、推测性停止并复制、写入时复制和推测写入时复制等多种方法和DRAM/NVM迁移相结合,以将运行时页面错误和复制移出关键路径。

  • 混合复制可识别热页并将其迁移到 DRAM,以便在检查点期间更快地访问和停止并复制。

  • TreeSLS 扩展了检查点基数树的结构,以通过维护两个备份来支持混合复制。

    下图B展示了基于冷热页面区分的DRAM/NVM内存页面混合拷贝和迁移机制。设计细节可参考原文。

图片

(4) 透明的外部同步

  • TreeSLS 通过推迟外部可见操作直到检查点已经完成来确保外部同步。

  • 检查点回调更新可见写入器以指示所有依赖项的检查点都已经做完,可以发送消息。

  • 如果发生电源故障,恢复回调将根据崩溃时的环形缓冲区状态执行操作,而不会将其回滚。

  • TreeSLS需要修改驱动程序,但应用程序无需修改即可实现透明的外部同步。

  • 检查点频率需要足够高以避免显着的通信延迟。

    下图8以在网络驱动中修改ring buffers为例,介绍了TreeSLS的外部同步机制。设计细节可参考原文。

    图片

2.4 TreeSLS 评估结果

该论文通过微基准测试和实际应用评估TreeSLS,表明TreeSLS可以在各种场景下成功有效地对整个系统进行检查点,并且与现有解决方案相比,达到了更高吞吐量。

  • Stop-the-world (STW) 检查点是 TreeSLS 性能开销的主要来源。

  • 大多数对象可以在 STW 检查点期间快速复制,但像 Cap Group 和 Thread 这样的对象对于具有大量对象和线程的工作负载来说成本高昂。

  • 检查点频率会影响 SET/GET 操作的延迟,检查点间隔越低,延迟就会增加。

  • 外部同步会导致运行时开销,客户端阻塞并等待回复会影响整体吞吐量。

  • 对于写入密集型工作负载,TreeSLS 的性能优于 Linux-WAL,但对于读取密集型工作负载,TreeSLS 的性能较差。

  • TreeSLS 可以替代 RocksDB 中的磁盘 LSM 树和 WAL,与 Aurora 的日志 API 和 RocksDB 的 WAL 相比,实现更高的吞吐量。

  • TreeSLS 为缺乏持久性保证的服务器提供了有效的替代方案。

图片

图14测试了各种配置下的RocksDB,包括没有持久性保证(Aurora-base 和 TreeSLS-base),基于DRAM的WAL (Aurora-base-WAL)、由带透明检查点机制的SLS实现持久化 (Aurora-5ms, TreeSLS-5ms 和TreeSLS-1ms),以及通过应用非透明的系统API实现持久化 (Aurora-API)。其中1/5ms表示检查点的时间间隔。使用Facebook Prefix_dist工作负载比较不同配置的吞吐量和写入延迟。

TreeSLS-1ms相对于基线显示出10%的吞吐量下降,P50和P99延迟分别增加了22%和69%。TreeSLS-5ms显示出2%的吞吐量下降,P50和P99延迟分别增加了6%和32%。相比之下,Aurora-5ms相对于基线显示出9%的吞吐量下降,P50和P99延迟分别增加了43%和420%。与Aurora的日志记录API和RocksDB的WAL相比,TreeSLS透明检查点实现了2.4倍和2.5倍的更高吞吐量。

值得注意的是TreeSLS-1ms 的性能不如 Aurora-5ms,因为与 Aurora 的 FreeBSD 相比,使用不同的 libc 导致 TreeSLS 的基线较慢。

3. 论文评述(原创观点)

3.1 论文定位技巧

单级存储模型与全系统持久化的概念最早于上个世纪六十年代中叶被提出,随后七十年代中后期出现的 KeyKOS 和 IBM i 系列操作系统(相关论文/著作分别发表于1992年和2001年)都是实现以上概念的先驱。设想很美好,然而现实很骨感,一直以来外部存储设备以机械硬盘为住,其访问速度远低于 DRAM 内存,使得全系统持久化由于性能开销过高而显得不切实际。

直到近些年,NVMe SSD 得到广泛应用,新型非易失内存 NVM 技术进入视野,它们与 DRAM 内存的速度差距大幅缩小、甚至接近,这给全系统持久化带来新契机。因此,在沉寂几十年之后,全系统持久化问题再次引起学者关注。

TreeSLS 是一篇受到 Aurora 启发的优秀论文。Aurora 在结论中提出了一个期待:“NVM 和 FPGA 等硬件进步将使单级存储更加高效”。如果只是沿着 Aurora 的技术路线,在 NVM 上开发单级存储系统,那么这篇论文就只有增量贡献。

TreeSLS的高明之处在于选择与Aurora分道扬镳。 TreeSLS 的目标系统是作者们自研的ChCore微内核,运行在NVM(傲腾持久内存)上,而不是 Aurora 的 FreeBSD 宏内核和 NVMe SSD。TreeSLS 选择 NVM 和微内核有深刻的技术洞察。

近十年来,NVM 技术及其应用一直是研究热点,覆盖了处理器缓存、内存、存储等硬件子系统,以及应用软件和系统软件。TreeSLS 第一个成功将 NVM 应用于解决全系统持久化问题。而微内核架构下的系统功能相对简单,其 Capability Tree 能够追踪全系统状态,非常适合构建检查点。 

TreeSLS使用微内核作为研究平台有三大好处。第一,和Aurora在目标系统上有明显区别,突出了论文的创新性;第二,微内核比传统内核更容易修改和验证,也更有设计空间,“小”的特点也为TreeSLS的技术制高点全系统持久性提供了契机;第三,减少了工作量(Aurora ~20K LOC vs. TreeSLS ~10K LOC)。

3.2 工作呈现技巧

TreeSLS 提供了一套完整的技术方案,包括系统状态抽象、检查点结构设计、检查点持久化和恢复过程、崩溃一致性保障、外部同步实现、以及性能优化等多个方面,来基于 NVM 构建全系统持久化微内核操作系统。整个技术方案非常全面,实验结果证明该方案切实有效。

TreeSLS 作为 SOSP'23 的最佳论文,如果我们说它设计上的创新性不突出,估计很多同行朋友不会同意我们的看法。这并不是受限于作者的能力,而是这项研究工作本身的性质决定的。也许正是一系列朴素的设计支撑了系统的工程素质,要知道TreeSLS 并不是模块级别的,而是一整个能稳定运行,能支撑 RocksDB 复杂应用的操作系统内核。

例如,内存页面基于版本的一致性(§4.2)是TreeSLS的一个设计点,实际上就是TreeSLS给每个运行时内存页面及其检查点分别附加一个版本号,系统故障恢复时根据两个版本号的关系来决定应该用哪个数据。混合拷贝 (§4.3)、透明外部同步(§5) 在设计上都很朴实。

好的系统研究应该有强的工程支撑。但是工程化的呈现非常容易受到审稿人的攻击,因此写作技巧很重要。笔者认为 TreeSLS 在写作上的呈现很出色,把偏工程的工作抽象化,总结提炼成了一个个清晰的设计点,去除了工程感,这十分困难,但对于文章被高分接收非常关键。

结语

高频检查点是不是强需求?傲腾持久内存停产后,NVM设备能否代表未来的发展方向?这些问题目前还没有明确的答案。但有一件事是确定的,那就是 TreeSLS 在更快(检查点)、更高(性能)、更强(全系统)的指标维度上大大超越了之前的系统,给单级存储和系统持久性的未来研究设立全新的标杆,提高了未来研究的门槛。系统研究的“奥斯卡”,TreeSLS 当之无愧。

Aurora 衔接了单级存储系统研究长达 20 年的断层,Aurora的影响力将长期存在!

参考文献

[1] Tsalapatis, Emil, Ryan Hancock, Tavian Barnes, and Ali José Mashtizadeh. "The aurora single level store operating system." In Proceedings of the ACM SIGOPS 28th Symposium on Operating Systems Principles, pp. 788-803. 2021.

[2] Klein, Gerwin, Kevin Elphinstone, Gernot Heiser, June Andronick, David Cock, Philip Derrin, Dhammika Elkaduwe et al. "seL4: Formal verification of an OS kernel." In Proceedings of the ACM SIGOPS 22nd symposium on Operating systems principles, pp. 207-220. 2009.

  • 22
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值