Runtime pluggable CPU scheduler for linux operating system - Al-Maweri, Nasr Addin Ahmed Salem (2010)
The demand for a flexible operating system have increased with the variation of working environments i.e. interactive systems, real-time systems, batch systems, distributed systems or embedded systems. This variation of working environments has generated different applications with different user requirements. Process scheduler, or CPU scheduler is the component of the operating system that plays the role of processes coordination and synchronization. The CPU scheduler uses different scheduling policies (algorithms) to manage such processes. Each scheduling policy has its own properties and suits specific applications or a specific environment. In this thesis a Linux based framework, Runtime Pluggable Scheduling Policies framework, has been proposed to allow switching between the scheduling policies on the CPU scheduler during run-time. The framework purpose is to enable the operating system to use suitable scheduling policy for particular applications and user requirements. This framework allows Linux users to plug and unplug a preferred scheduling policy available in the CPU scheduler while the system is running without the need to reboot or recompile the system. It also provides a flexible interface for kernel developers which facilitates the evaluation and testing for their newly developed scheduling algorithms. Kernel programmers could add and remove a scheduling policy to the kernel then set the CPU scheduler to run on a specific policy at run-time as well. This framework has been developed on top of Linux 2.6.25 kernel, and supports future kernel releases. It added more flexibility to the Linux CPU heduler. It has been implemented in three layers, kernel, modules, and user interface layer, to simplify the framework development and maintenance as well as to maintain performance. Testing and evaluating the framework have proved that it works properly in a reliable way. Various metrics have been measured with an accurate benchmarks. Benchmarking the framework has assured that it has not introduced a deterioration to the overall CPU scheduler performance. The kernel build time of vanilla kernel and the modified kernel were extremely close to each other regardless of the small percentage difference in some cases which is not higher than 0.2%. CPU throughput was almost similar in the modified kernel and the vanilla. CPU utilization was 95.5%, and 95.7% in vanilla kernel and RPSP respectively. The total memory was utilized by the framework was almost negligible at 396 KB. RPSP achieves the process communication in all the cases with 3.5% better than the vanilla kernel. Executing RPSP had some impact on the performance of communication. However, the difference percentage does not exceed 1%. The latency difference was not significant, where the maximum value of difference was 1.6 ms only in few cases. This eterioration in response time does not exceed the noticeable value of 7 ms. Scalability of RPSP were close to the vanilla with a maximum difference of 5% higher than vanilla. However, this percentage difference is not noticeable since it is in a fraction of microsecond.