#linux-kernel #调度器 #调度 #bpf #截止时间 #任务调度 #决策

app scx_lavd

基于sched_ext的延迟关键性感知虚拟截止时间(LAVD)调度器,sched_ext是一种Linux内核特性,它允许在BPF中实现内核线程调度器并动态加载它们。https://github.com/sched-ext/scx/tree/main

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

Download history 17/week @ 2024-05-03 2/week @ 2024-05-17 4/week @ 2024-05-24 138/week @ 2024-05-31 28/week @ 2024-06-07 5/week @ 2024-06-14 252/week @ 2024-07-12 17/week @ 2024-07-19 104/week @ 2024-08-09 122/week @ 2024-08-16

每月226次下载

GPL-2.0-only

110KB
2K SLoC

C 1.5K SLoC // 0.4% comments Rust 573 SLoC // 0.1% comments

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