Improving application performance down to the scheduler level
Project
Improving application performance down to the scheduler level
Principal Investigator
Oracle Fellowship Recipient
Oracle Principal Investigator
Greg Marsden
Scott Michael
Tom Hromatka
Vasileios Trigonakis, Consulting Member of Technical Staff
Summary
Recent research and experience at Oracle have shown that operating system schedulers are often a performance bottleneck on multicore architectures because in order to scale, schedulers cannot make optimal decisions and instead have to rely on heuristics. In the previous years, we have worked on profiling tools for the scheduler (Carver et al., PLOS ‘19), on a DSL for writing scheduling policies with proven properties (Lepers et al., EuroSys ‘20), and we have proposed two scheduling policies that improve performance for specific workloads. In the paper “Fewer Cores, More Hertz, Leveraging High-Frequency Cores in the OS Scheduler for Improved Application Performance” (Carver et al. EuroSys ‘20), we proposed a scheduling policy that improves performance of workloads such as shell scripts that create many processes using the standard fork/wait POSIX system calls, or producer-consumer applications. In the paper “OS Scheduling with Nest: Keeping Threads Close Together on Warm Cores” (Lawall et al., EuroSys ‘22), we proposed another scheduling policy that reduces execution time and energy usage when a small number of concurrent tasks are running on the machine. The main takeaways from this research are that (1) the performance of the OS scheduler has a significant impact on applications, (2) dedicated profiling tools are useful for understanding performance bottlenecks in the scheduler, (3) the OS scheduler often makes suboptimal decisions that do not ensure basic properties such as work conservation and (4) custom policies can greatly improve performance for specific workloads.
For the upcoming year, the main objective of this project is to design an interface in the Linux kernel that makes it possible for a cloud operator such as Oracle to easily write custom scheduling policies for their workloads, without having to modify the kernel. This interface will rely on BPF, a kernel component that makes it possible to safely inject code inside the kernel. Adapting BPF to this new use case will require significant research and engineering effort. We believe that improving the performance of the scheduler at the scale of the cloud can translate into significantly reduced hardware requirements and drive costs down.