geopm_pio_cnl(7) -- Signals and controls for Compute Node Linux Board-Level Metrics
===================================================================================

Description
-----------
The CNLIOGroup implements the :doc:`geopm::IOGroup(3)
<geopm::IOGroup.3>` interface to provide signals and controls for
board-level energy and power metrics on Compute Node Linux (CNL).

Requirements
------------
This IOGroup's signals are only exposed when GEOPM is compiled with the
``--enable-cnl-iogroup`` build configuration option, and GEOPM can read
files in ``/sys/cray/pm_counters``.

Signals
-------
All signals are available with board-level scope, on systems that expose the
``pm_counters`` interface.

``CNL::BOARD_POWER``
    Returns the current board power consumption, in watts. This signal maps to
    ``/sys/cray/pm_counters/power``.

    * **Aggregation**: sum
    * **Domain**: board
    * **Format**: integer
    * **Unit**: watts

``CNL::BOARD_ENERGY``
    Returns the accumulated energy consumed by the board, in joules. This
    signal maps to ``/sys/cray/pm_counters/energy``.

    * **Aggregation**: sum
    * **Domain**: board
    * **Format**: integer
    * **Unit**: joules

``CNL::POWER_MEMORY``
    Returns the current power consumption of memory components on the board, in
    watts. This signal maps to ``/sys/cray/pm_counters/memory_power``.

    * **Aggregation**: sum
    * **Domain**: board
    * **Format**: integer
    * **Unit**: watts

``CNL::ENERGY_MEMORY``
    Returns the accumulated energy consumed by memory components on the board, in
    joules. This signal maps to ``/sys/cray/pm_counters/memory_energy``.

    * **Aggregation**: sum
    * **Domain**: board
    * **Format**: integer
    * **Unit**: joules

``CNL::BOARD_POWER_CPU``
    Returns the current power consumption of CPU components on the board, in
    watts. This signal maps to ``/sys/cray/pm_counters/cpu_power``.

    * **Aggregation**: sum
    * **Domain**: board
    * **Format**: integer
    * **Unit**: watts

``CNL::BOARD_ENERGY_CPU``
    Returns the accumulated energy consumed by CPU components on the board, in
    joules. This signal maps to ``/sys/cray/pm_counters/cpu_energy``.

    * **Aggregation**: sum
    * **Domain**: board
    * **Format**: integer
    * **Unit**: joules

``CNL::SAMPLE_RATE``
    Returns the sample rate of the underlying metrics, in hertz. This signal maps
    to ``/sys/cray/pm_counters/raw_scan_hz``.

    * **Aggregation**: expect same
    * **Domain**: board
    * **Format**: integer
    * **Unit**: hertz

``CNL::SAMPLE_ELAPSED_TIME``
    Returns the time that the current samples were updated, in seconds since this
    IOGroup was initialized. This signal is derived from
    ``/sys/cray/pm_counters/raw_scan_hz`` and ``/sys/cray/pm_counters/freshness``.

    * **Aggregation**: max
    * **Domain**: board
    * **Format**: double
    * **Unit**: seconds

Controls
--------
This IOGroup does not expose any controls.

Aliases
-------

Signal Aliases
^^^^^^^^^^^^^^
This IOGroup exposes the following high-level aliases:

* ``BOARD_POWER`` aliases to ``CNL::BOARD_POWER``
* ``BOARD_ENERGY`` aliases to ``CNL::BOARD_ENERGY``


See Also
--------
:doc:`geopm(7) <geopm.7>`,
:doc:`geopm_pio(7) <geopm_pio.7>`,
:doc:`geopm::IOGroup(3) <geopm::IOGroup.3>`,
:doc:`geopm::CNLIOGroup(3) <geopm::CNLIOGroup.3>`,
:doc:`geopmwrite(1) <geopmwrite.1>`,
:doc:`geopmread(1) <geopmread.1>`,
:doc:`geopm::Agg(3) <geopm::Agg.3>`