Experimental Patches Allow eBPF To Extend The Linux Kernel's Scheduler
The Linux kernel has seen continued adoption of (e)BPF into different areas of the kernel. One of the eBPF additions right on the horizon is the eBPF support coming to the HID subsystem for better dealing with quirky hardware in a more timely manner and hopefully leading to less redundant driver churn.
Tejun Heo announced the eBPF scheduler work today as part of the work by him and several other kernel developers. The belief is that with eBPF support for the Linux kernel scheduler it could ease experimentation and exploration of new scheduling policies, allow for application-specific schedulers and other customizable options via the loading of custom BPF programs, and provide a non-disruptive way for changing out scheduling policies within production environments.
Engineers from both Google and Meta (Facebook) are behind this initiative. As the conclusion for today's RFC patch series:
"Both Meta and Google have experimented quite a lot with schedulers in the last several years. Google has benchmarked various workloads using user space scheduling, and have achieved performance wins by trading off generality for application specific needs. At Meta, we have not yet deployed sched_ext on any production workloads, though our preliminary experiments indicate that sched_ext would provide significant performance wins when deployed at scale. If successfully upstreamed, we expect to leverage it extensively to run various experiments and develop customized schedulers for a number of critical workloads.
In closing, both Meta and Google believe that sched_ext will significantly evolve how the broader community explores the scheduling problem space, empowering continued improvement to the in-kernel scheduler, while also enabling targeted policies for custom applications. We’ll be able to experiment easier and faster, explore uncharted areas, and deploy emergency scheduler changes when necessary. The same applies to anyone who wants to work on the scheduler, including academia and specialized industries. sched_ext will push forward the state of the art when it comes to scheduling and performance in Linux."
As part of today's patches, besides working on the eBPF scheduler infrastructure there is an example scheduler that shows most scheduling decisions deferred to user-space. Another demonstration scheduler is a hybrid approach where load balancing decisions are made in user-space and that code is written in the Rust programming language.
More details on this very interesting proposal via the RFC patch series.