Open gaocegege opened 3 years ago
这篇文章以 Near-Data & Near-Storage Processing 作为需求场景,评测了 WebAssembly 和 eBPF 在这个领域的指标。Near-Data Processing 是指把计算往数据上靠,降低数据搬运成本的处理方式。这个概念之前在 Hadoop 里流行了好多年了,之前随着 Kubernetes 的出现,走向了存储计算分离的趋势。现在又重新有了一些热度。
Near-Storage Processing 是指把计算往存储设备上靠。现在的一些新的硬件被称作 Computational Storage Device 可计算的存储设备,比如三星 SmartSSD。
它们在存储设备里加了一些可以计算的单元,使得数据的处理可以在存储设备里直接来做,避免在内存/显存/持久化存储里搬来搬去的。这样的新的可计算设备,需要兼容性比较好的 VM 支持其可编程。eBPF 和 wasm 作为比较流行的两个可执行的格式(?)就成为了备选方案。
eBPF 是基于寄存器的实现,wasm 是基于栈的实现,两种方式的区别可以谷歌一下,简单总结基于栈的实现可移植性会比较好,毕竟不是所有的设备都有寄存器。基于寄存器的实现指令更紧凑,性能稍微好一些。
整篇文章的总结就是上图。这里我比较关注 tooling。文章提到 wasm 的三个比较流行的实现是 GraalVM wasmer wasmtime。
现在来看 wasmer 应该已经口碑崩盘了,国内的 wasmedge 反而值得关注。
eBPF 的话,uBPF 和 rBPF 这样的 user space eBPF VM 都不是很容易 debug,也不是非常成熟
总结全文作者认为 wasm 更加成熟一点,eBPF 如果想进入数据处理领域,还有一段距离。这也合理,毕竟 eBPF 最初也不是为了这个场景设计的。
朋友推荐
https://arxiv.org/pdf/2111.01947.pdf
相关文章:https://sniacmsiblog.org/2021/07/what-is-ebpf-and-why-does-it-matter-for-computational-storage/