目录
目录README.md

阿罗操作系统

阿罗操作系统是一款专为服务器无感知计算工作流应用设计的库操作系统。

| 简体中文 | English |

参赛说明

  1. 本项目对应赛题:基于 Rust 语言的内核组件化设计与实现(内容为:改进或创新并组合组件形成各种新颖功能或创新功能的组件化内核,支持硬件特性、故障隔离、动态加载和热升级)。Topic.md

  2. 本项目的完整文档详见:ServerlessOS-项目说明书。

  3. 项目源码可在 GitHub仓库 获取,或通过以下命令克隆:

    git clone https://github.com/tanksys/AlloyStack.git
  4. 本项目由天津大学 ServerlessOS团队开发,已在 Eurosys’25 发表相关理论成果,目前仍在持续迭代中。

  5. 项目亮点:

    • 专为服务器无感知计算工作流应用设计的库操作系统
    • 性能优化:
      • 通过按需加载减少冷启动延迟
      • 通过引用传递优化中间数据传输开销
    • 安全:
      • 通过Intel MPK硬件技术作为内核安全的防护
      • 利用 WASM 和 Rust 语言增强安全性
    • 功能:
      • 涵盖 网络、文件系统 (部分来自 rCore-fs, ArceOS)、内存管理等库
      • 提供完整的 API 文档以供用户使用
      • 提供完整的自动化测试工具和评测脚本

📖摘要

在云计算领域,服务器无感知计算(Serverless Computing)因其高度资源和编程抽象、按需计费及动态扩容的优势,吸引了广泛的应用迁移。为了优化Serverless 计算的性能和安全性,我们提出了阿罗操作系统 (AlloyStack),一个基于 Rust 实现的 Serverless平台的专用 LibOS(Library OS)ExoKernel 架构系统,将所有策略决定和高级抽象的实现完全委托给用户态的库,精简了操作系统层级、优化了内核用户态和内核态的切换开销,实现更低的冷启动延迟和更高的执行效率。

工作流分别被部署于微虚拟机和本工作所提出的系统 AlloyStack 的示意图

工作流分别被部署于微虚拟机和本工作所提出的系统 AlloyStack 的示意图

📋原创性说明

AlloyStack 自 2023 年至今总体开发了超过 7,700 行代码实现上述功能,并为引入其他外部模块提增加了适配,例如 Wasmtime, rCore-fs, AcreOS, RuxOS. 详细情况如下:

代码仓库 原创部分代码量 来源
AlloyStack 主体 7700+ LoC /
wasmtime ~100 LoC Wasmtime
rCore-fs ~200 LoC rCore
ext4 ~100 LoC ext4_rs
ruxos ~200 LoC RuxOS

AlloyStack 的理论成果已在 Eurosys’25 发表,目前项目仍在大量迭代,为提供完整 ServerlessOS 的服务目标继续推进。

✨实现进度

  • ✅ 按需加载
  • ✅ 数据传递
  • ✅ 用户栈系统栈隔离
  • ✅ 文件系统
  • ✅ 网络
  • ✅ MPK硬件保护
  • ✅ WASM运行时
  • ✅ CPython 支持
  • ✅ 支持同工作流下的不同函数内存隔离

⚙️环境设置

  • 程序: AlloyStack
  • 操作系统: Ubuntu 22.04
  • 内核: Linux 6.5.0 - 41 - generic
  • 编译环境: rustup 工具链 (nightly-2024-01-04) 和 gcc (11.4.0)
  • 硬件: 配备 MPK 的 Intel x86 服务器

📥安装

软件依赖:要构建 AlloyStack 的 LibOS 和 Rust 函数,必须通过 rustup 安装工具链。要构建 C 和 Python 函数,需要安装 gcc(版本 11.4.0)。要运行自动化测试和执行数据分析,需要安装 just 和 python3。

AlloyStack 架构图

AlloyStack 架构图

AlloyStack 及其基准测试是开源的,可以通过 git clone 获取。代码仓库结构如下:

AlloyStack/
├── libasvisor/ # as-visor 源码
├── as_std/ # as-std 源码
├── common_service/
│   └── ... # as-libos 模块
├── user/
│   └── ... # 基准测试程序源码
├── isol_config/
│   └── *.json # 工作流规约文件
├── fs_images/
│   └── *.img # 文件系统镜像
├── doc/
│   └── ... # 详细文档

要在AlloyStack上运行新的测试应用,用户需要在user/目录下开发函数。然后,在isol_config/目录中编辑工作流规约文件,以声明函数如何组成工作流、指定对LibOS模块的依赖,并为函数定义输入参数。如果工作流涉及从文件读取数据集,则数据集也必须添加到文件系统镜像中。请使用以下命令解压提供的镜像压缩包,其中包含Python基准测试的源代码。

有关详细文档,请参阅AlloyStack用户指南

AlloyStack$ just init

此外,AlloyStack的仓库集成了GitHub Actions。因此,可以本地使用act等工具,通过Docker快速运行一些基本的测试用例。

🚀评测

冷启动延迟

AlloyStack的冷启动可分为两种情况:启用和禁用按需加载。近似的冷启动延迟分别通过hello_worldload_all的执行时间来衡量。在运行此测试之前,您需要使用命令export SUDO_PASSWD=<your_password>设置SUDO_PASSWD环境变量,因为测试的某些部分需要它。以下脚本可用于自动化测试过程。

AlloyStack$ just cold_start_latency

中间数据传输延迟

用户可以通过user/data_size.config控制要传输的数据大小(以字节为单位)。以下命令可以自动运行测试并输出关键结果日志。

AlloyStack$ just data_transfer_latency

端到端延迟

当前的实现通过工作流规约文件配置每个函数的并行度。用户可以使用scripts/gen_data.py脚本生成针对特定并行度的数据集文件。函数链(Function Chain)中的中间数据大小可以通过user/目录下的function_chain_data_size.config文件进行调整。运行以下命令将自动完成Word CountParallel SortingFunction Chain的数据生成、函数构建和端到端测试。

AlloyStack$ just end_to_end_latency

分解、P99延迟和资源消耗实验是基于上述应用的变体进行的。要禁用按需加载机制,需要修改工作流配置文件(例如map_reduce_load_all.json)。要禁用引用传递机制,构建函数时应添加--features file-based参数。对于需要并发请求生成的实验,我们提供了负载生成器p99testerresourcetester。以下脚本会自动切换这些配置选项并运行测试。

AlloyStack$ just breakdown && just p99_latency && just resource_consume

📚引用

请查阅我们的论文以获取技术细节和完整结果。更详细的使用和测试说明参见项目说明书。

@inproceedings{you2025alloystack,
 author = {You, Jianing and Chen, Kang and Zhao, Laiping and Li, Yiming and Chen, Yichi and Du, Yuxuan and Wang, Yanjie and Wen, Luhang and Hu, Keyang and Li, Keqiu},
 booktitle = {Proceedings of the Twentieth European Conference on Computer Systems},
 doi = {10.1145/3689031.3717490},
 title = {AlloyStack: A Library Operating System for Serverless Workflow Applications},
 year = {2025}
}
关于
240.9 MB
邀请码
    Gitlink(确实开源)
  • 加入我们
  • 官网邮箱:gitlink@ccf.org.cn
  • QQ群
  • QQ群
  • 公众号
  • 公众号

©Copyright 2023 CCF 开源发展委员会
Powered by Trustie& IntelliDE 京ICP备13000930号