Virtualization has emerged as a key system design technology for reducing the complexity of modern hardware, software systems, and applications, through abstract layering that simplifies reasoning about, and making use of, resources and system services by applications. The benefits of virtualization (e.g. generality, portability, extensibility, and simplifying application debugging, deployment, and development) however, come at a cost in performance since the number, depth, and complexity of layers is increasing. Deep layering introduces additional levels of indirection, additional redundant computation, and increasingly inefficient cross-layer communication. To reduce the overhead of virtualization many developers of high-end systems and services attempt to specialize the layers to the needs of the application by removing or penetrating the layer interfaces. The application and system code are then co-mingled and optimized together, thereby improving performance at the expense of generality, portability, and extensibility. This specialization, at present, is performed almost exclusively by hand in an ad-hoc fashion. The project will develop new methods and approaches to automate and advance the specialization process under programmatic control through Vertical Integration of Virtualization layers (VIVA).
The key to the proposed approach is to exploit the increasingly popular trend of isolating entire application, middleware, and operating system (OS) stacks using virtual machine monitors (VMMs) so that each execution instance can employ the layered software it uniquely requires. VIVA takes advantage of the isolation that such systems provide to aggressively customize and optimize all layers of a system according to the requirements of an executing application eliminating all services that are unused by the program, e.g., OS services for resource sharing and security. Moreover, since program behavior changes over time and is increasingly data driven, the techniques to be developed will be both dynamic and adaptive.
PI: Chandra Krintz, UC Santa Barbara Intellectual Merit: Virtualization has emerged as a key system design technology for reducing the complexity of modern hardware, software systems, and applications, through abstract layering that simplifies reasoning about, and making use of, resources and system services by applications. The benefits of virtualization (e.g. generality, portability, extensibility, and simplifying application debugging, deployment, and development) however, come at a cost in performance since the number, depth, and complexity of layers is increasing. Deep layering introduces additional levels of indirection, additional redundant computation, and increasingly inefficient cross-layer communication. To reduce the overhead of virtualization, our work attempts to specialize the layers to the needs of the application by removing or penetrating the layer interfaces. The application and system code are then co-mingled and optimized together, thereby improving performance at the expense of generality, portability, and extensibility. Our approach, called Vertical Integration of VirtualizAtion layers (VIVA), takes advantage of increasing layers that provide isolation to aggressively customize and optimize all layers of a system according to the requirements of an executing application. Moreover, since program behavior changes over time and is increasingly data driven, our techniques are both dynamic and adaptive. Our work has lead to a wide range of scientific advances in the area of programming language runtime and distributed systems. In particular, we have designed and developed novel profiling systems, techniques that better exploit available multi-core processors, integrated runtime and operating system optimizations, and high-performance multi-language runtime interoperation. The software artifacts we contribute include in new technologies for full-system profiling and performance tracking across software revisions, efficient parallel and concurrent application and workload execution, hardware-software coordination and interoperation for profile-directed instruction prefetching, OS/Runtime support for memory management, and OS/Runtime support for cross-runtime and cross-language shared memory (XMem and CoLoRS). Recently, we have expanded these activities to target distributed cluster systems (as opposed to individual computers) and we combine and distribute our technologies as open source as part of AppScale – the first open source distributed runtime system for cloud computing applications and services. All of our results and software artifacts provide significant reductions in program execution time (up to orders of magnitude in some cases), simplify extant software systems, and advance parallel and concurrent programming systems. Broad Impact: VIVA preserves the benefits of virtualization and layering for design, software engineering, portability, and generality, while easing the maintenance burden implied by specialized implementation. Our work, thus, makes automatic, full-system, customization of applications accessible to a large developer base. In addition, this project has provided us with the opportunity to develop the expertise necessary to improve our CS curriculum and to perform outreach that positively affects students from underrepresented groups in different ways. Our novel curricular directions in the CS department at UCSB include new lectures and projects on virtualization and full-system specialization as part of undergraduate classes (e.g. on the hardware/software interface and programming languages) and as part of graduate classes on the implementations of programming languages. These efforts have significantly improved the technical skills of all students involved. Our key outreach contributions include projects, classes, and partnerships with Girl's Incorporated of Santa Barbara and Microsoft. In particular, we have provided mentoring , teaching, and new curricula for young Latina girls (primarily from financially disadvantaged households) that educates them about what computer science is and how exciting it can be. We have been able to build confidence in these girls through the use of computer programming via a visual gaming system from Microsoft (called Boku), and to provide these young people with information about the opportunities that are available to them should they pursue education and careers in computer science.