Skip to main content

Build Status made-with-python PyPI version PyPI license PyPI status DOI

E-MANAFA: Energy Monitor and ANAlyzer For Android

E-MANAFA is a plug-and-play software model-based tool for performing fine-grained estimates of energy consumption on Android devices. E-Manafa estimates system-level and per-component energy consumption, by extracting information from the following sources:

  • power_profile.xml: Device-specific file provided by manufacturers containing current consumption per component state;
  • batterystats: Tool from Android framework that logs each power-related event that occurs between device charges;
  • Perfetto: System-wide profiling for Linux and Android, that profiles high-frequency data, such as CPU frequency.

Note: Manufacturers not always supply information about the current consumed by an individual component in the power profile file. Use this information if it accurately represents the current drawn from the device battery in practice. The file can also be derived using external apparatus such as Monsoon. Google provides a set of guidelines to estimating the current of each component (https://source.android.com/devices/tech/power/component)

Documentation

https://greensoftwarelab.github.io/E-MANAFA/modules.html

SETUP

In order to run this tool, the following resources are required:

Installation

1. Via python-pip

pip install manafa

1.1 define environment variables

In order to run this tool, there are at least 2 env. variables that need to be defined in the shell startup script (e.g .bashrc or .bash_profile file)

export ANDROID_HOME=$HOME/<your-android-instalation-folder>/ 
export PATH=$ANDROID_HOME/platform-tools:$PATH

2. From sources

2.1 Clone repo

$ git clone https://github.com/greensoftwarelab/E-MANAFA.git

2.2 Replicate the environment

Install virtual virtualenv enviroment (via python-pip):

$ python -m pip install --user virtualenv

2.3 Replicate locally the dev virtualenv

$ virtualenv env/

2.4 Activate the virtual environment

$ source env/bin/activate

2.5 Install required packages

$ pip install -r requirements.txt

2.6 define environment variables

In order to run this tool, there are at least 2 env. variables that need to be defined in the shell startup script (e.g .bashrc or .bash_profile file)

export ANDROID_HOME=$HOME/<your-android-instalation-folder>/ 
export PATH=$ANDROID_HOME/platform-tools:$PATH

Usage

Command line

$ emanafa [-p|--profile <prof>] 
          [-t|--timezone <tz>] 
          [-pft|--perfettofile <pf>] 
          [-bts|--batstatsfile <bf>] 

From project's root

$ python3 manafa/main.py [-p|--profile <prof>] 
                     [-t|--timezone <tz>] 
                     [-pft|--perfettofile <pf>] 
                     [-bts|--batstatsfile <bf>] 

Source

# Example 
em = EManafa()
em.init()
em.start()
do_work_to_profile() # e.g time.sleep(10)
em.stop()
em.parse_results()
begin = manafa.perf_events.events[0].time  # first sample from perfetto
end = manafa.perf_events.events[-1].time  # last sample from perfetto
p, c, z = em.get_consumption_in_between(begin, end)
out_file = em.save_final_report(begin)
print(f"TOTAL: {p} Joules")

Associated publications:

@inproceedings{
          10.1145/3551349.3561342,
          author = {Rua, Rui and Saraiva, Jo\~{a}o},
          title = {E-MANAFA: Energy Monitoring and ANAlysis Tool For Android},
          year = {2023},
          isbn = {9781450394758},
          publisher = {Association for Computing Machinery},
          address = {New York, NY, USA},
          url = {https://doi.org/10.1145/3551349.3561342},
          doi = {10.1145/3551349.3561342},
          articleno = {202},
          numpages = {4},
          location = {Rochester, MI, USA},
          series = {ASE22}
}

Metadata

Release files for manafa 0.4.14

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for manafa 0.4.14
File Size Uploaded
manafa-0.4.14.tar.gz 25.8 MB Details

Release files / manafa-0.4.14.tar.gz

Download URL manafa-0.4.14.tar.gz
Size 25.8 MB
Tags Source
SHA-256 checksum
How to use checksums
5a9cf61d2758d52d2b64000fb7c46ab18f98f0df5c3f83fc4fd410548b827e14
BLAKE2b-256 checksum
How to use checksums
6fa41cf10190c4671006a8fac081c5e77c293e741a06de5fbea7298fd93b4fe5
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/3.4.1 importlib_metadata/8.7.0 pkginfo/1.12.1.2 requests/2.32.4 requests-toolbelt/1.0.0 tqdm/4.67.1 CPython/3.9.11

Release history Release notifications | RSS feed

This release

0.4.14 This release

1 release file

0.4.13

1 release file

0.4.12

1 release file

0.4.10

1 release file

0.4.9

1 release file

0.4.8

1 release file

0.4.7

1 release file

0.4.4

1 release file

0.4.3

1 release file

0.4.2

1 release file

0.4.0

1 release file

0.3.138

1 release file

0.3.137

1 release file

0.3.136

1 release file

0.3.135

1 release file

0.3.134

1 release file

0.3.132

1 release file

0.3.130

1 release file

0.3.129

1 release file

0.3.128

1 release file

0.3.127

1 release file

0.3.121

1 release file

0.3.120

1 release file

0.3.119

1 release file

0.3.118

1 release file

0.3.117

1 release file

0.3.116

1 release file

0.3.115

1 release file

0.3.114

1 release file

0.3.113

1 release file

0.3.112

1 release file

0.3.111

1 release file

0.3.109

1 release file

0.3.108

1 release file

0.3.107

1 release file

0.3.106

1 release file

0.3.105

1 release file

0.3.103

1 release file

0.3.102

1 release file

0.3.101

1 release file

0.3.100

1 release file

0.3.99

1 release file

0.3.98

1 release file

0.3.97

1 release file

0.3.96

1 release file

0.3.95

1 release file

0.3.94

1 release file

0.3.93

1 release file

0.3.92

1 release file

0.3.91

1 release file

0.3.90

1 release file

0.3.89

1 release file

0.3.88

1 release file

0.3.87

1 release file

0.3.86

1 release file

0.3.85

1 release file

0.3.84

1 release file

0.3.83

1 release file

0.3.82

1 release file

0.3.81

1 release file

0.3.80

1 release file

0.3.77

1 release file

0.3.76

1 release file

0.3.75

1 release file

0.3.74

1 release file

0.3.73

1 release file

0.3.72

1 release file

0.3.71

1 release file

0.3.70

1 release file

0.3.69

1 release file

0.3.68

1 release file

0.3.66

1 release file

0.3.65

1 release file

0.3.64

1 release file

0.3.63

1 release file

0.3.62

1 release file

0.3.61

1 release file

0.3.60

1 release file

0.3.6

1 release file

0.3.5

1 release file

0.3.3

1 release file

0.3.2

1 release file

0.3.1

1 release file

0.3.0

1 release file

0.2.989

1 release file

0.2.983

1 release file

0.2.981

1 release file

0.2.99

1 release file

0.2.98

1 release file

0.2.97

1 release file

0.2.96

1 release file

0.2.95

1 release file

0.2.92

1 release file

0.2.91

1 release file

0.2.85

1 release file

0.2.9

1 release file

0.2.7

1 release file

0.2.6

1 release file

0.2.4

1 release file

0.2.3

1 release file

0.2.2

1 release file

0.2.1

2 release files

0.2.0

3 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page