dyweb / papers-notebook

:page_facing_up: :cn: :page_with_curl: 论文阅读笔记(分布式系统、虚拟化、机器学习)Papers Notebook (Distributed System, Virtualization, Machine Learning)
https://github.com/dyweb/papers-notebook/issues?utf8=%E2%9C%93&q=is%3Aissue+is%3Aopen+-label%3ATODO-%E6%9C%AA%E8%AF%BB
Apache License 2.0
2.14k stars 250 forks source link

An Evaluation of WebAssembly and eBPF as Offloading Mechanisms in the Context of Computational Storage #280

Open gaocegege opened 2 years ago

gaocegege commented 2 years ago

朋友推荐

https://arxiv.org/pdf/2111.01947.pdf

相关文章:https://sniacmsiblog.org/2021/07/what-is-ebpf-and-why-does-it-matter-for-computational-storage/

gaocegege commented 2 years ago

这篇文章以 Near-Data & Near-Storage Processing 作为需求场景,评测了 WebAssembly 和 eBPF 在这个领域的指标。Near-Data Processing 是指把计算往数据上靠,降低数据搬运成本的处理方式。这个概念之前在 Hadoop 里流行了好多年了,之前随着 Kubernetes 的出现,走向了存储计算分离的趋势。现在又重新有了一些热度。

Near-Storage Processing 是指把计算往存储设备上靠。现在的一些新的硬件被称作 Computational Storage Device 可计算的存储设备,比如三星 SmartSSD

截屏2021-11-09 上午11 31 05

它们在存储设备里加了一些可以计算的单元,使得数据的处理可以在存储设备里直接来做,避免在内存/显存/持久化存储里搬来搬去的。这样的新的可计算设备,需要兼容性比较好的 VM 支持其可编程。eBPF 和 wasm 作为比较流行的两个可执行的格式(?)就成为了备选方案。

eBPF 是基于寄存器的实现,wasm 是基于栈的实现,两种方式的区别可以谷歌一下,简单总结基于栈的实现可移植性会比较好,毕竟不是所有的设备都有寄存器。基于寄存器的实现指令更紧凑,性能稍微好一些。

截屏2021-11-09 上午11 44 39

整篇文章的总结就是上图。这里我比较关注 tooling。文章提到 wasm 的三个比较流行的实现是 GraalVM wasmer wasmtime。

截屏2021-11-09 上午11 46 32

现在来看 wasmer 应该已经口碑崩盘了,国内的 wasmedge 反而值得关注。

eBPF 的话,uBPF 和 rBPF 这样的 user space eBPF VM 都不是很容易 debug,也不是非常成熟

总结全文作者认为 wasm 更加成熟一点,eBPF 如果想进入数据处理领域,还有一段距离。这也合理,毕竟 eBPF 最初也不是为了这个场景设计的。