In modern computers with multiple CPUs per chip, multiple levels of computer memory are shared among the CPUs. This sharing may cause varying response times for computer applications, potentially affecting their usability. For instance, a video streaming application that has unpredictable response times due to interference from other applications may be essentially unusable. Thus, the computer system must attempt to allocate shared memory resources equitably to increase response consistency. Virtual Private Machines (VPMs), in which shared computer resources are partitioned to give the illusion that a program is running on a single physical CPU running in isolation, are one method to provide response consistency. This research involves the development of software modeling techniques to predict the memory requirements of applications run on modern computers and using those predictions to guide memory resource allocation to provide consistent, predictable performance.
The focus of this research consists of the development of reuse-distance-based memory locality analysis for multi-threaded applications to predict the resource requirements of those applications. This research will apply the new memory locality models to manage the cache and bandwidth requirements for multi-threaded applications run on a VPM within a multi-programmed environment. Specifically, this research will examine reuse distance for Partitioned Global Address Space (PGAS) applications written in Unified Parallel C (UPC). The research will investigate the effects of the number of threads used per application on per-thread data size and the effect on reuse distance of shared data caused by thread interaction. The result will be novel solutions to memory locality analysis for multi-threaded applications while allowing the compiler to predict and specify the resources needed to give multi-threaded applications targeted performance.