Mobile devices are becoming pervasive, yet a persistent gap in hardware capabilities still separates them from desktop machines. To bridge this gap, recent research has turned to cloud-assisted execution as a way of leveraging remote resources to enhance application performance. Code-offloading systems automatically partition applications across resource-constrained devices and more powerful remote nodes to improve execution. Existing approaches, however, only focus on compute resources, ignoring memory and network limitations in mobile environments.
The research objectives of the MobiCloud project extend in three main directions:
Mobile applications are constrained by the available memory of mobile devices. C-RAM is a system that uses cloud-based memory to extend the memory of mobile devices. It splits application state and its associated computation between a mobile device and a cloud node to allow applications to consume more than the available memory, while minimising the performance impact. C-RAM thus enables developers to realise new applications or port legacy desktop applications with a large memory footprint to mobile platforms without explicitly designing them to account for memory limitations. To handle network failures with partitioned application state, C-RAM uses a new snapshot-based fault tolerance mechanism in which changes to remote memory objects are periodically backed up to the device. After failure, the device rolls back execution to continue from the last snapshot. C-RAM supports execution with an application state exceeding available device memory through a user-level virtual memory: objects are loaded on-demand from snapshots in flash memory.
Mobile carriers are struggling to cope with the surge in smartphone traffic. Data transfers between mobile client applications and their Internet backend services contribute significantly to the contention in radio access networks (RANs). Client applications, however, typically transfer unnecessary data because (i) backend service APIs do not support a fine- grained specification of the data actually required by clients and (ii) clients aggressively prefetch data that is never used. EdgeReduce is an automated approach for reducing the data transmitted from backend services to a mobile device. Based on source-level program analysis, it generates application-specific proxiesfor mobile client applications that execute part of the application logic at the network edge to filter data returned by backend API calls and only send used data to the client. EdgeReduce also permits the tuning of aggressive prefetching strategies: proxies replace large prefetched objects such as images by futures, whose access by the client triggers the retrieval of the object on-demand.
Fast access to backend services is crucial for many mobile apps. For example, emerging augmented-reality devices such as Google Glass require fast access to powerful servers to achieve seamless interactivity with the real world; and online gaming clients need to communicate in real-time through centralised game services. A major obstacle to achieving this hyper responsiveness is the performance of the underlying network that interconnects mobile clients and services. Network effects cannot be anticipated, let alone controlled, due to the unpredictability of wide-area networks and the fact that users roam between different networks. NOMAD is a distributed edge cloud platform that decouples services from fixed hosting locations to enable services to migrate seamlessly between edge locations, thus adapting to changes in network conditions and user roaming on-the-fly.