Merged today for the Linux 7.0 kernel are some pretty exciting scheduler changes: new features and never-ending work around scheduler performance optimizations and greater scalability with today’s increasingly high core count systems.
Among the scheduler changes that were successfully merged today by Linus Torvalds includes the time slice extension support that has been in development for about a decade! There is a time slice extension for the kernel implemented via Restartable Sequences (RSEQ) that had undergone several different attempts over the years. The merged code lets user-space processes request a temporary, opportunistic extension of their CPU time slice without being preempted. The intent here is when a thread enters a critical section to avoid contention on a resource when the thread is scheduled outside of the critical section.
Also making it into Linux 7.0 is just focusing on full and lazy preemption modes for modern CPU architectures. Affected architectures now limited to either full or lazy preemption modes include x86/x86_64, s390, RISC-V, POWER, LoongArch, and ARM64 in getting rid of the none and voluntary options.
Linux 7.0 also brings a number of scheduler performance and scalability improvements. There is work that helps scalability across various workloads, fair scheduler SMP NOHZ balancing code speed-ups, and other improvements.
The list of all the exciting scheduler feature updates now-merged for Linux 7.0 can be found via this Git merge. Once the merge window settles down I’ll begin with my Linux 7.0 kernel performance benchmarking and on the lookout for any regressions.
