Check out the new USENIX Web site. next up previous
Next: Modifying the Host OS Up: Performance Enhancements Previous: Modifying the Guest OS

Optimizing the Guest Driver Protocol

A hosted architecture allows the NIC emulation code to communicate to the host via an abstracted interface that is independent of the host's native hardware. It is possible to design a similarly abstracted imaginary Ethernet controller whose interface is an idealization designed explicitly to virtualize well. For example, the Linux pcnet32 driver issues 12 I/O instructions and takes one IRQ for every single packet transmitted. An idealized virtual NIC could use only a single OUT to indicate a packet is ready to send and completely skip the transmit IRQ, or to only get an IRQ when space becomes available in the array of outgoing packets. The idealized device can also arrange its transmit and receive buffers very simply in memory rather than with the elaborate flexibility, but complexity of the Lance controller's buffers. In fact, VMware's server products support a vmxnet network adapter that implements such an ideal interface.

The major drawback of creating an idealized virtual NIC is the need for custom device drivers for every guest OS. Since the AMD Lance is a well supported NIC, most operating systems already include drivers for it. These existing drivers work unmodified in the guest OSes. Any idealized NIC would need to have an array of its own drivers written, distributed, and maintained. Thus, while an idealized driver is a potential accelerating option, it is likely feasible only for critical situations on a select group of guest operating systems, such as in a server environment.


next up previous
Next: Modifying the Host OS Up: Performance Enhancements Previous: Modifying the Guest OS
Beng-Hong Lim 2001-05-01