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.
For more information on unmodified driver reuse, read our publication Unmodified Device Driver Reuse and Improved System Dependability via Virtual Machines.
- Support mailing list