-
-
Notifications
You must be signed in to change notification settings - Fork 57
wasm v2
云微 edited this page Feb 4, 2023
·
5 revisions
- base on libbpf and wamr
- 400 行不到的代码(运行时)
- 内核态和 wasm 之间无序列化,共享内存(无内存拷贝)的双向通信,极大地提高了性能,并且几乎可以适用于所有的使用 ebpf 的场景
- 可以访问几乎所有的 eBPF 底层 map 类型,以及 perf event 和 ring buffer,获得完善的 ebpf 能力
- 可以通过 bpftool(我们修改过的版本)自动生成用户态 c skel
- 和 libbpf-bootstrap 几乎一致的、简单便捷的开发体验,甚至还更简单一些(不需要编译和链接 libbpf 代码,只需要 包含一个简单的头文件库)
- wasm 有很多系统相关的结构体类型缺失,可以用生成的 vmlinux 补足这一点,实现方便的 host 和 wasm 之间的交互和通信,也更方便移植代码;
- 几乎可以移植任何类型的 eBPF 应用到 wasm,稳定性也大大提高了(代码够少)
- 提供 wasm 在用户态和 ebpf 在内核态的双向高速通道,带来更多的可能性
- 本质上可以说是希望把 wasm 当做在操作系统之上建立的另一个用户态运行空间,让 ebpf 和 userspace 运行的任意 wasm 应用建立通信,类似于 wasi 的设计思路,而不是将 wasm 用作数据处理插件;
- 300+ 行从零开始实现 Wasm + eBPF 通用运行时平台:基于 libbpf 和 WAMR