article

Developers: Make energy efficiency a part of your app development environment

by: Staff, August 31, 2012
201103_ARO_article_top

 

When apps aren’t designed to work efficiently with the cellular network, performance suffers for the end user, batteries drain faster, and network resources are not well utilized.

The issue has to do with the complex interactions between an app and the cellular network, specifically in how apps connect to the network, how long they maintain those connections, and how they download and transmit data. If network connections or data transmissions are not handled in a way that takes into account the particular characteristics of the cellular network—namely constrained resources—app performance will suffer.  

OpenSource ARO and its accompanying documentation are available now for downloading from the AT&T Developer Program site.

Resources are constrained in two ways that directly affect app performance: the device’s small battery, and the cell tower’s fixed amount of bandwidth that must be shared among a potentially large number of network users. These constraints make it necessary to allocate resources on an as-needed basis and conserve when possible.

When an app requests a network connection, for instance, there is no ready-made channel just waiting to immediately transmit data. Instead a channel must be allocated, and this requires the cell tower to first calculate whether it has enough current bandwidth to support an additional channel. This takes time.

The delay is small (1-2 seconds), but if an app makes frequent connections, these delays add up and become noticeable to the user.

Downloading data from faraway servers also entails additional delays; these delays exist also in the wired environment, but the delays are longer in the cellular network due to its architecture.)

Once established, a network connection requires significant battery power; the longer the connection, the more battery power consumed. It is therefore advantageous to transmit as much data in bursts, rather than slowly transmitting it in a single stream. However, many apps are not designed to send in bursts because developers don’t know they need to. Because APIs used by developers are intentionally designed to hide lower-level implementation details, developers lack visibility into the lower-layer protocol stacks where connections and data transmissions occur.

ARO is a diagnostic tool that profiles an app’s energy usage and pinpoints inefficiencies in how apps connect to the network and transmit data.

The problems weren’t even generally understood until AT&T researchers working with colleagues from the University of Michigan undertook an in-depth, comprehensive investigation of the end-to-end data transmission paths, discovering a direct relationships between inefficient use of cellular resources and poor app performance. They found apps that connected frequently to the network, even during the course of a single transmission, exacerbating the latencies. They found apps that drained the battery by maintaining connections even when no data was being transmitted. Other problems had to do with the way data was transmitted and cached, and the amount (or lack) of prefetching. (For more information about the investigation, see A Call for More Energy-Efficient Apps.)

The result of the investigation was the AT&T Application Resource Optimizer (ARO). Developed by AT&T Researchers and the AT&T Development Program group, ARO is a diagnostic tool that profiles an app’s energy usage and pinpoints inefficiencies in how apps connect to the network and transmit data. Visualizations produced by ARO help developers see what events are occurring in the lower layers, and how those events might be affecting the performance of their apps.

201209_ARO-vizualization

ARO identifies events occurring in each layer and displays the information as visualizations so developers can see how events impact one another and affect app performance.

 

ARO also makes specific optimization recommendations for an individual app. The solutions, once identified are not hard to implement, and include steps such as bundling packets, using HTTP pipelining, timing the delivery of packets more efficiently, using persistent connections, or the proper way to do (or not do) caching. The difficulty until now has been identifying the specific problem. ARO now fills that role.

Last year, AT&T released AT&T ARO as a diagnostic tool so developers could optimize their existing apps.

This year, AT&T is releasing ARO as open-sourced software so developers can make energy-efficiency part of their app development process, and also expand ARO’s capabilities for their own requirements.

OpenSource ARO and its accompanying documentation are available now for downloading from the AT&T Developer Program site.

FAQs about Open-Source ARO

What is an energy-efficient app?
An energy-efficient app is adapted for the characteristics of the cellular network, and designed to transmit data in a way that both limits the amount of time connected to the network—to conserve limited battery power and cellular resources—and minimizes the number of connections required (thus reducing the latencies entailed by setting up network connections).

What is AT&T ARO?
The AT&T Application Resource Optimizer (ARO) is a free app-profiling and diagnostic tool that analyzes how an app connects to the cellular network and makes specific recommendations so developers can optimize their apps for the cellular network.

ARO is available as a tool and as open-source software. 

How does ARO work?
The ARO collector component runs on the device to collect traces as the app is being used. The ARO Analyzer looks at the traces and  identifies events happening in each layer, displaying these events in a visualization so developers can see how the events at different layers impact one another. 

These visualizations, along with specific recommendations provided by ARO, give developers the necessary insight into how to correct for inefficiencies and thus improve the performance of their app.

License type
ARO is offered under Apache License, Version 2.0

Where to go to download ARO?
Go to the  AT&T Developer Program site.

 

Best practices for app developers

Performance problems in apps are due to a variety of causes. ARO helps identify the specific inefficiencies of an app, but there are general practices that are always good to follow:

  • Transmit data in a single burst and then end the connection. (The exception is for large video files, which should be downloaded in segments at regular intervals of 2 to 5 minutes.)
  • Use prefetching (though not too much; it doesn’t save bandwidth to download data that is not needed).
  • Upgrade to HTTP 1.0.
  • Offload to WiFi when possible.
  • Avoid downloading duplicate content.
  • Group multiple simultaneous connections from the same server.