7个版本 (4个稳定版)
新 1.0.3 | 2024年8月21日 |
---|---|
1.0.2 | 2024年8月9日 |
1.0.1 | 2024年7月15日 |
0.1.3 | 2024年6月3日 |
0.1.2 | 2024年4月29日 |
#648 in Unix APIs
每月226次下载
110KB
2K SLoC
scx_lavd
这是在sched_ext中使用的单个用户定义调度器,sched_ext是一种Linux内核特性,它允许在BPF中实现内核线程调度器并动态加载它们。了解更多关于sched_ext的信息。
概述
scx_lavd是一个BPF调度器,它实现了LAVD(延迟关键性感知虚拟截止时间)调度算法。虽然LAVD是新的并且仍在发展,但其核心思想是1)衡量一个任务有多大的延迟关键性,2)利用任务的延迟关键性信息来做出各种调度决策(例如,任务的截止时间、时间片等)。正如其名称所暗示的,LAVD基于截止时间调度的基础。此调度器由BPF部分和Rust部分组成。BPF部分做出所有调度决策;Rust部分加载BPF代码并执行其他任务(例如,打印采样调度决策)。
典型用例
scx_lavd最初是由游戏工作负载激发的。它旨在提高Linux上游戏时的交互性和减少卡顿。因此,此调度器的典型用例涉及高度交互的应用程序,如游戏,这些应用程序需要高吞吐量和低尾延迟。
是否可用于生产环境?
此调度器可以用于当前代码已优化的生产环境。当前代码没有特别考虑多个NUMA/CCX域,因此在这样的硬件上的调度决策将是不理想的。此调度器目前主要适用于单个CCX/单插槽主机。
依赖关系
~25–37MB
~616K SLoC