HPX - High Performance ParalleX

PrevUpHomeNext

Existing HPX Performance Counters

The HPX runtime system exposes a wide variety of predefined Performance Counters. These counters expose critical information about different modules of the runtime system. They can help determine system bottlenecks and fine-tune system and application performance.

Table 17. AGAS Performance Counters

Counter Type

Counter Instance Formatting

Parameters

Description

/agas/count/<agas_service>

where:
<agas_service> is one of the following: allocate, bind, bind_gid, bind_name, bind_prefix, change_credit_non_blocking, change_credit_sync, free, iterate_names, iterate_types, localities, resolve, resolve_gid, resolve_id, resolve_locality, unbind, unbind_gid, unbind_name.

<agas_instance>/total

where:
<agas_instance> is the name of the AGAS service to query. Currently, this value will be root as we do not have distributed AGAS services implemented yet.

None

Returns the total number of invocations of the specified AGAS service since its creation.

/agas/time/<agas_service>

where:
<agas_service> is one of the following: allocate, bind, bind_gid, bind_name, bind_prefix, change_credit_non_blocking, change_credit_sync, free, iterate_names, iterate_types, localities, resolve, resolve_gid, resolve_id, resolve_locality, unbind, unbind_gid, unbind_name.

<agas_instance>/total

where:
<agas_instance> is the name of the AGAS service to query. Currently, this value will be root as we do not have distributed AGAS services implemented yet.

None

Returns the overall execution time of the specified AGAS service since its creation (in nanoseconds).

/agas/count/<cache_statistics>

where:
<cache_statistics> is one of the following: cache-evictions, cache-hits, cache-inserts, cache-misses

locality#*/total

where:
* is the locality id of the locality the AGAS cache should be queried. The locality id is a (zero based) number identifying the locality.

None

Returns the number of cache events (evictions, hits, inserts, and misses) in the AGAS cache of the specified locality.


Table 18. Parcel Layer Performance Counters

Counter Type

Counter Instance Formatting

Parameters

Description

/data/count/<operation>

where:
<operation> is one of the following: sent, received

locality#*/total

where:
* is the locality id of the locality the overall number of transmitted bytes should be queried for. The locality id is a (zero based) number identifying the locality.

None

Returns the overall number of bytes of memory consumed by the messages (see <operation>, e.g. sent or received).

/serialize/count/<operation>

where:
<operation> is one of the following: sent, received

locality#*/total

where:
* is the locality id of the locality the overall number of transmitted bytes should be queried for. The locality id is a (zero based) number identifying the locality.

None

Returns the overall number of bytes transferred (see <operation>, e.g. sent or received) over the network by the given locality.

/data/time/<operation>

where:
<operation> is one of the following: sent, received

locality#*/total

where:
* is the locality id of the locality the total transmission time should be queried for. The locality id is a (zero based) number identifying the locality.

None

Returns the total time (in nanoseconds) between the start of each asynchronous network operation and the end of the corresponding transfer operation the given locality (see <operation>, e.g. sent or received).

/messages/count/<operation>

where:
<operation> is one of the following: sent, received

locality#*/total

where:
* is the locality id of the locality the number of messages should be queried for. The locality id is a (zero based) number identifying the locality.

None

Returns the overall number of messages [a] transferred over the network by the given locality (see <operation>, e.g. sent or received).

/parcels/count/<operation>

where:
<operation> is one of the following: sent, received

locality#*/total

where:
* is the locality id of the locality the number of parcels should be queried for. The locality id is a (zero based) number identifying the locality.

None

Returns the overall number of parcels transferred over the network by the given locality (see <operation>, e.g. sent or received).

/parcelqueue/length/<operation>

where:
<operation> is one of the following: send, receive

locality#*/total

where:
* is the locality id of the locality the parcel queue should be queried. The locality id is a (zero based) number identifying the locality.

None

Returns the current number of parcels stored in the parcel queue (see <operation> for which queue to query, e.g. send or receive).

/serialize/time/<operation>

where:
<operation> is one of the following: sent, received

locality#*/total

where:
* is the locality id of the locality the serialization time should be queried for. The locality id is a (zero based) number identifying the locality.

None

Returns the overall time spent performing outgoing data serialization on the given locality (see <operation>, e.g. sent or received).

[a] A message can potentially consist of more than one parcel.


Table 19. Thread Manager Performance Counters

Counter Type

Counter Instance Formatting

Parameters

Description

/threads/count/cumulative

locality#*/total or
locality#*/worker-thread#*

where:
locality#* is defining the locality for which the overall number of retired HPX-threads should be queried for. The locality id (given by *) is a (zero based) number identifying the locality

worker-thread#* is defining the worker thread for which the overall number of retired HPX-threads should be queried for. The worker thread number (given by the *) is a (zero based) number identifying the worker thread. The number of available worker threads is usually specified on the command line for the application using the option --hpx:threads.

None

Returns the overall number of executed (retired) HPX-threads on the given locality since application start. If the instance name is total the counter returns the accumulated number of retired HPX-threads for all worker threads (cores) on that locality. If the instance name is worker-thread#* the counter will return the overall number of retired HPX-threads for the specified worker thread.

/threads/count/instantaneous/<thread-state>

where:
<thread-state> is one of the following: all, active, pending, suspended, terminated

locality#*/total or
locality#*/worker-thread#*

where:
locality#* is defining the locality for which the overall number of retired HPX-threads should be queried for. The locality id (given by *) is a (zero based) number identifying the locality

