.. _ips-portal:
==========
IPS Portal
==========
The `IPS portal `_
hosted on the `NERSC Spin `_
service, shows the progress and status of IPS runs on a variety of
machines. The simulation configuration file and platform
configuration file contain entries that allow the IPS to publish
events to the portal.
On the top-level page, you will see information about each run
including who ran it, the current status, physics time stamp, wall
time, and a descriptive comment. From there you can click on a Run ID
to see the details of that run, including calls on components, data
movement events, task launches and finishes, and checkpoints.
To use the portal include
.. code-block:: text
USE_PORTAL = True
PORTAL_URL = http://lb.ipsportal.production.svc.spin.nersc.org
The source code for the portal can be found one `GitHub
`_ and issues can be
reported using `GitHub issues
`_.
in either your :doc:`Platform Configuration File` or your
:doc:`Simulation Configuration File`.
Tracing
-------
.. note::
New in IPS-Framework 0.6.0
IPS has the ability to capture a trace of the
workflow to allow analysis and visualizations. The traces are captured
in the `Zipkin Span format `_ and
viewed within IPS portal using `Jaeger
`_.
After selecting a run in the portal there will be a link to the trace:
.. image:: run_list.png
.. image:: trace_link.png
The default view is the Trace Timeline but other useful views are
Trace Graph and Trace Statistic which can be selected from the menu in
the top-right:
.. image:: jaeger_options.png
The statistics can be further broken down by operation.
.. image:: statistics_sub_group.png
.. note::
Self time (ST) is the total time spent in a span when it was not waiting on children. For example, a 10ms span with two 4ms non-overlapping children would have self-time = 10ms - 2 * 4ms = 2ms.
Child Runs
----------
.. note::
New in IPS-Framework 0.7.0
If you have a workflow where you are running ``ips`` as a task of
another IPS simulation you can create a relation between them that
will allow it to be viewed together in the IPS-portal and get a single
trace for the entire collection.
To setup the hierarchical structure between different IPS runs, so if
one run starts other runs as a separate simulation, you can set the
``PARENT_PORTAL_RUNID`` parameter in the child simulation
configuration. This can be done dynamically from the parent simulation
like:
.. code-block:: python
child_conf['PARENT_PORTAL_RUNID'] = self.services.get_config_param("PORTAL_RUNID")
This is automatically configured when running
``ips_dakota_dynamic.py``.
The child runs will not appear on the main runs list but will appear
on a tab next to the events.
.. image:: child_runs.png
The trace of the primary simulation will contain the traces from all
the simulations:
.. image:: child_runs_trace.png