Virtualization
Intro
Virtualization is the art of subdividing resources provided by modern computers
in order to achieve maximum performance, isolated execution, maximum
utilization, resource managed hardware sharing and so on. Virtualization is not
a novel concept. Mainframes designed in the late '70s incorporated the idea of
isolating hardware design and hardware-agnostic software execution.
Virtualization exists in all aspects of modern high performance computing. We
try to experiment on Virtualized I/O, especially in Network Device
Virtualization.
Storage and Network I/O
We believe that modern High Performance Interconnection Networks provide
abstractions that can be exploited in Virtual Machine execution environments
but lack support in sharing architectures. Previous work has shown that
integrating the semantics of Virtualization in specialized software that runs
on Network Processors can isolate and finally minimize the overhead on the VM
Hypervisor concerning access to the device by Guest VMs. Direct I/O has been
proposed as the solution to the CPU overhead imposed by guest VM transparent
services that can lead to low throughput for high bandwidth links. However,
minimizing CPU overhead comes at the cost of giving away the benefits of the device driver model.
Integrating protocol offload support (present in most modern NICs) in virtual network device drivers
can lead to performance improvement. Bypassing the Hypervisor in data movement
can also minimize the overhead imposed by heavy I/O but at the cost of safety and memory
protection.
We envision a Virtualization-enabled High performance Network Interface that can
achieve line-rate throughput and optimized sharing of Network I/O in Virtual
Machines by utilizing commodity hardware and innovative resource-sharing
virtualization architectures.
See
BibVirt for selected publications concerning Virtualization techniques.