Energy Efficiency

Power consumption is a major consideration for mobile devices, in order to conserve their battery life, so it is very important to ensure that Serval Mesh (app for Android) and its main component, Serval DNA, consume as little power as possible, especially while idle.

High level plan

Several development activities are needed in order to properly and fully address the issue of power consumption:

  1. establish tools and methods for measuring power consumption on the various platforms (Android, Mesh Extender, etc.)
  2. profile the power demands of different software activities and modes
  3. prioritise the work needed to reduce power consumption
  4. tackle the areas of highest priority using techniques such as:
    1. suppress periodic wakeups while idle
    2. optimise CPU-intensive tasks such as cryptographic and database operations
    3. reduce unnecessary work such as logging
    4. replace redundant re-computations using persistent caching and better data models
    5. replace polled conditions with sleep states and event-driven wakeups
    6. replace buffer-to-buffer copying between software subsystems with a common buffer layer to reduce data fragmentation and movement
    7. redesign background synchronisation protocols to minimise traffic while in steady state
    8. turn off Wi-Fi radio whenever possible
    9. react to low-power states by reducing activity

Work to date

To date, little effort has been spent on the power efficiency of the Serval software, but the software architecture has been developed with it in mind, for example the file-descriptor-based poll(2) main loop design in Serval DNA, implemented in fdqueue.c.