Battery life is quickly becoming a limiting factor for smartphones and tablets as new applications demand more computationally powerful devices. While the hardware used in mobile devices is constrained by energy and form factor limitations, remote servers offer vast computation power without restrictive energy sensitivity. We developed TOE, the Transparent Offloading Engine, to mesh the computation ability of mobile devices with remote servers. TOE may be implemented for any operating system that uses a managed runtime (e.g. Java Runtime Environment, Microsoft Common Language Runtime).
TOE is capable of identifying computationally-intensive code via dynamic profiling and partitioning. TOE does not require hand annotation or any source code modifications to operate. The engine introduces a new technique, heap synchronization, that allows efficient state transfer between endpoints during execution. This technique ensures that TOE adheres to the memory management rules of the targeted runtime, which means TOE properly supports memory sharing. This permits TOE to fully support offloading of multiple threads, and also allows many endpoints (not just a single client-server pair) to share data coherently. TOE's dynamic profiling and partitioning prevent performance degradation and typically improve the end-user experience when offloading is occurring, thus providing a user experience that is transparent.
A prototype of TOE was implemented for the Dalvik Virtual Machine within the Google Android platform, and was tested using a Samsung Captivate smartphone as a client and an eight core machine as a server. A suite of eleven benchmarks, including ten applications from the Android Market for which no source code was available, were used for testing. These applications, which included trip planners, image editors, audio filters, games, math and science tools, and a physics simulator, were all found to have some computationally-intensive activity that may benefit from offloading. We found that TOE generated speedups of up to 220X, averaging 6.2X. An average energy savings of 4.5X was observed when using a WiFi connection. No noticeable performance degradation occurred when the client connected to the server using a cellular 3G connection.
More information about this code offloading project can be found here: http://www-personal.umich.edu/~msgsss/comet.html