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:
In [1]:
from test import LisaTest
print LisaTest.__doc__
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.
In [2]:
from energy_model import EnergyModel
print EnergyModel.__doc__
In [28]:
# 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)
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).
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
A new API has been adde which allows to defined how to execute and Android workload with the additional support:
In [4]:
from android import Workload
print Workload.__doc__
Public interface:
In [5]:
{ k:v for k,v in vars(Workload).items() if not k.startswith('_') }
Out[5]:
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
Using the Workload
class, some interesting Android workloads have been already integrated:
In [6]:
!tree $LISA_HOME/libs/utils/android/workloads
... and others are on their way ;-)
A new API has been added which allows to defined how to run an Android workload to perform a pre-defined set of experiments.
In [7]:
from android import LisaBenchmark
print LisaBenchmark.__doc__
Public interface:
In [8]:
{ k:v for k,v in vars(LisaBenchmark).items() if not k.startswith('_') }
Out[8]:
To create a test the used need to define proper values for the bm_*
attributes.
Optionally the benchmarkInit
and benchmarkFinalize
methods can also be defined.
Here is an example usage of this API to run a YouTube workload using different CPUFreq governor:
https://github.com/ARM-software/lisa/blob/master/tests/benchmarks/android_youtube.py
The new test API and LISA support allows to run tests both in batch, useful for regression testing, as well as interactively on a Notebook. This last mode is partitularely useful to support both tests development as well as to do further interactive analysis based on test results. For example it makes more easy to investigate the reasons for a test failure.
https://github.com/ARM-software/lisa/pull/263
Provides a new full set of EAS behaviors testing based on EM data. These tests are designed to be completely generic and portable across different platform.
The Run Generic Automated EAS tests
example notebook:
https://github.com/ARM-software/lisa/blob/master/ipynb/tests/Generic_EAS_Tests.ipynb
gives an example of using this test.
https://github.com/ARM-software/lisa/pull/254
The frequency invariance machinary is a the base of a proper functioning of the EAS. We added a test which verifys frequency and cpu invarnace for load and utilization signals.
The Frequency Invariant Load Tracking Test
example notebook:
https://github.com/ARM-software/lisa/blob/master/ipynb/tests/Frequency_Invariance_Test.ipynb
gives an example of using this test.