Increased platform heterogeneity and varying resource availability in distributed systems motivate the design of i>resource-aware applications, which ensure a desired performance level by continuously adapting their behavior to changing resource characteristics. In this paper, we describe an application-independent adaptation framework that simplifies the design of resource-aware applications. This framework eliminates the need for adaptation decisions to be explicitly programmed into the application by relying on two novel components: (1) a i>tunability interface, which exposes adaptation choices in the form of alternate application configurations while encapsulating core application functionality; and (2) a i>virtual execution environment, which emulates application execution under diverse resource availability enabling off-line collection of information about resulting behavior. Together, these components permit automatic run-time decisions on i>when to adapt by continuously monitoring resource conditions and application progress, and i>how to adapt by dynamically choosing an application configuration most appropriate for the prescribed user preference. We evaluate the framework using an interactive distributed image visualization application and a parallel image processing application. The framework permits automatic adaptation to changes in execution environment characteristics such as available network bandwidth or data arrival pattern by choosing a different application configuration that satisfies user preferences of output quality and timeliness.
['Fangzhe Chang', 'Vijay Karamcheti']
A Framework for Automatic Adaptation of Tunable Distributed Applications