<jupyter_start><jupyter_text>Documentation Documentation of many LISA modules has got a big improvement with the usage of Sphinx and the refresh of docstrings for many existing methods.You can access documentation either interactively in Notebooks, using the standard TAB completion after a function name, or by printing it in the Notebook itsels. For example:<jupyter_code>from test import LisaTest

print LisaTest.__doc__<jupyter_output>A base class for LISA tests

    This class is intended to be subclassed in order to create automated tests
    for LISA. It sets up the TestEnv and Executor and provides convenience
    methods for making assertions on results.

    Subclasses should provide a test_conf to configure the TestEnv and an
    experiments_conf to configure the executor.

    Tests whose behaviour is dependent on target parameters, for example
    presence of cpufreq governors or number of CPUs, can override
    _getExperimentsConf to generate target-dependent experiments.

    Example users of this class can be found under LISA's tests/ directory.

    :ivar experiments: List of :class:`Experiment` s executed for the test. Only
                       available after :meth:`init` has been called.<jupyter_text>Energy Model Related APIs The `EnergyModel` class has been added, which provides methods for describing platforms in order to estimate usage of CPU systems under various utilization scenario. The model is aware of frequency (DVFS) domains, power domains and idle states, as well as "cluster" energy.Tests have been added that utulize the `EnergyModel` - see below for info about the Generic tests.<jupyter_code>from energy_model import EnergyModel
print EnergyModel.__doc__
# juno_energy provides an instance of EnergyModel for ARM Juno platforms
from platforms.juno_energy import juno_energy
import pandas as pd
import matplotlib.pyplot as plt
%matplotlib inline

possible_placements = juno_energy.get_optimal_placements({'task1': 10, 'task2': 15})
fig, axs = plt.subplots(1, 4, sharey=True)
# fig.set_ylabel('Utilization')
for ax, placement in zip(axs, possible_placements):
    ax.set_ylabel('Utilization')
    ax.set_xlabel('CPU')

    pd.DataFrame(list(placement)).plot(kind='bar', figsize=(16, 2), ax=ax, legend=False)<jupyter_output><empty_output><jupyter_text>The above example shows how the `EnergyModel` class can be used to find optimal task placements. Here it is shown that on ARM Juno, if the system is presented with just two small tasks, it should place them on the same CPU, not using the big CPUs (1 and 2).  Trace module  Improved profiling analysis The trace analysis module has got a more complete support for analysis of tasks properties.Here is an example notebook which shows the new API in use on a relatively simple example:https://gist.github.com/derkling/256256f47bc9daf4883f3cb6e356e26b  Android Support  API to run Android Workloads A new API has been adde which allows to defined how to execute and Android workload with the additional support:- to collect a trace across its execution- to measure energy consumption across its execution<jupyter_code>from android import Workload

print Workload.__doc__<jupyter_output>Base class for Android related workloads<jupyter_text>Public interface:<jupyter_code>{ k:v for k,v in vars(Workload).items() if not k.startswith('_') }<jupyter_output><empty_output><jupyter_text>The `run` method is the only one which the user is required to implement to specify how to run the specific Android workload.To create a new workload it's required to create a new module under this folder:`libs/utils/android/workloads`Here is an enample of usage of this class to run a YouTube workload:https://github.com/ARM-software/lisa/blob/master/libs/utils/android/workloads/youtube.py  Android Workloads Using the `Workload` class, some interesting Android workloads have been already integrated:<jupyter_code>!tree $LISA_HOME/libs/utils/android/workloads<jupyter_output>[01;34m/home/brendan/sources/lisa/libs/utils/android/workloads[00m
├── geekbench.py
├── geekbench.pyc
├── gmaps.py
├── gmaps.pyc
├── jankbench.py
├── jankbench.pyc
├── [01;32muibench.py[00m
├── uibench.pyc
├── vellamo.py
├── vellamo.pyc
├── youtube.py
└── youtube.pyc

0 directories, 12 files<jupyter_text>... and others are on their way ;-)  API to run Android Tests A new API has been added which allows to defined how to run an Android workload to perform a pre-defined set of experiments.<jupyter_code>from android import LisaBenchmark

print LisaBenchmark.__doc__<jupyter_output>A base class for LISA custom benchmarks execution

    This class is intended to be subclassed in order to create a custom
    benckmark execution for LISA.
    It sets up the TestEnv and and provides convenience methods for
    test environment setup, execution and post-processing.

    Subclasses should provide a bm_conf to setup the TestEnv and
    a set of optional callback methods to configuere a test environment
    and process collected data.

    Example users of this class can be found under LISA's tests/benchmarks
    directory.<jupyter_text>Public interface:<jupyter_code>{ k:v for k,v in vars(LisaBenchmark).items() if not k.startswith('_') }<jupyter_output><empty_output>
{'fraction_non_alphanumeric': 0.06320197982105463, 'fraction_numerical': 0.009137635636778984, 'mean_word_length': 4.916666666666667, 'pattern_counts': {'":': 0, '<': 25, '<?xml version=': 0, '>': 25, 'https://': 2, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'chain_length': '7', 'dir': 'jupyter-structured-clean-dedup', 'id': '141717', 'license': 'Apache-2.0', 'n_tokens_mistral': 1536, 'n_tokens_neox': 1466, 'n_words': 640, 'path': 'ipynb/deprecated/releases/ReleaseNotes_v17.03.ipynb', 'repo_name': 'Binse-Park/lisa_ARM', 'size': '5253'}