  Smartphones have exploded in popularity in recent years, becoming ever more
sophisticated and capable. As a result, developers worldwide are building
increasingly complex applications that require ever increasing amounts of
computational power and energy. In this paper we propose ThinkAir, a framework
that makes it simple for developers to migrate their smartphone applications to
the cloud. ThinkAir exploits the concept of smartphone virtualization in the
cloud and provides method level computation offloading. Advancing on previous
works, it focuses on the elasticity and scalability of the server side and
enhances the power of mobile cloud computing by parallelizing method execution
using multiple Virtual Machine (VM) images. We evaluate the system using a
range of benchmarks starting from simple micro-benchmarks to more complex
applications. First, we show that the execution time and energy consumption
decrease two orders of magnitude for the N-queens puzzle and one order of
magnitude for a face detection and a virus scan application, using cloud
offloading. We then show that if a task is parallelizable, the user can request
more than one VM to execute it, and these VMs will be provided dynamically. In
fact, by exploiting parallelization, we achieve a greater reduction on the
execution time and energy consumption for the previous applications. Finally,
we use a memory-hungry image combiner tool to demonstrate that applications can
dynamically request VMs with more computational power in order to meet their
computational requirements.