worker-thread#* is defining the worker thread for which the overall number of retired HPX-threads should be queried for. The worker thread number (given by the *) is a (zero based) number identifying the worker thread. The number of available worker threads is usually specified on the command line for the application using the option --hpx:threads.

None

Returns the current number of HPX-threads having the given thread state on the given locality since application start. If the instance name is total the counter returns the current number of HPX-threads of the given state for all worker threads (cores) on that locality. If the instance name is worker-thread#* the counter will return the current number of HPX-threads in the given state for the specified worker thread.

/threads/idle-rate

locality#*/total or
locality#*/worker-thread#*

where:
locality#* is defining the locality for which the average idle rate of all (or one) worker threads should be queried for. The locality id (given by *) is a (zero based) number identifying the locality

worker-thread#* is defining the worker thread for which the averaged idle rate should be queried for. The worker thread number (given by the *) is a (zero based) number identifying the worker thread. The number of available worker threads is usually specified on the command line for the application using the option --hpx:threads.

None

Returns the averageidle rate for the given worker thread(s) on the given locality. The idle rate is defined as the ratio of the time spent on scheduling and management tasks and the overall time spent executing work since the application started.

/threadqueue/length

locality#*/total or
locality#*/worker-thread#*

where:
locality#* is defining the locality for which the current length of all thread queues in the scheduler for all (or one) worker threads should be queried for. The locality id (given by *) is a (zero based) number identifying the locality

worker-thread#* is defining the worker thread for which the current length of all thread queues in the scheduler should be queried for. The worker thread number (given by the *) is a (zero based) number identifying the worker thread. The number of available worker threads is usually specified on the command line for the application using the option --hpx:threads.

None

Returns the overall length of all queues for the given worker thread(s) on the given locality.

/threads/count/stack-unbinds

locality#*/total

where:
* is the locality id of the locality the unbind (madvise) operations should be queried for. The locality id is a (zero based) number identifying the locality.

None

Returns the total number of HPX-thread unbind (madvise) operations performed for the referenced locality. Note that this counter is not available on Windows based platforms.

/threads/count/stack-recycles

locality#*/total

where:
* is the locality id of the locality the unbind (madvise) operations should be queried for. The locality id is a (zero based) number identifying the locality.

None

Returns the total number of HPX-thread recycling operations performed.


Table 20. Performance Counters related to LCOs

Counter Type

Counter Instance Formatting

Parameters

Description

/full_empty/count/<operation>

where:
<operation> is one of the following: constructed, destructed, read_enqueued, read_dequeued, fired

locality#*/total

where:
* is the locality id of the locality the number of invocations of the specified operation should be queried for (see <operation>, e.g. constructed, destructed, read_enqueued, read_dequeued, fired). The locality id is a (zero based) number identifying the locality.

None

Returns the overall number of operations performed on full-empty bit data structures on the specified locality.

/dataflow/count/<operation>

where:
<operation> is one of the following: constructed, destructed, initialized, fired

locality#*/total

where:
* is the locality id of the locality the number of invocations of the specified operation should be queried for (see <operation>, e.g. constructed, destructed, initialized, fired). The locality id is a (zero based) number identifying the locality.

None

Returns the overall number of operations performed on dataflow components on the specified locality.


Table 21. General Performance Counters exposing Characteristics of Localities

Counter Type

Counter Instance Formatting

Parameters

Description

/runtime/count/component

locality#*/total

where:
* is the locality id of the locality the number of components should be queried. The locality id is a (zero based) number identifying the locality.

The type of the component. This is the string which has been used while registering the component with HPX, e.g. which has been passed as the second parameter to the macro HPX_REGISTER_MINIMAL_COMPONENT_FACTORY.

Returns the overall number of currently active components of the specified type on the given locality.

/runtime/uptime

locality#*/total

where:
* is the locality id of the locality the system uptime should be queried. The locality id is a (zero based) number identifying the locality.

None

Returns the overall time since application start on the given locality in nanoseconds.

/runtime/memory/vm

locality#*/total

where:
* is the locality id of the locality the allocated virtual memory should be queried. The locality id is a (zero based) number identifying the locality.

None

Returns the amount of virtual memory currently allocated by the referenced locality (in bytes).

/runtime/memory/resident

locality#*/total

where:
* is the locality id of the locality the the allocated resident memory should be queried. The locality id is a (zero based) number identifying the locality.

None

Returns the amount of resident memory currently allocated by the referenced locality (in bytes).


Table 22. Performance Counters for General Statistics

Counter Type

Counter Instance Formatting

Parameters

Description

/statistics/average

Any full performance counter name. The referenced performance counter is queried at fixed time intervals.

Returns the current average value calculated based on the values queried from the underlying counter (the one specified as the instance name).

Any parameter will be interpreted as the time interval (in milliseconds) at which the underlying counter should be queried. If no value is specified, the counter will assume 1000ms as the default.

/statistics/max

Any full performance counter name. The referenced performance counter is queried at fixed time intervals.

Returns the current maximum value calculated based on the values queried from the underlying counter (the one specified as the instance name).

Any parameter will be interpreted as the time interval (in milliseconds) at which the underlying counter should be queried. If no value is specified, the counter will assume 1000ms as the default.

/statistics/min

Any full performance counter name. The referenced performance counter is queried at fixed time intervals.

Returns the current minimum value calculated based on the values queried from the underlying counter (the one specified as the instance name).

Any parameter will be interpreted as the time interval (in milliseconds) at which the underlying counter should be queried. If no value is specified, the counter will assume 1000ms as the default.



PrevUpHomeNext