Reuse of Unmodified Device Drivers

This project has been completed.

We reuse unmodified device drivers by running them within their original operating system in a virtual machine. Multiple client virtual machines are able to multiplex the devices, by sending requests to installable mapper modules within the device driver OS. The drivers run at user-level and are preemptible, and thus support modular reuse in new OS endeavors.

By isolating device drivers within their own virtual machines, we improve system dependability. Via virtual machine reboot, drivers are restartable.

The active memory consumption of our L4Ka::Linux driver reuse is bounded, whether using disk or network, due to the Linux kernel's reuse of memory buffers. The network driver Linux receives all packets into its own memory, and then copies them to the appropriate client Linux instances (subject to security constraints).

In the TTCP network benchmark, used to determine the overhead of the driver reuse, and on a machine with a Pentium 4 2.8 GHz processor and an Intel 82540 gigabit network adapter, throughput loss was 2.5% compared to native Linux. CPU utilization increased, as expected for the Pentium 4, which flushes many processor caches on address space switches.

For demonstrating application performance, we used the PostMark benchmark, which emulates an Internet mail server. It performs many file operations, which we configured to take place via NFS. The NFS server used our device driver reuse framework, and simultaneously exercised the network and disk drivers. The disk was a SATA Maxtor 6Y120M0.

The average benchmark runtime was 343.4 seconds, with a standard deviation of 2.4%. The standard deviation was over twice the loss in performance due to driver reuse. Both the isolated and consolidated driver reuse configurations had higher CPU utilization than natlive Linux.

Contact: Prof. Dr.-Ing. Frank Bellosa

Author Title Source

Joshua LeVasseur

Dissertation, School of Computer Science and Engineering of The University of New South Wales, Australia, May 2009

Joshua LeVasseur, Volkmar Uhlig, Jan Stoess, and Stefan Götz

Proceedings of the Sixth Symposium on Operating Systems Design and Implementation (OSDI '04), December 6-8, 2004, San Francisco, CA

Joshua LeVasseur and Volkmar Uhlig

Proceedings of the 11th ACM SIGOPS European Workshop, September 19-22, 2004, Leuven, Belgium