NVIDIA 软件工程师 Andrea Righi 在 eBPF 中实现了他的“scx_rustland”Linux Rust 调度器,以获得非常有希望的性能结果。
scx_rustland Rust 编写的调度器的瓶颈是内核和用户空间之间通信的开销。为了解决这个问题,他在 eBPF 中完全实现了scx_rustland,并将新的创作称为 scx_bpfland。
scx_bpfland 调度器采用与 scx_rustland 相同的逻辑,但没有内核/用户空间通信开销。Andrea 已经运行了一些基准测试,新的 bpfland 代码显示出非常有希望的结果。PostgreSQL 快 30~39%,FFmpeg 快几个百分点,nginx 快 8% 左右,等等。
Andrea 在scx_bpfland的博客文章结束时写道:
“总之,使用 Rust 在用户空间中对新的调度器进行原型设计,然后在 BPF 中重新实现它们,可以成为设计新的专用调度器的有效工作流程。
sched_ext 等技术提供的快速编辑/编译/测试周期对于快速迭代这些原型非常宝贵,使开发人员能够在更短的时间内获得有意义的结果。
scx_bpfland 是这种方法的一个实际示例,它演示了如何在灵活的 Rust 用户空间环境中有效地将初始开发过渡到 BPF 以提高性能。
这个实验不仅突出了sched_ext和eBPF在实现高效和适应性强的调度器开发方面的强大组合,而且还表明sched_ext可能是迈向Linux中可插拔模块化调度的基本步骤。
非常有趣的时代,Linux 内核中发生了伟大的创新,Rust 和 (e)BPF 都打开了新的大门。
转自 Reimplementing A Linux Rust Scheduler In eBPF Shows Very Promising Results – Phoronix