Abstract:
The reemergence of system virtualization, and the introduction of the single-chip multiprocessor,
are two technologies that are altering the landscape of modern general-purpose
computing architecture. System virtualization is a technology that uses software to partition
the resources of a single physical computer into multiple virtual machines (VMs).
Multiprocessing combines the capabilities of multiple CPUs into a single computer system.
Virtualization continues to play an important role in efficiently utilizing multiprocessor
systems; however, developing efficient multiprocessor virtual machines is a significant challenge.
Multicore processors — those that combine multiple logical CPUs in a single physical
socket — now dominate the general purpose microprocessor marketplace. These processors
require operating system support for multiprocessing, and the most common form of
multiprocessing is symmetric multiprocessing (SMP), where all processors have identical
behavior and any processor can perform any task.
System virtualization introduces additional complexities for implementing SMP because
VMs have different timing behavior from physical computers. In this thesis I examine two
approaches to implementing SMP in VMs used by two leading virtualization platforms:
VMware ESX server and the Xen hypervisor.
I demonstrate the comparative advantages of these two different virtualization systems,
and propose a new optimization technique to improve performance through dynamic virtual
CPU (VCPU) allocation.
I find that Xen performs well when executing independent single threaded applications
that do not require any synchronization between the processes running on multiple processors.
However, Xen scales poorly for applications that require synchronization between
multiple threads.
ESX uses a more conservative scheduling algorithm, called co-scheduling, that provides
more balanced performance for both single threaded and multithreaded workloads. However,
ESX has some significant optimization that provide improved performance over a naive
implementation of co-scheduling.
Finally, I propose an algorithm for dynamic allocation of VCPU resources that can be
used by Xen to improve the efficiency of multithreaded workloads. I provide a simulation
for this algorithm and discuss the tasks required for a complete implementation of the
algorithm.