Himanshu Raj, Ivan Ganev, Karsten Schwan, Jimi Xenidis,
Self-Virtualized I/O: High Performance, Scalable I/O
Virtualization in Multi-core Systems
Virtualizing I/O subsystems and peripheral devices is an integral part
of system virtualization. This paper advocates the notion of
self-virtualized I/O (S-VIO). Specifically, it proposes a hypervisor-level
abstraction that permits guest virtual machines to efficiently exploit
the multi-core nature of future machines when interacting with virtualized I/O.
The concrete instance of S-VIO developed and evaluated herein
(1) provides virtual interfaces to an underlying physical device, the
network interface, and (2) manages the way in which the device's physical
resources are used by guest operating systems.
The performance of this instance differs markedly depending on design choices
include (a) how the S-VIO abstraction is mapped to the underlying host- vs.
(b) the manner and extent to which it interacts with the HV, and
(c) its ability to flexibly leverage the multi-core nature
of modern computing platforms. A device-centric S-VIO realization
yields a self-virtualized network device (SV-NIC) that provides high
performance network access to guest virtual machines. Specific performance
show that for high-end network hardware using an IXP2400-based board, a
virtual network interface (VIF) from the device-centric S-VIO realization
provides 77% more throughput and 53% less latency compared
to the VIF from a host-centric S-VIO realization. For 8 VIFs, the
aggregate throughput (latency) for device-centric version is 103% more
(39% less) compared to the host-centric version. The aggregate
throughput and latency of the VIFs scales with guest VMs, ultimately
limited by the amount of physical computing resources available on the
host platform and device, such as number of cores. The paper also
discusses architectural considerations for implementing self-virtualized
devices in future multi-core systems.