第一个 Project,主要是希望通过 eBPF 来复现 MITOSIS 这个系统的功能。MITOSIS 是上交魏星达老师的工作,通过远程 fork 的机制,使用 RDMA 加速服务器无感知计算(Serverless)容器启动,可以在一秒钟之内启动 10000+ 个容器。
第一个 Project 的目标是通过 eBPF 和用户态的控制机制,实现类似 MITOSIS 中的远程 fork 机制。原先的 MITOSIS 使用 Rust 编写内核模块的方式进行实现,有没有可能将其迁移到 eBPF 虚拟机中,在保证性能的同时获得更好的可移植性和实用性?整体项目需要实现 remote fork 的机制,大致需要包含以下两个部分:
-
使用 eBPF 获取运行时进程的所有状态信息;
-
使用 eBPF 和一些内核模块机制在远端恢复对应的进程状态,尽可能少或者不需要修改内核,并将尽可能多的用户态和内核态通信、数据处理机制放在 eBPF 虚拟机中完成。
这部分工作主要在内核态完成,尽可能将 MITOSIS 中更多的模块在内核的 eBPF 虚拟机中通过可编程的方式实现,可以给 eBPF 虚拟机添加更多的 helpers,以及扩展 eBPF 虚拟机的能力。我们不要求说把所有的实现逻辑都放在 eBPF 中实现,但是可以把尽可能多的部分放在 eBPF 虚拟机中,以获得更好的可移植性和安全性。
需要有对应的性能分析结果。
第二个项目的目标是结合 WASM 和 RDMA,以及 eBPF,尝试扩展和加速基于 WASM 的 serverless 平台。RDMA 是远程直接内存访问,允许用户程序绕过操作系统内核(CPU),直接和网卡交互进行网络通信,从而提供高带宽和极小时延,加速对应的网络通信过程。 eBPF 中的一些类型的应用程序,例如 XDP, 也可以起到类似的加速效果,XDP是 Linux Kernel 中提供高性能、可编程的网络数据包处理框架,,能够动态挂载 eBPF 程序逻辑,使得 Kernel 能够在数据报文到达网卡驱动层时就对其进行针对性的高速处理,而无需再 “循规蹈矩” 地进入到 TCP/IP 协议栈。
我们希望有如下两个方面的尝试:
- 尝试使用类似 MITOSIS 的 RDMA 技术,进一步加速用户态 WASM 轻量级容器的调度和启动,以及加速 WASM FaaS 实例之间的通信和互相调用;
- 尝试通过 eBPF 和 XDP ,加速用户态的 WASM 轻量级容器/FaaS 函数实例之间的相互调用和通信流程;
在这个之后,可以比较 RDMA 实现机制和 XDP 实现机制,对于不同类型工作负载之间的的性能、易用性等方面差异,并且看看有没有可能把二者的优势结合起来。
这个部分可以选择一个 WASM 的 serverless 平台进行扩展(例如 faasm: https://github.com/faasm/faasm),这部分工作主要在用户态完成。需要有对应的性能分析。