To an interactive application, a distributed computing environment is both enticing and challenging. It provides myriad resources for the application to get its work done and please its users, but the supply of those resources varies dynamically because they are shared with other applications and users, and cannot be reserved. Furthermore, the resource demand of an interactive application varies greatly because the application is driven directly by end-users. To achieve good interactive performance, the application or its supporting middleware must adapt to this dynamicity, ideally basing its adaptation decisions on the future behavior of the environment and the application.
My research is about understanding and predicting that dynamic behavior. My goal is to present applications and middleware with accurate predictions with which they can make enlightened adaptation decisions that improve the user experience of applications such as scientific visualizations and games. I think of distributed computing environments and applications as natural systems whose properties can be discovered and validated through empirical study, and then exploited by applications.
My approach is to collect large families of representative trace data, study them using rigorous techniques, such as time series analysis, from modern statistics, artificial intelligence, complex systems theory, game theory, and other areas. The pure scientific results I discover using these methods feed into the selection of statistically appropriate and technically feasible predictive models and the construction of on-line prediction systems that applications can use directly.
I have applied my approach to the prediction of host load and the running time of compute-bound tasks, and have shown how such predictions can be used by an application to perform effective real-time scheduling of its tasks. I have also built a toolkit, RPS, to aid in constructing prediction systems.
I am now extending this work in several directions. First, I am looking at characterizing and predicting network behavior. Second, I am studying ways to characterize and predict the resource demands of interactive applications. Third, I am studying the use of relational data models and RDBMS systems for representing this performance data and enabling powerful application queries. In all of these directions, there is significant fascinating work to be done, including analytic modeling, statistical studies, and system and application building.
I run the Prescience Lab, where you can learn about my and my students' work. I have some rapidly aging notes on the background I want my students to acquire. I also am affliated with the Remos and Dv projects at CMU. In a previous life, I worked in the Fx and iWarp projects there.