Implicit Coscheduling: Coordinated Scheduling with Implicit
Information in Distributed Systems
Implicit Coscheduling: Coordinated Scheduling with Implicit
Information in Distributed Systems
In this thesis, we formalize the concept of an
implicitly-controlled system, also referred to as an implicit
system. In an implicit system, cooperating components do not
explicitly contact other components for control or state information;
instead, components infer remote state by observing naturally-occurring
local events and their corresponding implicit information, i.e.,
information available outside of a defined interface. Many systems,
particularly in distributed and networked environments, have leveraged
implicit control to simplify the implementation of services with
autonomous components.
To concretely demonstrate the advantages of implicit control, we propose
and implement implicit coscheduling, an algorithm for dynamically
coordinating the time-sharing of communicating processes across
distributed machines. Coordinated scheduling, required for
communicating processes to leverage the recent performance improvements
of switch-based networks and low overhead protocols, has traditionally
been achieved with explicit coscheduling. However, implementations of
explicit coscheduling often suffer from multiple failure points, high
context-switch overheads, and poor interaction with client-server,
interactive, and I/O-intensive jobs.
Implicit coscheduling supports not only traditional parallel applications
on Networks of Workstations, but also general-purpose workloads. By
observing and reacting to implicit information (e.g., the round-trip time of
request-response messages), processes across the system make independent
decisions that coordinate their scheduling in a fair and efficient manner.
The principle component of implicit coscheduling is conditional
two-phase waiting, a generalization of traditional two-phase waiting in
which spin-time is only partially determined before the process begins
waiting and may be conditionally increased depending upon events that occur
while the process spins. A second important component is a fair and
preemptive local operating system scheduler.
With simple models and analysis, we derive the appropriate baseline and
conditional spin amounts for the waiting algorithm as a function of
system parameters. We show through simulation and an implementation on
a cluster of 32 workstations that implicit coscheduling efficiently and
fairly handles competing applications with a wide range of communication
characteristics. We predict that most well-behaved parallel applications
will perform within 15% of ideal explicit coscheduling.