Coscheduling

From Wikipedia, the free encyclopedia

Coscheduling is a mechanism proposed for concurrent systems that schedules related processes to run on different processors at the same time. If an application consists of a collection of processes working closely together, and if some but not all of the processes are scheduled for execution, the executing processes may attempt to communicate with those that are not executing, which will cause them to block. Eventually the other processes will be scheduled for execution, but by this time the situation may be reversed so that these processes also block waiting for interactions with others. As a result, the application makes progress only at the rate of one interprocess interaction per time slice.

Coscheduling consists of two ideas:

  • When scheduling any of the processes in the related group, schedule all of them for execution so that they can can communicate efficiently.
  • When a process in the group blocks while communicating with another process in the group, don't remove it from its processor. Instead, leave its state loaded on its processor for a short time, under the assumption that it will receive a response shortly. If this time elapses and the process still hasn't become runnable, then assume it will sleep for a long time and reschedule the processor.

[edit] See also

  • J. K. Ousterhout. Scheduling Techniques for Concurrent Systems Proceedings of Third International Conference on Distributed Computing Systems, 1982, 22—30.