From: Nathan Dire (ndire_at_cs.washington.edu)
Date: Wed Jan 14 2004 - 14:50:20 PST
In "Application Performance and Flexibility on Exokernel Systems", the authors
explore benefits of the exokernel architecture using an implemented system for
x86 machines.
The purpose of exokernel architectures is to expose system resource management
to the application level. The exokernel principles followed by the authors in
the paper include: separating protection and management; exposing allocation;
exposing names; exposing revocation; and exposing information. I think these
basic ideas are quite compelling. They certain challenge the traditional
limited UNIX syscalls, which have a strong precedent. With the degree of
specialization in applications, I think there are certainly plenty of
applications waiting for the opportunity to take better advantage of the
hardware. One question I would have about the approach is security, though
perhaps it can be argued that such system is more easily secured with access
to more information and a smaller protected core.
It appears that a major difficulty with exokernel systems is providing a
stable storage system that can support multiple libFSes. The authors discuss
the challenges encountered in the implementation their solution, XN. The main
purpose of XN is to protect block accesses, since user code doesn't
necessarily have to access data though the appropriate libFS. In XN, the
mechanism for this is untrusted deterministic functions (UDFs). This
functionality allows the libFS to tell the kernel how to protect accesses to
the disk blocks. Another major challenge of XN is ensuring consistency, which
is accomplished using a buffer cache registry.
The specific results in this paper are regarding the level of performance that
can be achieved using both unmodified and specialized applications. The
experiments are performed using on x86 system using the Xok kernel and the
ExOS libOS for Xok. The authors are able to achieve performance with standard
UNIX program comparable to that of existing UNIX systems, and are even able to
show dramatic performance gains using a customized web server called Cheetah.
The results for Cheetah and XCP show that the ability to provide 'zero-touch'
operations seems to be quite powerful for performance. At my company I've
certainly seen the struggle to make I/O operations zero-copy with FreeBSD.
One concept I didn't understand was portability of code in the system. With
wakeup predicates and UDF's, the system appears to support functions which can
be passed into the kernel by applications using some sort of restricted
language. I don't know the specifics of this mechanism, but I wonder about
the usability and flexibility.
Overall, the paper presents a strong validation of the exokernel architecture.
I think the ideas have the most relevance for specialized server appliances
where performance is critical, the hardware configurations are limited, and
there is significant effort expended optimizing user-space code (but not
enough to justify a completely customized kernel).
This archive was generated by hypermail 2.1.6 : Wed Jan 14 2004 - 14:50:22 PST