This thesis presents a comprehensive solution for the following problem: how to run a workload of diverse jobs on a parallel server such as the Sun Enterprise 10000 or Hewlett Packard V-Class servers. These ideas are inspired by the state-of-art and limitations of massively parallel processors (MPPs) and multiprocessors.
We identify two characteristics of parallel jobs which affect their execution: communication frequency, and regularity of parallelism or lack thereof. To provide the most appropriate hardware and operating system support for a diverse parallel workload, we classify jobs based on these characteristics.
First, we classify jobs into communication-intensive and communication-infrequent classes based on the number of times their threads communicate per time-slice. Next, we classify programs into three groups: regular, compute-irregular (amount of computation performed per thread varies), and thread-irregular (number of threads varies).
Efficient job execution depends on the appropriate choice of synchronization (communication support) and scheduling mechanisms for each class of jobs. Synchronization may be implemented using fast hardware or slow software mechanisms, and scheduling may be a form of local or gang scheduling.
Communication-infrequent jobs, like sequential jobs, are best run using local scheduling. Regular and irregular jobs are both handled well by local scheduling. The context-switch overhead is negligible due to infrequent pre-emptions, and software synchronization suffices for handling infrequent communications.
Communication-intensive jobs require fast barrier synchronization, but existing barrier trees cannot support compute-irregular jobs. We propose two synchronization solutions for compute-irregular jobs: The first solution flattens nesting levels and uses two traditional barrier trees, and the second solution labels nesting levels and uses a max-tree . We also propose a multiple disjoint barrier synchronization architecture for simultaneously supporting multiple parallel jobs on a server.
Communication-intensive jobs require some form of gang scheduling. Multigang scheduling and family scheduling are the possible variations on gang scheduling when threads exceed processors. For compute-irregular jobs, we prove that family scheduling does better. For thread-irregular jobs, we present online algorithms to rebalance spawned and terminated threads during execution. We show that the 2-competitive idealized algorithm performs poorly on actual workloads. We present the Min-Max algorithm and its n -competitive variant, the 0-M algorithm, and show that both perform well.
Recommendations
Preemptive Scheduling of Parallel Jobs on Multiprocessors
We study the problem of processor scheduling for n parallel jobs applying the method of competitive analysis. We prove that for jobs with a single phase of parallelism, a preemptive scheduling algorithm without information about job execution time can ...
Linear-Time Algorithms for Scheduling on Parallel Processors
Linear-time algorithms are presented for several problems of scheduling n equal-length tasks on m identical parallel processors subject to precedence constraints. This improves upon previous time bounds for the maximum lateness problem with treelike ...