Two different scheduling techniques are considered and a simulation model
is used to evaluate system performance.
在本文中我们检查 a grid system where both parallel and sequential jobs require service.使用回填，but an error margin is added to a job’s runtime prediction.
one at the GS (grid jobs 网格任务) and one inside each of the two sites (local jobs 本地任务).
A job can start execution prior to a gang waiting in the queue if the following condition is met:
2）The exact time that all needed resources will be free for the gang to start execution.
Gang scheduling is used so that if two or more threads or processes communicate with each other, they will all be ready to communicate at the same time. If they were not gang-scheduled, then one could wait to send or receive a message to another while it is sleeping, and vice versa. When processors are over-subscribed（超额认购） and gang scheduling is not used within a group of processes or threads which communicate with each other, it can lead to situations where each communication event suffers the overhead of a context switch（上下文交换）.
Gang scheduling is based on a data structure called the Ousterhout matrix（？）. In this matrix each row represents a time slice（时间片）, and each column a processor. The threads or processes of each job are packed into a single row of the matrix. During execution, coordinated context switching is performed across all nodes to switch from the processes in one row to those in the next row.
Gang scheduling is stricter than coscheduling. It requires all threads of the same process to run concurrently, while coscheduling allows for fragments, which are sets of threads that do not run concurrently with the rest of the gang.
Gang scheduling was implemented and used in production mode on several parallel machines, most notably the Connection Machine CM-5.