The recent emergence of cloud computing is making the vision of utility computing
realizable, i.e., computing resources and services from a cloud can be delivered, utilized, and paid for in the same fashion as utilities like water or electricity. Current cloud service providers have taken some steps towards supporting the true pay-as-you-go or a utility-like pricing model, and current research points towards more fine-grained allocation and pricing of resources in the future. We consider streaming applications, where the data is generated by external sources.
This, however, creates new resource provisioning problems. Because of the pay-as-you-go model, resource provisioning should be performed carefully, keeping resource costs to a minimum, while meeting application needs.
In the first part of our work, we focus on such environments where one needs to avoid both resource under-provisioning (leading to application slowdown) and over-provisioning (leading to unnecessary resource costs). The goal is to carefully allocate resources so that the processing rate can match the rate of data arrival. We have developed a solution that can handle unexpected data rates, including the
transient rates.
In the second part of our work, we focus on streaming applications which have adaptable parameters that provide flexibility in the level of computational accuracy. We consider the problem where application processing is associated with a fixed accuracy goal. The problem then is to automatically adapt the application-specific parameters to meet the specific accuracy goal, and then dynamically converge to near optimal resource allocation required. We have developed a solution that can handle various application accuracy goals and can adapt both to the accuracy needs, and to the corresponding resource allocation required. This solution can also handle flows with unexpected changes in the data distribution
characteristics and/or rates. We evaluate our approach using two streaming applications in a virtualized environment.