- The Design and Evaluation of a Practical System for Fault-Tolerant Virtual Machines
- Online Cache Modeling for Commodity Multicore Processors
- Bounding the Running time of Interrupt and Exception Forwarding in Recursive Virtualization for the x86 Architecture
TR-2010-001E – The Design and Evaluation of a Practical System for Fault-Tolerant Virtual Machines
Author(s): Daniel J. Scales, Mike Nelson, Ganesh Venkitachalam
Abstract: We have implemented a commercial enterprise-grade system for providing fault-tolerant virtual machines, based on the approach of replicating the execution of a primary virtual machine (VM) via a backup virtual machine on another server. We have designed a complete system in VMware vSphere 4.0 that is easy to use, runs on commodity servers, and typically reduces performance of real applications by less than 10%. Our method for replicating VM execution is similar to that described in Bressoud , but we have made a number of significant design changes that greatly improve performance. In addition, an easy-touse, commercial system that automatically restores redundancy after failure requires many additional components beyond replicated VM execution. We have designed and implemented these extra components and addressed many practical issues encountered in supporting VMs running enterprise applications. In this paper, we describe our basic design, discuss alternate design choices and a number of the implementation details, and provide an evaluation of our performance for both micro-benchmarks and real applications.
TR-2010-002E – Online Cache Modeling for Commodity Multicore Processors
Author(s): Carl Waldspurger, Puneet Zaroo (VMware); Richard West (Boston University); Xiao Zhang(University of Rochester)
Abstract: Modern chip-level multiprocessors (CMPs) contain multiple processor cores sharing a common last-level cache, memory interconnects, and other hardware resources. Workloads running on separate cores compete for these resources, often resulting in highly variable performance. It is generally desirable to co-schedule workloads that have minimal resource contention, in order to improve both performance and fairness. Unfortunately, commodity processors expose only limited information about the state of shared resources such as caches to the software responsible for scheduling workloads that execute concurrently. To make informed resource management decisions, it is important to obtain accurate measurements of per-workload cache occupancies and their impact on performance, often summarized by utility functions such as miss-ratio curves (MRCs). In this paper, we first introduce an efficient online technique for estimating the cache occupancy of individual software threads using only commonly-available hardware performance counters.
TR-2010-003E – Bounding the Running time of Interrupt and Exception Forwarding in Recursive Virtualization for the x86 Architecture
Author(s): Wing-Chi Poon, Aloysius K. Mok
Abstract: Virtualization has been a key technology in enhancing interoperability and in making systems more secure. However, the question remains whether virtualization can be used in the context of real-time systems because of efficiency and schedulability issues. This question is even more controversial when recursive virtualization is considered.
In this paper, we explore one of the biggest challenges of bringing recursive virtualization to the real-time systems community, namely bounding the time for interrupt and exception forward- ing across the hierarchy of hypervisors. We analyze the problem and propose non-paravirtualized algorithms in the context of the x86 architecture, both with and without the latest hardware virtualization support. Though the performance is severely limited by the current hardware features, we show that a simple hardware extension could speed up recursive interrupt and exception delivery significantly.