In recent years, weak mobile devices such as smartphones, mobile Internet devices, and netbooks have become popular. Examples include the Apple iPhone , Google Android Phone [1, 7], RIM Blackberry Phone , and netbooks from several vendors. Tablets are also gaining attraction thanks to Apple’s new iPad . Moreover, weak devices are embedded in vehicles and TVs (e.g., Ford SYNC  and Google TV ). These devices support exciting new applications that provide a connected Internet experience to users. Now users manage their Facebook and Twitter notiﬁcations; capture, edit, and upload photos and videos; handle their ﬁnances; and play computer games. Users also have growing demand for running more resource-demanding applications, the kinds of applications they run on laptops or desktops, such as rich media applications using diverse inputs like cameras and sensors. Examples include photo and video editing and synthesis, 3D modeling for constructing avatars, scene recognition, object recognition, image search, and augmented reality [12, 13, 18, 23]. Currently these applications running on weak devices are structured such that they are statically partitioned between the weak device and a server running in the cloud. Two representative application partitions are as follows. First, most of an application’s processing is done at the server(s) in the
cloud, and the end-user device runs simple tasks such as UIs, acting like a thin client. For example, Facebook and Tweeter clients belong to this category. Second, most of an application’s processing is performed at the client as exhibited in interactive, graphics-intensive games. These diﬀerent partitions incur diﬀerent costs (e.g., execution time, energy consumption, etc.). However, partitioning applications statically does not provide optimal user experience as more and more applications are used in diverse environments and inputs. That is, there is no single partitioning that ﬁts all due to environment heterogeneity (device, network, and cloud) and workload. Furthermore, there are many partitioning choices. For example, for an application that runs both on an Android phone and on an Android netbook, the application may run better in each device by using diﬀerent partitioning between device and cloud. An Android phone application may run better in diﬀerent network types by using diﬀerent partitioning that incurs diﬀerent computing and communication cost. Our vision is a system that can seamlessly adapt to different environments and workloads by dynamically instantiating what partitioning to use between weak devices and clouds. In Section 2, we argue for the case for dynamic partitioning for diﬀerent environments and workloads. Section 3 presents our formulation of dynamic partitioning problems, and Section 4 presents the system support for dynamic partitioning and key research challenges at a high level. We discuss related work in Section 5 and conclude in Section 6.
THE CASE FOR DYNAMIC PARTITIONING
Permission to make digital or hard copies of all or part of this work for personal or classroom use is granted without fee provided that copies are not made or distributed for proﬁt or commercial advantage and that copies bear this notice and the full citation on the ﬁrst page. To copy otherwise, to republish, to post on servers or to redistribute to lists, requires prior speciﬁc permission and/or a fee. MCS June 15, 2010, San Francisco, CA, USA. Copyright 2010 ACM 978-1-4503-0155-8 ...$10.00.
To facilitate our discussion, we take an example application that performs image matching algorithms used for image search, object recognition, and augmented reality. Image matching consists of multiple processing stages in sequence — image feature generation, similarity calculation against a database, and classiﬁcation. The feature generation stage such as SIFT  or SURF  is further composed of keypoint extraction, local computation to decide...