The Configuration Toolkit (CTK) is a library for constructing configurable
object-based abstractions that are part of multiprocessor programs or opera
ting systems. The library is unique in its exploration of runtime configura
tion for attaining performance improvements: 1) its programming model facil
itates the expression and implementation of program configuration and 2) it
s efficient runtime support enables performance improvements by the configu
ration of program components during their execution. Program configuration
is attained without compromising the encapsulation or the reuse of software
abstractions. CTK programs are configured using attributes associated with
object classes, object instances, state variables, operations, and object
invocations. At runtime, such attributes are interpreted by policy classes,
which may be varied separately from the abstractions with which they are a
ssociated. Using policies and attributes, an object's runtime behavior may
be varied by 1) changing its performance or reliability while preserving th
e implementation of its functional behavior or 2) changing the implementati
on of its internal computational strategy. CTK's multiprocessor implementat
ion is layered on a Cthreads-compatible programming library, which results
in its portability to a wide variety of uni- and multiprocessor machines, i
ncluding a Kendall Square KSR-2 Supercomputer, SGl machines, various SUN wo
rkstations, and as a native kernel on the GP1000 BBN Butterfly multiprocess
or. The platforms evaluated in this paper are the KSR and SGl machines.