DXR is a code search and navigation tool aimed at making sense of large projects. It supports full-text and regex searches as well as structural queries.

Mercurial (df596657bebc)

VCS Links

Line Code
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112
:mod:`mozpower` --- Power-usage testing
=======================================

Mozpower provides an interface through which power usage measurements
can be done on any OS and CPU combination (auto-detected) that has
been implemented within the module. It provides 2 methods to start
and stop the measurement gathering as well as methods to get the
result that can also be formatted into a perfherder data blob.

Basic Usage
-----------

Although multiple classes exist within the mozpower module,
the only one that should be used is MozPower which is accessible
from the top-level of the module. It handles which subclasses
should be used depending on the detected OS and CPU combination.

.. code-block:: python

    from mozpower import MozPower

    mp = MozPower(
        ipg_measure_duration=600,
        sampling_rate=1000,
        output_file_path='tempdir/dataprefix'
    )
    mp.initialize_power_measurements()

    # Run test TEST_NAME

    mp.finalize_power_measurements(
        test_name=TEST_NAME,
        output_dir_path=env['MOZ_UPLOAD_DIR']
    )

    # Get complete PERFHERDER_DATA
    perfherder_data = mp.get_full_perfherder_data('raptor')

All the possible known errors that can occur are also provided
at the top-level of the module.

.. code-block:: python

    from mozpower import MozPower, IPGExecutableMissingError, OsCpuComboMissingError

    try:
        mp = MozPower(ipg_measure_duration=600, sampling_rate=1000)
    except IPGExecutableMissingError as e:
        pass
    except OsCpuComboMissingError as e:
        pass


.. automodule:: mozpower

.. _MozPower:

MozPower Interface
------------------

The following class provides a basic interface to interact with the
power measurement tools that have been implemented. The tool used
to measure power depends on the OS and CPU combination, i.e. Intel-based
MacOS machines would use Intel Power Gadget, while ARM64-based Windows
machines would use the native Windows tool powercfg.

MozPower
````````

.. autoclass:: mozpower.MozPower

Measurement methods
+++++++++++++++++++
.. automethod:: MozPower.initialize_power_measurements(self, **kwargs)
.. automethod:: MozPower.finalize_power_measurements(self, **kwargs)

Informational methods
+++++++++++++++++++++
.. automethod:: MozPower.get_perfherder_data(self)
.. automethod:: MozPower.get_full_perfherder_data(self, framework, lowerisbetter=True, alertthreshold=2.0)

IPGEmptyFileError
`````````````````
.. autoexception:: mozpower.IPGEmptyFileError

IPGExecutableMissingError
`````````````````````````
.. autoexception:: mozpower.IPGExecutableMissingError

IPGMissingOutputFileError
`````````````````````````
.. autoexception:: mozpower.IPGMissingOutputFileError

IPGTimeoutError
```````````````
.. autoexception:: mozpower.IPGTimeoutError

IPGUnknownValueTypeError
````````````````````````
.. autoexception:: mozpower.IPGUnknownValueTypeError

MissingProcessorInfoError
`````````````````````````
.. autoexception:: mozpower.MissingProcessorInfoError

OsCpuComboMissingError
``````````````````````
.. autoexception:: mozpower.OsCpuComboMissingError

PlatformUnsupportedError
````````````````````````
.. autoexception:: mozpower.PlatformUnsupportedError