MAUI: Making Smartphones Last Longer with Code Offload
Authors
Eduardo Cuervo, Aruna Balasubramanian, Dae-ki Cho, Alec Wolman, Stefan
Saroiu, Ranveer Chandra, Paramvir Bahl
Date
MobySys'10 - International Conference on Mobile Systems, Applications
and Services, June 2010
Novel Idea
Offloading programmer-marked methods in smartphone applications to
servers according to a global optimization function that maximizes
energy savings.
Main Results
The paper presents a system called MAUI, which moves parts of
smartphone applications to servers, allowing energy savings. The
decision on whether to execute methods locally or remotely is made by
an optimization system running on a server, which depends on
measurements done locally. When a code offload is decided, the local
state required to start the method in the server is also passed.
Impact
The system not only allows smartphone applications to save power, also
allows them to execute applications that use more resources than those
available locally.
Evidence
The structure of the argumentation is as follows. The discussion
starts by characterizing the problem, also analyzing how 3G and high
RTTs would impact code offload. Then, the paper describes the
architecture (including details on how to run the code, and how to
identify parts that might migrate). They describe how the local
measurements are made (including profiling overhead), how the
optimization problem is modeled and finally evaluate the system.
The evaluation compares energy usage at WiFi/3G, and with different
RTTs, but also analyze performance and server load (CPU/memory). They
also analyze how much difference using incremental affects on local
state size on code offload. The results are interesting, except from
some particular cases.
Comments regarding the effectiveness of the argumentation/evaluation
are on the Questions+Criticism section, as usual.
Prior Work
They cite Odyssey, Spectra, Chroma, and mention that MAUI automates
"many" steps for partitioning applications.
They then mention Emerald, Network Objects, Obliq, Rover and Agent
Tcl, and mention that these (1) don't "hide distribution from the
programmer"; (2) don't "focus on automating migration to optimize for
energy consumption".
They also cite other systems (Cign, Hydra, Wishbone), somehow implying
that their ideas need adaptation to the current scenario.
Competitive Work
They mention an alternative approach, of using a distributed
application. Also, incorporating OS support for process migration is
discussed. They also cite the OLIE system, which they say that focuses
on "overcoming the memory resource constraints", instead of saving
energy.
Reproducibility
I believe the experiments are reproducible, but apparently with
different applications (I don't think the applications in the paper
are specifically mentioned and/or are freely available). However, I
believe it is possible to find applications with similar
characteristics to the ones considered in the paper (specially because
nowadays there has been an enormous variety of smartphone
applications). Therefore, I would say that the experiments are still
reproducible.
Questions + Criticism
[Criticism] This is a very good paper. It has merits on its
presentation, readability, and quality of argumentation.
I missed more discussion on how much *energy* is spent under different
strategies on calculating deltas. They somehow imply the CPU usage
when they analyze how many FPS the game application sustains (sec
5.2.1), and network usage (sec 7.2.3), and these both imply energy
impact. [Question] But, how much exactly the delta calculation spends
on energy? Up to what point these strategies are "viable" as memory
and CPU resources on smartphones become more available, but battery
(apparently) doesn't?
Anyway, I think this is a remarkably good paper.
Ideas for Further Work
There could be a cloud-based service where application developers
preload application code into it such that:
(1) it can provide a way for the developers to specify policies that
"hint" the MAUI server on how to make decisions about offloading;
(2) keep a history of code executions across different clients that
use the service to increase this hint accuracy (for example: "after
this execution, if the client profiler asks you for executing method
X, accept it -- it has been good for 93% of the other users, and the
delta is fairly small"). MAUI uses history on the program profiling,
but why not use it on the server side?
On Mon, Nov 22, 2010 at 7:59 PM, Rodrigo Fonseca
<rodrigo...@gmail.com> wrote:
Paper Title |
MAUI: Making Smartphones Last Longer with Code Offload |
Author(s) |
Eduardo Cuervo, Aruna Balasubramanian, Dae-ki Cho, Alec Wolman, Stefan Saroiu, Ranveer Chandra, Paramvir Bahl |
Date | 2010 |
Novel Idea | Use remote execution to increase the performance capabilities and battery life of mobile devices. Moreover, use dynamic profiling with input from the phone's networking services to determine which functions to run remotely. |
Main Result(s) |
They describe MAUI, a framework that implements the strategy described above. It leverages the .NET CLR to enable process migration across the network despite the differing CPU architectures used on mobile devices and cloud servers. It has a number of components: To know which parts of an application are available for migration, MAUI requires that the programmer annotate all remoteable methods. They chose this method over having local annotations (which might result in better performance, since there are likely to be fewer) to prevent program semantics changing if an annotation is forgotten. MAUI uses the custom attribute feature of the .NET CLR to identify these marked remoteable methods at compile time. For each such remoteable method, MAUI generates a wrapper that will serialize all the state it needs, send it to the remote version of the application, and then update the local state with the new state returned by the remote call. They currently serialize almost everything the method could possibly want, which is pretty bad. If a remote method calls an unremoteable method, the temporary state is sent back to the device, and the wrapper handles calling the local method and then packing the new state back off the the server so the remote function can be completed. When contact to the server is lost, MAUI ensures that it is possible to execute the remoteable method locally instead (it also offers the possibility of looking for another MAUI server). It can make this guarantee because state is only transferred at the start and end of methods (they claim. See 'questions'.) and they tell programmers not to mark as remoteable any methods with 'real-world' side effects (ie, effects outside the address space of the program itself, such as methods that update other servers, or that manipulate physical output devices). The next component is the Profiler, which instruments each method to determine how much battery power it will take to execute, which they base off the number of CPU cycles it requires. The Profiler also observes the networking environment, and passes its findings into the Solver. This aspect led them to some very interesting results, such as the fact that Power Saving Mode actually uses more power at low network latencies due to TCP slow start. The Solver uses optimization techniques to decide from the output of the Profiler whether or not to offload each method. |
Impact | Hopefully a lot, soon! This was a very impressive paper, and despite seeming like a kind of unwieldy idea, it looks like it really can be made to work. |
Evidence | They have a very good Evidence section, in which they evaluate MAUI on a variety of existing applications, and show both concrete benefits, and the point at at which MAUI makes things worse, both for energy consumption and performance. |
Prior Work | A bunch of VM migration stuff. |
Reproducibility | No code given, but no secret sauce withheld either - it would take about as much work as they already did, but the information to reproduce it is mostly here. |
Question | I don't really understand how failure tolerance works -- if a remote method has to call a local method, state must be transferred during the execution of a method, which seems to violate their invariant. |
Criticism | They have a whole paragraph dedicated to why 3G has a terrible amount of battery consumption, and isn't even worth it -- and then they conclude that paragraph by saying MAUI uses both, with no explanation. ??? [Having now read the evaluation section, which seems to show that 3G almost always hurts performance, but MAUI figures that out and doesn't use it, this makes a little more sense, but still -- is it even worth considering? They don't show a case where offloading over 3G is a good idea.] |
Ideas for further work | Further research into detecting at runtime what objects need to be serialized seems like both a necessity to make MAUI really perform well in the field, and also a meaty research topic with many broader applications. |
Authors: Eduardo Cuervo, Aruna Balasubramanian, Dae-ki Cho, Alec
Wolman, Stefan Saroiu, Ranveer Chandra, and Paramvir Bahl
Date: MobiSys 2010
Novel idea: By offloading mobile code to non-local infrastructure, we
can reduce energy utilization and improve performance on mobile
devices. In some cases, we can even run resource-intensive
applications on a mobile device which would be impossible to run
otherwise.
Main results: The authors' implementation uses the .NET CLR and
depends on programmers marking certain methods as "remoteable."
Proxies on both the client and server side handle control and data
transfer for offloaded methods. Finally device, program, and network
profiling data is collected and used by the MAUI solver in order to
determine which methods should execute locally and which should
execute remotely.
Evidence: The authors evaluate MAUI on four applications and show its
energy savings and performance improvements (which were in several
cases substantial). They also show that MAUI can be used to run a
resource-intensive application on a mobile device which would be
impossible to run otherwise. The authors also provide a serious of
microbenchmarks to show that MAUI's solver runs with low overhead and
that incremental deltas are effective at reducing MAUI's data transfer
overhead.
Prior work: The authors mention previous work in the area of program
partitioning (Spectra and Chroma).
Competitive work: Unlike CloneCloud, MAUI is not designed to handle
multi-threaded applications.
Reproducibility: It does not appear that source code is available.