13 个版本 (4 个稳定版本)
新 1.0.3 | 2024 年 8 月 21 日 |
---|---|
1.0.2 | 2024 年 8 月 9 日 |
1.0.1 | 2024 年 7 月 15 日 |
0.0.9 | 2024 年 6 月 3 日 |
0.0.1 | 2023 年 11 月 30 日 |
#229 在 Unix API
每月 189 次下载
140KB
3.5K SLoC
scx_layered
这是一个用于 sched_ext 的单一用户定义调度器,sched_ext 是一个 Linux 内核功能,允许在 BPF 中实现内核线程调度器并动态加载它们。[了解更多关于 sched_ext](https://github.com/sched-ext/scx/tree/main)。
概述
一个高度可配置的多层 BPF / 用户空间混合调度器。
scx_layered 允许用户将任务分类到多个层,并对这些层应用不同的调度策略。例如,可以创建一个包含所有属于 user.slice
cgroup 切片的所有任务的层,并指定一个策略,确保该层在系统的一些 CPU 上至少有 80% 的 CPU 利用率。
如何安装
作为 Rust 包 提供:cargo add scx_layered
典型用例
scx_layered 设计为高度可定制,可针对特定应用程序进行优化。例如,如果您有一个需要优先访问所有但 1 个物理核心以确保可接受的 p99 延迟的高优先级服务,您可以指定该服务将获得对所有但 1 个核心的优先访问。如果该服务最终没有利用所有这些核心,它们可以由其他层使用,直到需要时。
是否已准备好投入生产?
是的。如果调整得当,scx_layered 应该在各种 CPU 架构和工作负载上都有良好的性能。
话虽如此,您可能会遇到不可行权重的问题,其中具有非常高的权重的任务可能会导致调度器错误地让核心闲置,因为它认为这些核心对于单个任务的计算是必要的。在CFS中也可能发生这种情况,并且应该很快会为scx_layered解决。
依赖项
~25–38MB
~625K SLoC