Synthetix Project Overview
The Synthetix project is sponsored by
ARPA,
Intel,
and
Hewlett-Packard.
The Synthetix project is investigating the application of a technique
we call incremental specialization, a combination of fine-grain
modularity and dynamic code generation, to create operating systems
which are both highly modular and high-performance. Incremental
specialization takes advantage of particular circumstances, not just at
compile time, but also at load time and run time, to make specialized
optimizations. For example, the error-correcting and data-compression
protocols necessary on a low-quality low-bandwidth wireless connection
are unnecessary on a high-quality high-bandwidth fibre-optic network
connection. By specializing the communications protocols, maximal
bandwidth and data quality can be achieved in diverse computing
environments.
A more fine-grained example of incremental specialization is a
technique called software feedback. Software feedback takes
advantage of dynamically changing loading conditions in the network and
the CPU workload, as well as the changing demands of a particular
application, to balance the producer and consumer components of a
multi-part application. By adjusting the data producer to send data at
the same rate that the data consumer is capable of consuming it,
maximal bandwidth is achieved and no bandwidth is wasted. This
balancing of data rates is achieved by dynamically feeding back the
consumption rate at the consumer to the producer. This feedback,
similar in concept to classical feedback systems, keeps the producer
and consumer balanced.
This paper to
appear at the 1995 ACM
Symposium on Operating Systems Principles (SOSP'95) is the most
complete Synthetix publication to date. This short position
paper that appeared at the 1994 OOPSLA Workshop on Flexibility in
System Software provides a brief overview of the Synthetix concepts.
Projects
There are several studies presently under way in the Synthetix project.
Each is a case study of one or more of the ideas of incremental
specialization.
- HP-UX File System
- In co-operation with HP, the HP-UX file system is being modified to
use incremental specialization to enhance the performance of the file
system in general, and the read system call in particular. The
objective is to examine the practicality of applying incremental
specialization to a commercial operating system. This experience will
contribute to a methodology for applying incremental specialization to
existing code.
- Software
Feedback
- Multi-media systems often function near the limit
of the bandwidth capacity of the underlying hardware, and must also
function within real-time constraints imposed by quality of service
limitations--audio and video must not "jitter" due to network delays.
This study uses the software feedback method of fine-grained
adaptiveness to enable multimedia systems to meet user-specified QoS
needs in the face of dynamically changing resource load and
availability. It it is hoped that this approach will provide more
flexibility than conventional real-time scheduling with static
worst-case resource reservation.
- Partial
Evaluation
- Partial evaluation is an important component technology for
exploiting the benefits of incremental specialization. Partial
evaluation is a program transformation approach aimed at specializing
programs with respect to invariants. The Partial Evaluation group lead
by Charles Consel at the University of Rennes is collaborating with the
Synthetix group to provide partial evaluation technology for C
programs.
- Seamless Mobility
-
Dynamic diversity is a growing concern in mobile computers.
Mobile systems have to deal with radical changes in connectivity, CPU speed,
available bandwidth, and hardware media. The problem with contemporary
systems is that radical changes are treated as oversights or failures.
One way to view the mobile computing effect on systems is the
transformation of many invariants into quasi-invariants.
This study uses a structure approach to evolve an existing network stack
(the Net/3 implementation in BSD 4.4-Lite) to handle these new quasi-invariants.