Teaching the Linux scheduler to keep off idle cores

This proposal has been rejected.


One Line Summary

Optimizing the Linux scheduler in cooperation with other power management subsystems (like cpuidle) for better power savings


Linux kernel has various subsystems to exploit platform power saving features. The need to coordinate between the subsystems like cpuidle and the scheduler has already been established1. In this paper we would talk about the techniques that can used in the scheduler to maximize idle time at different levels of topology like core, socket and full system.

Different platforms based on x86, ARM and powerpc processors have architecture specific definitions of low power states with their own boundary conditions and quirks. This necessitates the involvement of the scheduler as the key subsystem that has the overall view of the amount of work flowing in the system and thereby the estimated idle time. Can the scheduler decide to optimally schedule these idle times on different CPUs in such a way that the platform can maximize its power savings?

On a modern x86 architecture, the goal would be to encourage race-to-idle and maximise full system idle time, while on powerpc, socket level evacuation provides the best benefits. ARM SoCs have interesting constrains and preference on which core should be left idle whenever possible. Prototype of some of the ideas along with results will be discussed in this presentation.



power-management, sched, cpuidle


  • Biography

    Vaidy is a kernel developer at IBM Linux Technology Center. He has been working on improving energy efficiency of Linux running on enterprise hardware including Linux on IBM POWER platforms by exploiting platform power saving features and improve efficiency.