Abstract
Recent advances in multiprocessor system architecture and technology have made load balancing a significantly more challenging problem. The operating system cannot make sound load balancing decisions without knowledge on the architecture of the underlying multiprocessor system. Scheduling domains is a way to capture and represent this knowledge and has been used by Linux kernel since version 2.6.8 to support its load balancing decisions. In addition, Linux uses many load balancing parameters to guide its decision on when to migrate tasks to where. The choices of load balancing parameters and their relations with other parameters determine the overall performance of the system. Under different workloads and for different system configurations, the same load balancing schemes may achieve different degrees of performance improvement. This fact motivated the performance evaluation study presented in this thesis. The thesis compares two versions of load balancing mechanisms, Linux kernel 2.6.5 and Linux kernel 2.6.10: Linux kernel 2.6.5 does not have the scheduling domains, and Linux kernel 2.6.10 has the scheduling domains. By comparing these versions of load balancing mechanisms, the thesis finds the effects of load balancing decisions, the suitable conditions for use of different load balancing schemes, and the effect of performance tuning parameters. The data on how performance for different kinds of tasks depends on load balancing decisions presented here can help us make the right choices of load balancing strategies to achieve the desired tradeoffs. Key words: Linux, multiprocessor scheduling, load balancing, scheduling domain