CPU inheritance scheduling

Abstract
Traditional processor scheduling mechanisms in operat- ing systems are fairly rigid, often supporting only one fixed scheduling policy, or, at most, a few "scheduling classes" whose implementations are closely tied together in the OS kernel. This paper presents CPU inheritance scheduling , a novel processor scheduling framework in which arbitrary threads can act as schedulers for other threads. Widely dif- ferent scheduling policies can be implemented under the framework, and many different policies can coexist in a single system, providing much greater scheduling flexibil- ity. Modular, hierarchical control can be provided over the processor utilization of arbitrary administrative domain s, such as processes, jobs, users, and groups, and the CPU resources consumed can be accounted for and attributed accurately. Applications, as well as the OS, can imple- ment customized local scheduling policies; the framework ensures that all the different policies work together logi- cally and predictably. As a side effect, the framework also cleanly addresses priority inversion by providing a gener- alized form of priority inheritance that automatically wor ks within and among diverse scheduling policies. CPU inher- itance scheduling extends naturally to multiprocessors, a nd supports processor management techniques such as proces- sor affinity(29) and scheduler activations(3). We show that this flexibility can be provided with acceptable overhead in typical environments, depending on factors such as context switch speed and frequency.