Using History to Improve Mobile Application Adaptation

Prior work has shown the value of changing application fidelity to adapt to varying resource levels in a mobile environment. Choosing the right fidelity requires us to predict its effect on resource consumption. In this paper, we describe a history-based mechanism for such predictions. Our approach generates predictors that are specialized to the hardware on which the application runs, and to the specific input data on which it operates. We are able to predict the CPU consumption of a complex graphics application to within 20% and the energy consumption of fetching and rendering web images to within 15%.

A key strategy in mobile computing is adapting application behavior to resource availability and user goals. Changing application fidelity — the quality of results presented to the user — has been shown to be effective in adapting application resource consumption to varying resource availability [7, 11, 12]. Fidelity is an application-specific notion of the “goodness” of a computed result or data object: for example, the JPEG Quality Factor of a lossily compressed image, or the precision bound of a floating point computation. Naturally, there is a tradeoff between fidelity and resource consumption: a lower fidelity results in a lower resource consumption, but at the cost of presenting a more degraded result to the user. Fidelity is not always a single real number: there could be multiple fidelity metrics, each of which could be discrete or continuous. The ultimate goal of fidelity adaptation is to improve a mobile user’s computing experience by delivering results quickly, with low battery drain and little distraction of the user. Consider a graphics computation that operates on a 3-D model in a mobile augmented reality application. The latency of the computation depends both on the CPU consumed by the computation and the CPU demands of other applications. The CPU consumption depends on the fidelity — the resolution of the model. If we could predict the CPU consumption as a function of fidelity, we could combine this with CPU load information to predict latency. This lets us characterize the tradeoff between fidelity and latency, and to pick good operating points: for good interactive response, we might always pick the highest fidelity that keeps the latency below 200 ms. In this paper we show how history-based prediction enables the system to learn an application’s behavior and predict its resource consumption. We have augmented Odyssey , an

platform for adaptation, with a history-based prediction system that monitors, logs, and predicts application resource consumption as a function of the fidelity. Our initial experience suggests that historybased prediction is feasible. We can predict to within 20% the CPU consumption of a 3-D graphics computation — typical of those found at the heart of augmented reality applications. We can also predict the energy consumption of fetching lossily compressed web images to within 15%. Our current prototype has a CPU overhead of 0.22% for a typical application; we expect the overhead to be even lower in a production version of the code.

Free download research paper