Scheduling and Task Allocation - El‐Rewini, Hesham; Abd‐El‐Barr, Mostafa (Advanced Computer Architecture and Parallel Processing, 2004)
After a computational job is designed and realized as a set of tasks, an optimal assignment of these tasks to the processing elements in a given architecture needs to be determined. This problem is called the scheduling problem and known to be one of the most challenging problems in parallel and distributed computing. The goal of scheduling is to determine an assignment of tasks to processing elements in order to optimize certain performance indexes. Performance and efficiency are two characteristics used to evaluate a scheduling system. We should evaluate a scheduling system based on the quality of the produced task assignment (schedule) and the efficiency of the scheduling algorithm (scheduler). The produced schedule is judged based on the performance criterion to be optimized, while the scheduling algorithm is evaluated based on its time complexity. For example, if we try to optimize the completion time of a program, the less the completion time, the better the schedule will be. Also, if two scheduling algorithms produce task assignments that have the same quality, the less complex algorithm is clearly the better. The scheduling problem in known to be computationally intractable in many cases. Fast optimal algorithms can only be obtained when some restrictions are imposed on the models representing the program and the distributed system. Solving the general problem in a reasonable amount of time requires the use of heuristic algorithms. These heuristics do not guarantee optimal solutions to the problem, but they attempt to find near optimal solutions. This chapter addresses the scheduling problem in many of its variations. We survey a number of solutions to this important problem. We cover program and system models, optimal algorithms, heuristic algorithms, scheduling versus allocation techniques, and homogeneous versus heterogeneous environments.