Ubuntu 也开始“锈化”

polarisxu

共 1380字,需浏览 3分钟

 · 2024-04-11

Ubu ntu 内核团队工程师 Andrea Righi 使用 Rust 编写了一个 Linux 内核调度程序 scx_rustland —— 在用户空间(user-space) 运行,并利用 eBPF 在运行时动态加载。

Righi 称该项目初衷源自他的一个想法:在运行时热插拔 Linux 内核调度程序并将其替换为用户空间程序 —— 之所以在用户空间而非内核空间,是因为前者可以提供更多的灵活性和安全性。

d193e9d092cff8a147d4073ed180587f.webp

基于这个想法,Righi 最终采用 eBPF、sched-ext 和 Rust 在 Ubuntu 上创建了这个新的 Linux 调度程序。

  • eBPF 是 Linux 内核提供的一项技术,支持从用户空间向内核空间注入沙盒程序。

  • sched-ext 是 Linux 内核中引入的一个新的调度类,它提供了一种将调度策略实现为 eBPF 程序的机制

编程语言方面,Righi 最终选择 Rust 编写这个调度程序,他认为 Rust 可以提供极大的编码灵活性和优势,例如内存安全、零成本抽象和强大的类型系统。

Ubuntu 还没有承诺将其作为发行版的一部分,Righi 也在博客表示这是一个实验性内核项目,用于探索 Rust 在 Ubuntu 的应用,并谈到了 未来 利用 Rust 和 eBPF 进行 “微内核设计”  的可能性

Righi 在博客介绍称,用 Rust 开发的内核调度程序不仅为开发者提供了便利,还能让用户也受益,比如可以根据用户的工作负载和其他特殊情况加载优化的调度程序。

博客文章最后写道:

“我们正朝着一种微内核设计迈进 ,并有可能获得 Linux 认可:在上 述情况下,如果用户空间调度程序崩溃,任务将无缝过渡到默认的内核调度程序,确保系统的持续可用性,而不会出现任何停机时间。

这表明,类似的方法也可用于其他子系统,从而使 Linux 内核能够提供完全冗余和崩溃安全的系统。”

相关链接

https://github.com/sched-ext/scx/pull/161

https://github.com/sched-ext/scx/tree/main/scheds/rust/scx_rustland

https://ubuntu.com//blog/crafting-new-linux-schedulers-with-sched-ext-rust-and-ubuntu




往期推荐


我是 polarisxu,北大硕士毕业,曾在 360 等知名互联网公司工作,10多年技术研发与架构经验!2012 年接触 Go 语言并创建了 Go 语言中文网!著有《 Go语言编程之旅 》、开源图书《 Go语言标准库 》等。


坚持输出技术(包括 Go、Rust 等技术)、职场心得和创业感悟!欢迎关注「polarisxu」一起成长!也欢迎加我微信好友交流: gopherstudio



浏览 12
点赞
评论
收藏
分享

手机扫一扫分享

举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

举报