mirror of
https://github.com/ARM-software/workload-automation.git
synced 2025-04-14 14:50:54 +01:00
doc: add output API docs
- Add a reference tag for metadata - Remove doc/source/api from .gitignore -- this is no longer auto-generated. - Add a top-level "index" for the API documentation. - Add output API documentation. - Remove the output API example file, as its contents is now part of the output API docs.
This commit is contained in:
parent
c400591759
commit
275c243764
1
.gitignore
vendored
1
.gitignore
vendored
@ -12,7 +12,6 @@ build/
|
|||||||
dist/
|
dist/
|
||||||
.ropeproject/
|
.ropeproject/
|
||||||
wa_output/
|
wa_output/
|
||||||
doc/source/api/
|
|
||||||
doc/source/plugins/
|
doc/source/plugins/
|
||||||
MANIFEST
|
MANIFEST
|
||||||
*.orig
|
*.orig
|
||||||
|
7
doc/source/api.rst
Normal file
7
doc/source/api.rst
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
Workload Automation API
|
||||||
|
=======================
|
||||||
|
|
||||||
|
.. toctree::
|
||||||
|
:maxdepth: 2
|
||||||
|
|
||||||
|
api/output
|
443
doc/source/api/output.rst
Normal file
443
doc/source/api/output.rst
Normal file
@ -0,0 +1,443 @@
|
|||||||
|
Output
|
||||||
|
======
|
||||||
|
|
||||||
|
A WA output directory can be accessed via a :class:`RunOutput` object. There are
|
||||||
|
two ways of getting one -- either instantiate it with a path to a WA output
|
||||||
|
directory, or use :func:`discover_wa_outputs` to traverse a directory tree
|
||||||
|
iterating over all WA output directories found.
|
||||||
|
|
||||||
|
.. function:: discover_wa_outputs(path)
|
||||||
|
|
||||||
|
Recursively traverse ``path`` looking for WA output directories. Return
|
||||||
|
an iterator over :class:`RunOutput` objects for each discovered output.
|
||||||
|
|
||||||
|
:param path: The directory to scan for WA output
|
||||||
|
|
||||||
|
|
||||||
|
.. class:: RunOutput(path)
|
||||||
|
|
||||||
|
The main interface into a WA output directory.
|
||||||
|
|
||||||
|
:param path: must be the path to the top-level output directory (the one
|
||||||
|
containing ``__meta`` subdirectory and ``run.log``).
|
||||||
|
|
||||||
|
Example
|
||||||
|
-------
|
||||||
|
|
||||||
|
To demonstrate how we can use the output API if we have an existing WA output
|
||||||
|
called ``wa_output`` in the current working directory we can initialize a
|
||||||
|
``RunOutput`` as follows:
|
||||||
|
|
||||||
|
.. code-block:: python
|
||||||
|
|
||||||
|
In [1]: from wa import RunOutput
|
||||||
|
...:
|
||||||
|
...: output_directory = 'wa_output'
|
||||||
|
...: run_output = RunOutput(output_directory)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
From here we can retrieve various information about the run. For example if we
|
||||||
|
want to see what the overall status of the run was, along with the runtime
|
||||||
|
parameters and the metrics recorded from the first job was we can do the following:
|
||||||
|
|
||||||
|
.. code-block:: python
|
||||||
|
|
||||||
|
In [2]: run_output.status
|
||||||
|
Out[2]: OK(7)
|
||||||
|
|
||||||
|
# List all of the jobs for the run
|
||||||
|
In [3]: run_output.jobs
|
||||||
|
Out[3]:
|
||||||
|
[<wa.framework.output.JobOutput at 0x7f70358a1f10>,
|
||||||
|
<wa.framework.output.JobOutput at 0x7f70358a1150>,
|
||||||
|
<wa.framework.output.JobOutput at 0x7f7035862810>,
|
||||||
|
<wa.framework.output.JobOutput at 0x7f7035875090>]
|
||||||
|
|
||||||
|
# Examine the first job that was ran
|
||||||
|
In [4]: job_1 = run_output.jobs[0]
|
||||||
|
|
||||||
|
In [5]: job_1.label
|
||||||
|
Out[5]: u'dhrystone'
|
||||||
|
|
||||||
|
# Print out all the runtime parameters and their values for this job
|
||||||
|
In [6]: for k, v in job_1.spec.runtime_parameters.iteritems():
|
||||||
|
...: print (k, v)
|
||||||
|
(u'airplane_mode': False)
|
||||||
|
(u'brightness': 100)
|
||||||
|
(u'governor': 'userspace')
|
||||||
|
(u'big_frequency': 1700000)
|
||||||
|
(u'little_frequency': 1400000)
|
||||||
|
|
||||||
|
# Print out all the metrics avalible for this job
|
||||||
|
In [7]: job_1.metrics
|
||||||
|
Out[7]:
|
||||||
|
[<thread 0 score: 14423105 (+)>,
|
||||||
|
<thread 0 DMIPS: 8209 (+)>,
|
||||||
|
<thread 1 score: 14423105 (+)>,
|
||||||
|
<thread 1 DMIPS: 8209 (+)>,
|
||||||
|
<thread 2 score: 14423105 (+)>,
|
||||||
|
<thread 2 DMIPS: 8209 (+)>,
|
||||||
|
<thread 3 score: 18292638 (+)>,
|
||||||
|
<thread 3 DMIPS: 10411 (+)>,
|
||||||
|
<thread 4 score: 17045532 (+)>,
|
||||||
|
<thread 4 DMIPS: 9701 (+)>,
|
||||||
|
<thread 5 score: 14150917 (+)>,
|
||||||
|
<thread 5 DMIPS: 8054 (+)>,
|
||||||
|
<time: 0.184497 seconds (-)>,
|
||||||
|
<total DMIPS: 52793 (+)>,
|
||||||
|
<total score: 92758402 (+)>]
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
We can also retrieve information about the target that the run was performed on
|
||||||
|
for example:
|
||||||
|
|
||||||
|
.. code-block:: python
|
||||||
|
|
||||||
|
# Print out the target's abi:
|
||||||
|
In [9]: run_output.target_info.abi
|
||||||
|
Out[9]: u'arm64'
|
||||||
|
|
||||||
|
# The os the target was running
|
||||||
|
In [9]: run_output.target_info.os
|
||||||
|
Out[9]: u'android'
|
||||||
|
|
||||||
|
# And other information about the os version
|
||||||
|
In [10]: run_output.target_info.os_version
|
||||||
|
Out[10]:
|
||||||
|
OrderedDict([(u'all_codenames', u'REL'),
|
||||||
|
(u'incremental', u'3687331'),
|
||||||
|
(u'preview_sdk', u'0'),
|
||||||
|
(u'base_os', u''),
|
||||||
|
(u'release', u'7.1.1'),
|
||||||
|
(u'codename', u'REL'),
|
||||||
|
(u'security_patch', u'2017-03-05'),
|
||||||
|
(u'sdk', u'25')])
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
:class:`RunOutput`
|
||||||
|
------------------
|
||||||
|
|
||||||
|
:class:`RunOutput` provides access to the output of a WA :term:`run`, including metrics,
|
||||||
|
artifacts, metadata, and configuration. It has the following attributes:
|
||||||
|
|
||||||
|
|
||||||
|
``jobs``
|
||||||
|
A list of :class:`JobOutput` objects for each job that was executed during
|
||||||
|
the run.
|
||||||
|
|
||||||
|
``status``
|
||||||
|
Run status. This indicates whether the run has completed without problems
|
||||||
|
(``Status.OK``) or if there were issues.
|
||||||
|
|
||||||
|
``metrics``
|
||||||
|
A list of :class:`Metric`\ s for the run.
|
||||||
|
|
||||||
|
.. note:: these are *overall run* metrics only. Metrics for individual
|
||||||
|
jobs are contained within the corresponding :class:`JobOutput`\ s.
|
||||||
|
|
||||||
|
``artifacts``
|
||||||
|
A list of :class:`Artifact`\ s for the run. These are usually backed by a
|
||||||
|
file and can contain traces, raw data, logs, etc.
|
||||||
|
|
||||||
|
.. note:: these are *overall run* artifacts only. Artifacts for individual
|
||||||
|
jobs are contained within the corresponding :class:`JobOutput`\ s.
|
||||||
|
|
||||||
|
``info``
|
||||||
|
A :ref:`RunInfo <run-info-api>` object that contains information about the run
|
||||||
|
itself for example it's duration, name, uuid etc.
|
||||||
|
|
||||||
|
``target_info``
|
||||||
|
A :ref:`TargetInfo <target-info-api>` object which can be used to access
|
||||||
|
various information about the target that was used during the run for example
|
||||||
|
it's ``abi``, ``hostname``, ``os`` etc.
|
||||||
|
|
||||||
|
``run_config``
|
||||||
|
A :ref:`RunConfiguration <run-configuration>` object that can be used to
|
||||||
|
access all the configuration of the run itself, for example the
|
||||||
|
``reboot_policy``, ``execution_order``, ``device_config`` etc.
|
||||||
|
|
||||||
|
``classifiers``
|
||||||
|
:ref:`classifiers <classifiers>` defined for the entire run.
|
||||||
|
|
||||||
|
``metadata``
|
||||||
|
:ref:`metadata <metadata>` associated with the run.
|
||||||
|
|
||||||
|
``events``
|
||||||
|
A list of any events logged during the run, that are not associated with a
|
||||||
|
particular job.
|
||||||
|
|
||||||
|
``event_summary``
|
||||||
|
A condensed summary of any events that occurred during the run.
|
||||||
|
|
||||||
|
``augmentations``
|
||||||
|
A list of the :term:`augmentation`\ s that were enabled during the run (these
|
||||||
|
augmentations may or may not have been active for a particular job).
|
||||||
|
|
||||||
|
``basepath``
|
||||||
|
A (relative) path to the WA output directory backing this object.
|
||||||
|
|
||||||
|
|
||||||
|
methods
|
||||||
|
~~~~~~~
|
||||||
|
|
||||||
|
.. method:: RunOutput.get_artifact(name)
|
||||||
|
|
||||||
|
Return the :class:`Artifact` specified by ``name``. This will only look
|
||||||
|
at the run artifacts; this will not search the artifacts of the individual
|
||||||
|
jobs.
|
||||||
|
|
||||||
|
:param name: The name of the artifact who's path to retrieve.
|
||||||
|
:return: The :class:`Artifact` with that name
|
||||||
|
:raises HostError: If the artifact with the specified name does not exist.
|
||||||
|
|
||||||
|
|
||||||
|
.. method:: RunOutput.get_artifact_path(name)
|
||||||
|
|
||||||
|
Return the path to the file backing the artifact specified by ``name``. This
|
||||||
|
will only look at the run artifacts; this will not search the artifacts of
|
||||||
|
the individual jobs.
|
||||||
|
|
||||||
|
:param name: The name of the artifact who's path to retrieve.
|
||||||
|
:return: The path to the artifact
|
||||||
|
:raises HostError: If the artifact with the specified name does not exist.
|
||||||
|
|
||||||
|
|
||||||
|
.. method:: RunOutput.get_metric(name)
|
||||||
|
|
||||||
|
Return the :class:`Metric` associated with the run (not the individual jobs)
|
||||||
|
with the specified `name`.
|
||||||
|
|
||||||
|
:return: The :class`Metric` object for the metric with the specified name.
|
||||||
|
|
||||||
|
|
||||||
|
.. method:: RunOutput.get_job_spec(spec_id)
|
||||||
|
|
||||||
|
Return the :class:`JobSpec` with the specified `spec_id`. A :term:`spec`
|
||||||
|
describes the job to be executed. Each :class:`Job` has an associated
|
||||||
|
:class:`JobSpec`, though a single :term:`spec` can be associated with
|
||||||
|
multiple :term:`job`\ s (If the :term:`spec` specifies multiple iterations).
|
||||||
|
|
||||||
|
.. method:: RunOutput.list_workloads()
|
||||||
|
|
||||||
|
List unique workload labels that featured in this run. The labels will be
|
||||||
|
in the order in which they first ran.
|
||||||
|
|
||||||
|
:return: A list of `str` labels of workloads that were part of this run.
|
||||||
|
|
||||||
|
|
||||||
|
:class:`JobOutput`
|
||||||
|
------------------
|
||||||
|
|
||||||
|
:class:`JobOutput` provides access to the output of a single :term:`job`
|
||||||
|
executed during a WA :term:`run`, including metrics,
|
||||||
|
artifacts, metadata, and configuration. It has the following attributes:
|
||||||
|
|
||||||
|
``status``
|
||||||
|
Job status. This indicates whether the job has completed without problems
|
||||||
|
(``Status.OK``) or if there were issues.
|
||||||
|
|
||||||
|
.. note:: Under typical configuration, WA will make a number of attempts to
|
||||||
|
re-run a job in case of issue. This status (and the rest of the
|
||||||
|
output) will represent the the latest attempt. I.e. a
|
||||||
|
``Status.OK`` indicates that the latest attempt was successful,
|
||||||
|
but it does mean that there weren't prior failures. You can check
|
||||||
|
the ``retry`` attribute (see below) to whether this was the first
|
||||||
|
attempt or not.
|
||||||
|
|
||||||
|
``retry``
|
||||||
|
Retry number for this job. If a problem is detected during job execution, the
|
||||||
|
job will be re-run up to :confval:`max_retries` times. This indicates the
|
||||||
|
final retry number for the output. A value of ``0`` indicates that the job
|
||||||
|
succeeded on the first attempt, and no retries were necessary.
|
||||||
|
|
||||||
|
.. note:: Outputs for previous attempts are moved into ``__failed``
|
||||||
|
subdirectory of WA output. These are currently not exposed via the
|
||||||
|
API.
|
||||||
|
|
||||||
|
``id``
|
||||||
|
The ID of the :term:`spec` associated with with job. This ID is unique to
|
||||||
|
the spec, but not necessary to the job -- jobs representing multiple
|
||||||
|
iterations of the same spec will share the ID.
|
||||||
|
|
||||||
|
``iteration``
|
||||||
|
The iteration number of this job. Together with the ``id`` (above), this
|
||||||
|
uniquely identifies a job with a run.
|
||||||
|
|
||||||
|
``label``
|
||||||
|
The workload label associated with this job. Usually, this will be the name
|
||||||
|
or :term:`alias` of the workload, however maybe overwritten by the user in
|
||||||
|
the :term:`agenda`.
|
||||||
|
|
||||||
|
``metrics``
|
||||||
|
A list of :class:`Metric`\ s for the job.
|
||||||
|
|
||||||
|
``artifacts``
|
||||||
|
A list of :class:`Artifact`\ s for the job These are usually backed by a
|
||||||
|
file and can contain traces, raw data, logs, etc.
|
||||||
|
|
||||||
|
``classifiers``
|
||||||
|
:ref:`classifiers <classifiers>` defined for the job.
|
||||||
|
|
||||||
|
``metadata``
|
||||||
|
:ref:`metadata <metadata>` associated with the job.
|
||||||
|
|
||||||
|
``events``
|
||||||
|
A list of any events logged during the execution of the job.
|
||||||
|
|
||||||
|
``event_summary``
|
||||||
|
A condensed summary of any events that occurred during the execution of the
|
||||||
|
job.
|
||||||
|
|
||||||
|
``augmentations``
|
||||||
|
A list of the :term:`augmentation`\ s that were enabled for this job. This may
|
||||||
|
be different from overall augmentations specified for the run, as they may be
|
||||||
|
enabled/disabled on per-job basis.
|
||||||
|
|
||||||
|
``basepath``
|
||||||
|
A (relative) path to the WA output directory backing this object.
|
||||||
|
|
||||||
|
|
||||||
|
methods
|
||||||
|
~~~~~~~
|
||||||
|
|
||||||
|
.. method:: RunOutput.get_artifact(name)
|
||||||
|
|
||||||
|
Return the :class:`Artifact` specified by ``name`` associated with this job.
|
||||||
|
|
||||||
|
:param name: The name of the artifact who's path to retrieve.
|
||||||
|
:return: The :class:`Artifact` with that name
|
||||||
|
:raises HostError: If the artifact with the specified name does not exist.
|
||||||
|
|
||||||
|
|
||||||
|
.. method:: RunOutput.get_artifact_path(name)
|
||||||
|
|
||||||
|
Return the path to the file backing the artifact specified by ``name``,
|
||||||
|
associated with this job.
|
||||||
|
|
||||||
|
:param name: The name of the artifact who's path to retrieve.
|
||||||
|
:return: The path to the artifact
|
||||||
|
:raises HostError: If the artifact with the specified name does not exist.
|
||||||
|
|
||||||
|
|
||||||
|
.. method:: RunOutput.get_metric(name)
|
||||||
|
|
||||||
|
Return the :class:`Metric` associated with this job with the specified
|
||||||
|
`name`.
|
||||||
|
|
||||||
|
:return: The :class`Metric` object for the metric with the specified name.
|
||||||
|
|
||||||
|
|
||||||
|
:class:`Metric`
|
||||||
|
---------------
|
||||||
|
|
||||||
|
A metric represent a single numerical measurement/score collected as a result of
|
||||||
|
running the workload. It would be generated either by the workload or by one of
|
||||||
|
the augmentations active during the execution of the workload.
|
||||||
|
|
||||||
|
A :class:`Metric` has the following attributes:
|
||||||
|
|
||||||
|
name
|
||||||
|
The name of the metric.
|
||||||
|
|
||||||
|
.. note:: A name of the metric is not necessarily unique, even for the same
|
||||||
|
job. Some workloads internally run multiple sub-tests, each
|
||||||
|
generating a metric with the same name. In such cases,
|
||||||
|
:term:`classifier`\ s are used to distinguish between them.
|
||||||
|
|
||||||
|
value
|
||||||
|
The value of the metrics collected.
|
||||||
|
|
||||||
|
|
||||||
|
units
|
||||||
|
The units of the metrics. This maybe ``None`` if the metric has no units.
|
||||||
|
|
||||||
|
|
||||||
|
lower_is_better
|
||||||
|
The default assumption is that higher metric values are better. This may be
|
||||||
|
overridden by setting this to ``True``, e.g. if metrics such as "run time"
|
||||||
|
or "latency". WA does not use this internally (at the moment) but this may
|
||||||
|
be used by external parties to sensibly process WA results in a generic way.
|
||||||
|
|
||||||
|
|
||||||
|
classifiers
|
||||||
|
These can be user-defined :term:`classifier`\ s propagated from the job/run,
|
||||||
|
or they may have been added by the workload to help distinguish between
|
||||||
|
otherwise identical metrics.
|
||||||
|
|
||||||
|
|
||||||
|
:class:`Artifact`
|
||||||
|
-----------------
|
||||||
|
|
||||||
|
An artifact is a file that is created on the host as part of executing a
|
||||||
|
workload. This could be trace, logging, raw output, or pretty much anything
|
||||||
|
else. Pretty much every file under WA output directory that is not already
|
||||||
|
represented by some other framework object will have an :class:`Artifact`
|
||||||
|
associated with it.
|
||||||
|
|
||||||
|
An :class:`Artifact` has the following attributes:
|
||||||
|
|
||||||
|
|
||||||
|
name
|
||||||
|
The name of this artifact. This will be unique for the job/run (unlike
|
||||||
|
metric names). This is intended as a consistent "handle" for this artifact.
|
||||||
|
The actual file name for the artifact may vary from job to job (e.g. some
|
||||||
|
benchmarks that create files with results include timestamps in the file
|
||||||
|
names), however the name will always be the same.
|
||||||
|
|
||||||
|
path
|
||||||
|
Partial path to the file associated with this artifact. Often, this is just
|
||||||
|
the file name. To get the complete path that maybe used to access the file,
|
||||||
|
use :func:`get_artifact_path` of the corresponding output object.
|
||||||
|
|
||||||
|
|
||||||
|
kind
|
||||||
|
Describes the nature of this artifact to facilitate generic processing.
|
||||||
|
Possible kinds are:
|
||||||
|
|
||||||
|
:log: A log file. Not part of the "output" as such but contains
|
||||||
|
information about the run/workload execution that be useful for
|
||||||
|
diagnostics/meta analysis.
|
||||||
|
:meta: A file containing metadata. This is not part of the "output", but
|
||||||
|
contains information that may be necessary to reproduce the
|
||||||
|
results (contrast with ``log`` artifacts which are *not*
|
||||||
|
necessary).
|
||||||
|
:data: This file contains new data, not available otherwise and should
|
||||||
|
be considered part of the "output" generated by WA. Most traces
|
||||||
|
would fall into this category.
|
||||||
|
:export: Exported version of results or some other artifact. This
|
||||||
|
signifies that this artifact does not contain any new data
|
||||||
|
that is not available elsewhere and that it may be safely
|
||||||
|
discarded without losing information.
|
||||||
|
:raw: Signifies that this is a raw dump/log that is normally processed
|
||||||
|
to extract useful information and is then discarded. In a sense,
|
||||||
|
it is the opposite of ``export``, but in general may also be
|
||||||
|
discarded.
|
||||||
|
|
||||||
|
.. note:: whether a file is marked as ``log``/``data`` or ``raw``
|
||||||
|
depends on how important it is to preserve this file,
|
||||||
|
e.g. when archiving, vs how much space it takes up.
|
||||||
|
Unlike ``export`` artifacts which are (almost) always
|
||||||
|
ignored by other exporters as that would never result
|
||||||
|
in data loss, ``raw`` files *may* be processed by
|
||||||
|
exporters if they decided that the risk of losing
|
||||||
|
potentially (though unlikely) useful data is greater
|
||||||
|
than the time/space cost of handling the artifact (e.g.
|
||||||
|
a database uploader may choose to ignore ``raw``
|
||||||
|
artifacts, where as a network filer archiver may choose
|
||||||
|
to archive them).
|
||||||
|
|
||||||
|
.. note:: The kind parameter is intended to represent the logical
|
||||||
|
function of a particular artifact, not it's intended means of
|
||||||
|
processing -- this is left entirely up to the output
|
||||||
|
processors.
|
||||||
|
|
||||||
|
description
|
||||||
|
This may be used by the artifact's creator to provide additional free-form
|
||||||
|
information about the artifact. In practice, this is often ``None``
|
||||||
|
|
||||||
|
|
||||||
|
classifiers
|
||||||
|
Job- and run-level :term:`classifier`\ s will be propagated to the artifact.
|
@ -1,96 +0,0 @@
|
|||||||
|
|
||||||
Output Processing API Example
|
|
||||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
||||||
|
|
||||||
To demonstrate how we can use the output API if we have an existing WA output
|
|
||||||
called ``wa_output`` in the current working directory we can initialize a
|
|
||||||
``RunOutput`` as follows:
|
|
||||||
|
|
||||||
.. code-block:: python
|
|
||||||
|
|
||||||
In [1]: from wa import RunOutput
|
|
||||||
...:
|
|
||||||
...: output_directory = 'wa_output'
|
|
||||||
...: run_output = RunOutput(output_directory)
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
From here we can retrieve various information about the run. For example if we
|
|
||||||
want to see what the overall status of the run was, along with the runtime
|
|
||||||
parameters and the metrics recorded from the first job was we can do the following:
|
|
||||||
|
|
||||||
.. code-block:: python
|
|
||||||
|
|
||||||
In [2]: run_output.status
|
|
||||||
Out[2]: OK(7)
|
|
||||||
|
|
||||||
# List all of the jobs for the run
|
|
||||||
In [3]: run_output.jobs
|
|
||||||
Out[3]:
|
|
||||||
[<wa.framework.output.JobOutput at 0x7f70358a1f10>,
|
|
||||||
<wa.framework.output.JobOutput at 0x7f70358a1150>,
|
|
||||||
<wa.framework.output.JobOutput at 0x7f7035862810>,
|
|
||||||
<wa.framework.output.JobOutput at 0x7f7035875090>]
|
|
||||||
|
|
||||||
# Examine the first job that was ran
|
|
||||||
In [4]: job_1 = run_output.jobs[0]
|
|
||||||
|
|
||||||
In [5]: job_1.label
|
|
||||||
Out[5]: u'dhrystone'
|
|
||||||
|
|
||||||
# Print out all the runtime parameters and their values for this job
|
|
||||||
In [6]: for k, v in job_1.spec.runtime_parameters.iteritems():
|
|
||||||
...: print (k, v)
|
|
||||||
(u'airplane_mode': False)
|
|
||||||
(u'brightness': 100)
|
|
||||||
(u'governor': 'userspace')
|
|
||||||
(u'big_frequency': 1700000)
|
|
||||||
(u'little_frequency': 1400000)
|
|
||||||
|
|
||||||
# Print out all the metrics avalible for this job
|
|
||||||
In [7]: job_1.metrics
|
|
||||||
Out[7]:
|
|
||||||
[<thread 0 score: 14423105 (+)>,
|
|
||||||
<thread 0 DMIPS: 8209 (+)>,
|
|
||||||
<thread 1 score: 14423105 (+)>,
|
|
||||||
<thread 1 DMIPS: 8209 (+)>,
|
|
||||||
<thread 2 score: 14423105 (+)>,
|
|
||||||
<thread 2 DMIPS: 8209 (+)>,
|
|
||||||
<thread 3 score: 18292638 (+)>,
|
|
||||||
<thread 3 DMIPS: 10411 (+)>,
|
|
||||||
<thread 4 score: 17045532 (+)>,
|
|
||||||
<thread 4 DMIPS: 9701 (+)>,
|
|
||||||
<thread 5 score: 14150917 (+)>,
|
|
||||||
<thread 5 DMIPS: 8054 (+)>,
|
|
||||||
<time: 0.184497 seconds (-)>,
|
|
||||||
<total DMIPS: 52793 (+)>,
|
|
||||||
<total score: 92758402 (+)>]
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
We can also retrieve information about the target that the run was performed on
|
|
||||||
for example:
|
|
||||||
|
|
||||||
.. code-block:: python
|
|
||||||
|
|
||||||
# Print out the target's abi:
|
|
||||||
In [9]: run_output.target_info.abi
|
|
||||||
Out[9]: u'arm64'
|
|
||||||
|
|
||||||
# The os the target was running
|
|
||||||
In [9]: run_output.target_info.os
|
|
||||||
Out[9]: u'android'
|
|
||||||
|
|
||||||
# And other information about the os version
|
|
||||||
In [10]: run_output.target_info.os_version
|
|
||||||
Out[10]:
|
|
||||||
OrderedDict([(u'all_codenames', u'REL'),
|
|
||||||
(u'incremental', u'3687331'),
|
|
||||||
(u'preview_sdk', u'0'),
|
|
||||||
(u'base_os', u''),
|
|
||||||
(u'release', u'7.1.1'),
|
|
||||||
(u'codename', u'REL'),
|
|
||||||
(u'security_patch', u'2017-03-05'),
|
|
||||||
(u'sdk', u'25')])
|
|
||||||
|
|
||||||
|
|
@ -260,6 +260,8 @@ this can be done with ``add_run_artifact``:
|
|||||||
In this case, you also need to make sure that the file represented by the
|
In this case, you also need to make sure that the file represented by the
|
||||||
artifact is written to the output directory for the run and not the current job.
|
artifact is written to the output directory for the run and not the current job.
|
||||||
|
|
||||||
|
.. _metadata:
|
||||||
|
|
||||||
Metadata
|
Metadata
|
||||||
^^^^^^^^
|
^^^^^^^^
|
||||||
|
|
||||||
|
@ -84,6 +84,15 @@ References
|
|||||||
plugins
|
plugins
|
||||||
glossary
|
glossary
|
||||||
|
|
||||||
|
|
||||||
|
API
|
||||||
|
===
|
||||||
|
|
||||||
|
.. toctree::
|
||||||
|
:maxdepth: 2
|
||||||
|
|
||||||
|
api
|
||||||
|
|
||||||
.. Indices and tables
|
.. Indices and tables
|
||||||
.. ==================
|
.. ==================
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user