Talk:Coscheduling

What is the difference between coscheduling and gang scheduling?
I cannot make out the difference between Gang scheduling and Coscheduling. Any hints?

Jayelston (talk) 00:18, 18 August 2011 (UTC): One of them is a special case of the other, depending on who is doing the defining.

The term coscheduling was introduced in 1982 in the paper by J. K. Ousterhout in the paper Scheduling Techniques for Concurrent Systems. The original definition is that the process working set must be coscheduled (scheduled for execution simultaneously) for the parallel program to make progress.

The term gang scheduling was introduced a few years later in a series of papers (starting in 1989) by Dror G. Feitelson and Larry Rudolph. The first mention of gang scheduling that I could find is in a paper titled Architecture for a Multi-User General-Purpose Parallel System. There, they define the term: all the processes in any given job should be scheduled to run at the same time on their respective processors (this is called gang scheduling). In the 1992 paper Gang Scheduling Performance Benefits for Fine-Grain Synchronization, the define it as: A promising new idea is gang scheduling, where a set of threads are scheduled to execute simultaneously on a set of processors.

I did find a footnote where they compare gang scheduling with coscheduling in a footnote:''Actually it supported a variant of gang scheduling called co-scheduling. Co-scheduling attempts to schedule groups of related threads together, but makes do with scheduling only subgroups in not enough processors are available''. This footnote is in regards to the Medusa operating system, and appears near the end of the paper Distributed hierarchical control for parallel processing by Feitelson and Rudolph.