Optimizing Scheduler for Linux Gaming
summary
Measurement shows ~300 threads per game but ~30 threads take 95% of scheduling work, task runtimes sit at ~200–300 µs (few reach 2–3 ms), and preemption accounts for only 25–30% of scheduling events. An implementation using sched_ext builds a BPF scheduler called lavd (latency‑criticality aware virtual deadline) that assigns virtual deadlines from wait/wake frequencies and runtimes and reports improved average and low 1% frame rate in Steam Deck benchmarks without hurting throughput.
AI-written summary · about
chapters (9)
- 0:00Linux gaming optimization
- 2:55Gaming on Linux as platform
- 6:26Performance metrics for gaming
- 8:58Game workload behavior
- 22:13Game vs native workloads
- 24:49SCXT scheduling framework
- 30:10LAVD scheduling algorithm
- 39:29LAVD vs default scheduler
- 45:03Q&A
related talks
42mSteps Towards a Gaming-Optimized Scheduler
16mHow do we make a Steamdeck scheduler work on large servers
35mOpening the Box: Diagnosing Operating-System Task-Scheduler...
30mScheduling at Scale: eBPF Schedulers with Sched_ext
25mLinux needs a Scheduler QOS API -- and it isn't nice(2)
32mImprove CPU Utilization by Designing a New Schedule Algorithm
52mEffectively Measure and Reduce Kernel Latencies for Real-time Constraints
36mAccelerating AI training fleets with sched_ext
