【Rust日报】使用 sched-ext、Rust 和 Ubuntu 制作新的 Linux 调度器

2024-05-29 12:16:59 浏览数 (1)

flawz 发布新版本

flawz 是用于浏览安全漏洞 (CVE) 的终端 UI。

默认情况下,它使用 NIST 的漏洞数据库 (NVD),并在终端中提供具有不同主题选项的搜索和列表功能。

例如,要查看臭名昭著的 xz 漏洞的详细信息,请执行以下操作:

代码语言:javascript复制
flawz --feeds 2024 --query xz

这是图片

更多信息查看 GitHub,https://github.com/orhun/flawz

Tailcall 是一个用于构建高性能 GraphQL 后端的开源解决方案。

下面的文件是一个标准 .graphQL 文件,增加了一些内容,例如 @server@http 指令。因此,基本上,我们指定 GraphQL 模式以及如何在同一个文件中解析该 GraphQL 模式,而无需编写任何代码!

代码语言:javascript复制
schema
  @server(port: 8000, hostname: "0.0.0.0")
  @upstream(baseURL: "http://jsonplaceholder.typicode.com", httpCache: true) {
  query: Query
}

type Query {
  posts: [Post] @http(path: "/posts")
  user(id: Int!): User @http(path: "/users/{{.args.id}}")
}

type User {
  id: Int!
  name: String!
  username: String!
  email: String!
  phone: String
  website: String
}

type Post {
  id: Int!
  userId: Int!
  title: String!
  body: String!
  user: User @http(path: "/users/{{.value.userId}}")
}

现在,运行以下命令,使用上面创建的 jsonplaceholder.graphql 文件的完整路径启动服务器。

代码语言:javascript复制
tailcall start ./jsonplaceholder.graphql

更多信息查看 GitHub, https://github.com/tailcallhq/tailcall

使用tokio来进行数据并行?

这是一篇博文,详细介绍了使用顺序执行和使用rayon包进行数据并行的过程,场景是我们有一个需要两个嵌套循环的算法,其中外部循环必须是连续的,但内部循环可以并行化。但rayon包的表现并不佳,后作者使用 hurdles包来进行屏障来达到优于顺序执行的效果,文章还是很值得一看的。

更多内容请看:https://sarah-ek.veganb.tw/blog/mt-async/

使用 sched-ext、Rust 和 Ubuntu 制作新的 Linux 调度器

在我们对 Rust 和 Ubuntu 的持续探索中,我们深入研究了一个实验性内核项目,该项目利用这些技术为 Linux 创建新的调度器。玩弄 CPU 调度策略一直是许多内核黑客和操作系统爱好者的梦想。然而,这些材料通常仍然属于少数具有丰富经验的核心内核开发人员的领域。但是,如果我们能有一种技术,允许我们在运行时热插拔 Linux 内核调度程序,并用用户空间程序替换它呢?这不仅将提供一种更安全的方式来测试调度策略,而且还将开辟一条道路,以提供针对特定工作负载配置文件(游戏、服务器、低延迟、省电、HPC 等)优化的调度器池,或专门为复杂的异构架构设计的调度器(例如,具有复杂拓扑结构的系统,例如快速内核与慢速内核混合、 与多个 NUMA 节点关联)。此外,由于 BPF 映射的可用性,我们甚至可以几乎完全在用户空间中实现完整的调度策略。这使我们能够访问各种各样的库和服务,以及调试和分析工具(例如,参见 Ubuntu 中关注性能和可观察性的最新趋势)。让我们看看如何使用 eBPF、sched-ext 和 Rust 在 Ubuntu 上将这个梦想变为现实。

更多内容请看:https://canonical.com/blog/crafting-new-linux-schedulers-with-sched-ext-rust-and-ubuntu


0 人点赞