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}
}
阿罗操作系统
阿罗操作系统是一款专为服务器无感知计算工作流应用设计的库操作系统。
| 简体中文 | English |
参赛说明
本项目对应赛题:基于 Rust 语言的内核组件化设计与实现(内容为:改进或创新并组合组件形成各种新颖功能或创新功能的组件化内核,支持硬件特性、故障隔离、动态加载和热升级)。Topic.md
本项目的完整文档详见:ServerlessOS-项目说明书。
项目源码可在 GitHub仓库 获取,或通过以下命令克隆:
本项目由天津大学
ServerlessOS团队开发,已在 Eurosys’25 发表相关理论成果,目前仍在持续迭代中。项目亮点:
📖摘要
在云计算领域,服务器无感知计算(Serverless Computing)因其高度资源和编程抽象、按需计费及动态扩容的优势,吸引了广泛的应用迁移。为了优化Serverless 计算的性能和安全性,我们提出了阿罗操作系统 (AlloyStack),一个基于 Rust 实现的 Serverless平台的专用 LibOS(Library OS)ExoKernel 架构系统,将所有策略决定和高级抽象的实现完全委托给用户态的库,精简了操作系统层级、优化了内核用户态和内核态的切换开销,实现更低的冷启动延迟和更高的执行效率。
工作流分别被部署于微虚拟机和本工作所提出的系统 AlloyStack 的示意图
📋原创性说明
AlloyStack 自 2023 年至今总体开发了超过 7,700 行代码实现上述功能,并为引入其他外部模块提增加了适配,例如 Wasmtime, rCore-fs, AcreOS, RuxOS. 详细情况如下:
AlloyStack 的理论成果已在 Eurosys’25 发表,目前项目仍在大量迭代,为提供完整 ServerlessOS 的服务目标继续推进。
✨实现进度
⚙️环境设置
nightly-2024-01-04) 和 gcc (11.4.0)📥安装
软件依赖:要构建 AlloyStack 的 LibOS 和 Rust 函数,必须通过 rustup 安装工具链。要构建 C 和 Python 函数,需要安装 gcc(版本 11.4.0)。要运行自动化测试和执行数据分析,需要安装 just 和 python3。
AlloyStack 架构图
AlloyStack 及其基准测试是开源的,可以通过
git clone获取。代码仓库结构如下:要在AlloyStack上运行新的测试应用,用户需要在
user/目录下开发函数。然后,在isol_config/目录中编辑工作流规约文件,以声明函数如何组成工作流、指定对LibOS模块的依赖,并为函数定义输入参数。如果工作流涉及从文件读取数据集,则数据集也必须添加到文件系统镜像中。请使用以下命令解压提供的镜像压缩包,其中包含Python基准测试的源代码。有关详细文档,请参阅AlloyStack用户指南。
此外,AlloyStack的仓库集成了GitHub Actions。因此,可以本地使用act等工具,通过Docker快速运行一些基本的测试用例。
🚀评测
冷启动延迟
AlloyStack的冷启动可分为两种情况:启用和禁用按需加载。近似的冷启动延迟分别通过
hello_world和load_all的执行时间来衡量。在运行此测试之前,您需要使用命令export SUDO_PASSWD=<your_password>设置SUDO_PASSWD环境变量,因为测试的某些部分需要它。以下脚本可用于自动化测试过程。中间数据传输延迟
用户可以通过
user/data_size.config控制要传输的数据大小(以字节为单位)。以下命令可以自动运行测试并输出关键结果日志。端到端延迟
当前的实现通过工作流规约文件配置每个函数的并行度。用户可以使用
scripts/gen_data.py脚本生成针对特定并行度的数据集文件。函数链(Function Chain)中的中间数据大小可以通过user/目录下的function_chain_data_size.config文件进行调整。运行以下命令将自动完成Word Count、Parallel Sorting和Function Chain的数据生成、函数构建和端到端测试。分解、P99延迟和资源消耗实验是基于上述应用的变体进行的。要禁用按需加载机制,需要修改工作流配置文件(例如
map_reduce_load_all.json)。要禁用引用传递机制,构建函数时应添加--features file-based参数。对于需要并发请求生成的实验,我们提供了负载生成器p99tester和resourcetester。以下脚本会自动切换这些配置选项并运行测试。📚引用
请查阅我们的论文以获取技术细节和完整结果。更详细的使用和测试说明参见项目说明书。