Dynamic Soft Real Time-Multi Processor CPU Scheduler
Based on Hoa-Hua Chu's Ph.D. work on the Dynamic Soft Real Time CPU scheduler, we have developed a multi-processor
version of the system. The problem of Quality of Service (QoS) degradation during multimedia playback can occur when
CPU congestion exists. The DSRT server resides as a middleware layer on top of the underlying operating system. The
server provides soft real time guarantees to multimedia client applications. Even as the number of client applications
running on the CPU increases, periodic computation guarantees are met ensuring no degradation in QoS. The DSRT system
developed for Windows NT/2000 is optimized for a single processor machine. We have developed a multi-processor version
of the server called DSRT-MP. The DSRT-MP server enables client applications to pin a particular processor. Client
applications can also dynamically migrate between processors at run-time via the server. The DSRT-MP server
off-loads the mapping of CPU reservations to processors to the client application. DSRT-MP also includes resource
requirements discovery (CPU probing) and the ability to make soft real time CPU reservations for a specified time in
The architecture of the DSRT-MP server has four main components: an API, suspension handler, broker, and scheduler.
The API is a simple client side component that contains method calls to connect to and run soft real time threads on
the DSRT-MP server. The API is compiled into the client's code to enable the client access to the DSRT server. The
suspension handler is responsible for updating the scheduling queues when a client needs to be suspended. The broker
is responsible for admission control. The scheduler is responsible for selecting, scheduling, and dispatching client
threads. Each of these four components executes in a separate thread context (i.e., simultaneously).
The client side API sends messages to each of the other three components. In addition it receives the results of a
reservation request from the admission broker. Just prior to suspending itself in the API, a client will send a
message to the suspension handler. The suspension handler updates the states of the client threads. The suspension
handler has direct access to the scheduler's queues. The scheduler runs continuously. If there are no threads to
schedule, the scheduler sleeps. The scheduler does not interact with any of the other components. Rather, the other
three components change the queue (by adding or removing a thread) or the states of a thread. The broker performs the
admission control test for a prospective soft real time client thread. The broker interacts with the client when a
reservation request is made. The broker is the only component that inserts and removes threads from the queues.
DSRT-MP Server Components
We refine the previous figure with the one immediately above, the dotted line indicates thread context. In
this example the MPEG player is the soft real time client and the Server API runs in the MPEG player's thread context.
The server's message handler is the server side recipient of all client API messages except messages to the client
suspension handler. It is responsible for receiving client requests from the API and relaying them to either the
broker or the scheduler's client request handler subcomponent. The Client Request Handler subcomponent manipulates the
states of the threads in the scheduler's queues. For example, it might change a client's processor or reservation.
Requires Windows 2000 Professional (with multi-processor kernel) or Windows 2000 Server.
Requires MS Visual C++ V6.0SP5 or greater to compile
Requries MS Windows 2000 Platform SDK November 2001 or later to compile
Download Windows 2000 C++ Source Code.
James W. Jackson, [ps], [zipped ps]
Department of Computer Science, University of Illinois at Urbana-Champaign, May 2002.
Copyright @ 2002, Multimedia, Operating Systems and Networking Group,
University of Illinois at Urbana-Champaign.