From: Prasanna Kumar Jayapal (prasak_at_winse.microsoft.com)
Date: Wed Jan 28 2004 - 15:05:41 PST
This paper ("Scheduler Activations" by Anderson et al) addresses the key
dilemma in parallelism - "Should the threads be supported by the OS
kernel or by the user mode library routines" and explains the problems
with each approach. Finally, it describes a better design with the
combination of OS kernel interface and user mode thread package that
provides same functionality as kernel threads without compromising on
the performance and flexibility of user threads.
The user-level threads execute within the context of processes and are
managed by the runtime library routines. These threads are very flexible
as it requires no kernel intervension and can be customized to the needs
of the user/application. But they exhibit poor performance and incorrect
behaviour as they are very loosely integrated with the system. On the
other hand, kernel threads avoids system integration problems, but are
too heavyweight just like the traditional processes and have worse
performance.
In this paper the authors come up with a solution that makes the best
use of features from both the approaches (kernel threads and user
threads) mentioned above. This consists of a set of library routines for
thread management that run in user space and exposure of the relevant
kernel events to the user-level thread management. In this method,
kernel allocates processors to the address spaces and the address
space's thread system decides which threads to run on its allocated
processors. The interaction between the kernel and user-level thread
system happens through "scheduler activations". This scheduler
activation serves as an execution context and notifies any kernel events
to the user-level threads. By running in the user space these threads
are flexible and since calls to the scheduling routines are less
expensive, performance is pretty much the same as that of the user-level
threads.
I felt that this was a very nice design and the idea of two way
communication seems efficient. This is later on proved by the authors in
the performance section with experiments on the Topaz and the Fast
threads on the Firefly system. The thread performance degradation is
very minimal, while the upcall performance was slightly more than what
the authors expected and they give good justification to it. The
application performance and the related idea sections were nice to read
through. Overall, I thought it was a very informative and a useful
paper.
This archive was generated by hypermail 2.1.6 : Wed Jan 28 2004 - 15:05:43 PST