Cloud computing involves use of a hosted computational environment that can provide elastic compute and storage services on demand. Virtualization is a technology that allows multiple virtual machines (VMs) to run on a single physical machine and share its resources. Virtualization is increasingly being used in cloud computing to provide economies of scale, customized environments, fault isolation, and reliability. To address performance concerns with the use of cloud computing for scientific computing, the PAPI-V project is developing a system for hardware performance monitoring in virtualized environments to enable software developers to understand and optimize system and application performance and adapt to changing conditions. To accomplish this goal, the project is extending the widely used Performance API (PAPI) cross-platform library for accessing hardware performance counters.

The PAPI-V project is addressing the following aspects: 1. Timing: The PAPI timing routines are being extended to provide standard real and virtual timers across different Virtual Machine Monitors (VMMs). 2. Component measurements: The existing PAPI I/O, network, and other shared resource components are being extended to provide relevant information in virtualized environments. 3. Virtualization of selected processor hardware counters: A selected set of processor counters considered being most relevant for application performance analysis and tuning in virtualized environments is being implemented across VMMs. 4. Interpretation of data: A mechanism for defining metrics that correctly quantify the contributions of various factors to overall performance is under development.

The research results will be implemented in the publically available and widely used PAPI library. The PAPI-V extension will allow application and tool developers to use a familiar interface to obtain relevant information for achieving the best possible performance in cloud computing environments.

Project Report

The concept of cloud computing involves use of a hosted computational environment that can provide elastic compute and storage services on demand. Virtualization is a technology that allows multiple virtual machines (VMs) to run on a single physical machine and share its resources. Different VMs can run different operating systems and applications. Virtualization is increasingly being used in cloud computing to provide economies of scale, customized environments, fault isolation, and reliability. Although continuing advances in hardware support for virtualization have been closing the gap between native and virtualized performance, performance concerns have inhibited widespread adoption of cloud computing for scientific computing. A challenging problem is how to combine and interpret measurements obtained from different software layers in a virtualized environment, so as to be able to understand and optimize system and application performance and adapt to changing conditions. A common approach to observing performance on non-virtualized (i.e., native) systems is to use the hardware performance counters available on modern microprocessors. The counters can be accessed using the portable Performance Application Programming Interface (PAPI). Widely deployed and widely used, PAPI provides a consistent interface and methodology for accessing hardware performance counters on CPUs and other system components of interest (e.g., network, I/O, power/energy, GPUs). While PAPI can be used as a stand-alone tool, it is more commonly applied as a middleware by third-party profiling, tracing, sampling, and even auto-tuning tools, such as TAU, Scalasca, Vampir, HPCToolkit, CrayPat, Active Harmony, and others. The counters provide a wide range of information about processor, cache, and memory performance. PAPI components for off-processor counters provide additional performance information about other components of the system, such as the file system, network, temperature and power consumption, and GPUs. In virtualized systems, however, access to hardware performance counters has been limited. With the migration of computing workloads to virtual environments becoming more common, cloud-based performance analysis has become increasingly important. This project addressed the following aspects of the problem of hardware performance monitoring in virtualized environments: Timing: The PAPI timing routines have been extended to support standard real and virtual timers across different Virtual Machine Monitors (VMMs). Standardization allows the same timing code to be used, regardless of the environment in which the application is being run. Component measurements: A variety of PAPI I/O, network, and other shared resource components are being deployed or developed to provide relevant information in virtualized environments. Competition for shared resources can have a significant impact on performance in virtualized environments, and having this information allows applications to adapt and compensate. Virtualization of selected processor hardware counters: A selected set of processor counters considered relevant for application performance analysis and tuning in virtualized environments have been analyzed across VMMs and implemented in a portable manner. Interpretation of data: Hardware counter data needs to be interpreted differently in virtualized environments. Mechanisms for evaluating metrics for a particular environment that correctly quantify the contributions of various factors to the overall performance have been developed. Additionally, PAPI offers capabilities for virtual environments; specifically, it includes components that report VMware statistics and "steal-time" measurements, i.e., data on the time used by other VMs in an oversubscribed system. Steam-time measurements can be included in per-process timing results and can be used to adjust timing measurement to compensate for time stolen by other jobs. Reporting to the user when steal-time is an issue can be a valuable aid in application optimization in cloud environments. The PAPI interface has been widely used by High Performance Computing (HPC) users for many years, drawing on its strength as a cross-platform and cross-architecture API. The extensions to the PAPI hardware counter library for virtual environments allow application and tool developers to use a familiar interface to obtain relevant performance monitoring information for achieving the best possible performance in cloud computing environments.

Agency
National Science Foundation (NSF)
Institute
Division of Computer and Communication Foundations (CCF)
Type
Standard Grant (Standard)
Application #
1117058
Program Officer
Almadena Chtchelkanova
Project Start
Project End
Budget Start
2011-09-01
Budget End
2014-08-31
Support Year
Fiscal Year
2011
Total Cost
$425,000
Indirect Cost
Name
University of Tennessee Knoxville
Department
Type
DUNS #
City
Knoxville
State
TN
Country
United States
Zip Code
37916