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 19. 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, increment_credit, decrement_credit, free, get_component_typename, iterate_names, iterate_types, localities, num_localities, num_localities_type, num_threads, resolve, resolve_gid, resolve_id, resolve_locality, resolved_localities, route, 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 locality#0, where 0 is the root locality (the id of the locality hosting the AGAS service). Except for <agas_service> route, bind_gid, resolve_gid, unbind_gid, increment_credit, decrement_credit, bind, resolve, unbind, and iterate_names for which the value for * can be any locality id (only the primary and symbol AGAS service components live on all localities, whereas all other AGAS services are available on locality#0 only).

None

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

/agas/<agas_service_category>/count

where:
<agas_service_category> is one of the following: primary, locality, component, or symbol.

<agas_instance>/total

where:
<agas_instance> is the name of the AGAS service to query. Currently, this value will be locality#0, where 0 is the root locality (the id of the locality hosting the AGAS service). Except for <agas_service_category> primary or symbol for which the value for * can be any locality id (only the primary and symbol AGAS service components live on all localities, whereas all other AGAS services are available on locality#0 only).

None

Returns the overall total number of invocations of all AGAS services provided by the given AGAS service category since its creation.

/agas/time/<agas_service>

where:
<agas_service> is one of the following: allocate, bind, bind_gid, bind_name, bind_prefix, increment_credit, decrement_credit, free, get_component_typename, iterate_names, iterate_types, localities, num_localities, num_localities_type, num_threads, resolve, resolve_gid, resolve_id, resolve_locality, resolved_localities, route, 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 locality#0, where 0 is the root locality (the id of the locality hosting the AGAS service). Except for <agas_service> route, bind_gid, resolve_gid, unbind_gid, increment_credit, decrement_credit,bind, resolve, unbind, and iterate_names for which the value for * can be any locality id (only the primary and symbol AGAS service components live on all localities, whereas all other AGAS services are available on locality#0 only).

None

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

/agas/<agas_service_category>/time

where:
<agas_service_category> is one of the following: primary, locality, component, or symbol.

<agas_instance>/total

where:
<agas_instance> is the name of the AGAS service to query. Currently, this value will be locality#0, where 0 is the root locality (the id of the locality hosting the AGAS service). Except for <agas_service_category> primary or symbol for which the value for * can be any locality id (only the primary and symbol AGAS service components live on all localities, whereas all other AGAS services are available on locality#0 only).

None

Returns the overall execution time of all AGAS services provided by the given AGAS service category 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 (see <cache_statistics>.


Table 20. Parcel Layer Performance Counters

Counter Type

Counter Instance Formatting

Parameters

Description

/data/count/<connection_type>/<operation>

where:
<operation> is one of the following: sent, received
<connection_type> is one of the following: tcp, ipc, ibverbs, mpi

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 raw (uncompressed) bytes sent or received (see <operation>, e.g. sent or received) for the specified <connection_type>.

The performance counters for the connection type ipc are available only if the compile time constant HPX_HAVE_PARCELPORT_IPC was defined while compiling the HPX core library (which is not defined by default).

The performance counters for the connection type ibverbs are available only if the compile time constant HPX_HAVE_PARCELPORT_IBVERBS was defined while compiling the HPX core library (which is not defined by default).

The performance counters for the connection type mpi are available only if the compile time constant HPX_HAVE_PARCELPORT_MPI was defined while compiling the HPX core library (which is not defined by default).

Please see CMake Variables used to configure HPX for more details.

/data/time/<connection_type>/<operation>

where:
<operation> is one of the following: sent, received
<connection_type> is one of the following: tcp, ipc, ibverbs, mpi

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 transmission operation and the end of the corresponding operation for the specified <connection_type> the given locality (see <operation>, e.g. sent or received).

The performance counters for the connection type ipc are available only if the compile time constant HPX_HAVE_PARCELPORT_IPC was defined while compiling the HPX core library (which is not defined by default).

The performance counters for the connection type ibverbs are available only if the compile time constant HPX_HAVE_PARCELPORT_IBVERBS was defined while compiling the HPX core library (which is not defined by default).

The performance counters for the connection type mpi are available only if the compile time constant HPX_HAVE_PARCELPORT_MPI was defined while compiling the HPX core library (which is not defined by default).

Please see CMake Variables used to configure HPX for more details.

/serialize/count/<connection_type>/<operation>

where:
<operation> is one of the following: sent, received
<connection_type> is one of the following: tcp, ipc, ibverbs, mpi

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, possibly compressed) for the specified <connection_type> by the given locality.

The performance counters for the connection type ipc are available only if the compile time constant HPX_HAVE_PARCELPORT_IPC was defined while compiling the HPX core library (which is not defined by default).

The performance counters for the connection type ibverbs are available only if the compile time constant HPX_HAVE_PARCELPORT_IBVERBS was defined while compiling the HPX core library (which is not defined by default).

The performance counters for the connection type mpi are available only if the compile time constant HPX_HAVE_PARCELPORT_MPI was defined while compiling the HPX core library (which is not defined by default).

Please see CMake Variables used to configure HPX for more details.

/serialize/time/<connection_type>/<operation>

where:
<operation> is one of the following: sent, received
<connection_type> is one of the following: tcp, ipc, ibverbs, mpi

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 for the specified <connection_type>on the given locality (see <operation>, e.g. sent or received).

The performance counters for the connection type ipc are available only if the compile time constant HPX_HAVE_PARCELPORT_IPC was defined while compiling the HPX core library (which is not defined by default).

The performance counters for the connection type ibverbs are available only if the compile time constant HPX_HAVE_PARCELPORT_IBVERBS was defined while compiling the HPX core library (which is not defined by default).

The performance counters for the connection type mpi are available only if the compile time constant HPX_HAVE_PARCELPORT_MPI was defined while compiling the HPX core library (which is not defined by default).

Please see CMake Variables used to configure HPX for more details.

/security/time/<connection_type>/<operation>

where:
<operation> is one of the following: sent, received
<connection_type> is one of the following: tcp, ipc, ibverbs, mpi

locality#*/total

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

None

Returns the overall time spent performing outgoing security operations for the specified <connection_type>on the given locality (see <operation>, e.g. sent or received).

The performance counters for the connection type ipc are available only if the compile time constant HPX_HAVE_PARCELPORT_IPC was defined while compiling the HPX core library (which is not defined by default).

The performance counters for the connection type ibverbs are available only if the compile time constant HPX_HAVE_PARCELPORT_IBVERBS was defined while compiling the HPX core library (which is not defined by default).

The performance counters for the connection type mpi are available only if the compile time constant HPX_HAVE_PARCELPORT_MPI was defined while compiling the HPX core library (which is not defined by default).

These performance counters are available only if the compile time constant HPX_HAVE_SECURITY was defined while compiling the HPX core library (which is not defined by default).

Please see CMake Variables used to configure HPX for more details.

/parcels/count/routed

locality#*/total

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

None

Returns the overall number of routed (outbound) parcels transferred by the given locality.

Routed parcels are those which cannot directly be delivered to its destination as the local AGAS is not able to resolve the destination address. In this case a parcel is sent to the AGAS service component which is responsible for creating the destination GID (and is responsible for resolving the destination address). This AGAS service component will deliver the parcel to its final target.

/parcels/count/<connection_type>/<operation>

where:
<operation> is one of the following: sent, received
<connection_type> is one of the following: tcp, ipc, ibverbs, mpi

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 using the specified <connection_type> by the given locality (see <operation>, e.g. sent or received).

The performance counters for the connection type ipc are available only if the compile time constant HPX_HAVE_PARCELPORT_IPC was defined while compiling the HPX core library (which is not defined by default).

The performance counters for the connection type ibverbs are available only if the compile time constant HPX_HAVE_PARCELPORT_IBVERBS was defined while compiling the HPX core library (which is not defined by default).

The performance counters for the connection type mpi are available only if the compile time constant HPX_HAVE_PARCELPORT_MPI was defined while compiling the HPX core library (which is not defined by default).

Please see CMake Variables used to configure HPX for more details.

/messages/count/<connection_type>/<operation>

where:
<operation> is one of the following: sent, received
<connection_type> is one of the following: tcp, ipc, ibverbs, mpi

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 using the specified <connection_type> by the given locality (see <operation>, e.g. sent or received).

The performance counters for the connection type ipc are available only if the compile time constant HPX_HAVE_PARCELPORT_IPC was defined while compiling the HPX core library (which is not defined by default).

The performance counters for the connection type ibverbs are available only if the compile time constant HPX_HAVE_PARCELPORT_IBVERBS was defined while compiling the HPX core library (which is not defined by default).

The performance counters for the connection type mpi are available only if the compile time constant HPX_HAVE_PARCELPORT_MPI was defined while compiling the HPX core library (which is not defined by default).

Please see CMake Variables used to configure HPX for more details.

/parcelport/count/<connection_type>/<cache_statistics>

where:
<cache_statistics> is one of the following: cache-insertions, cache-evictions, cache-hits, cache-misses, cache-misses
<connection_type> is one of the following: tcp, ipc, ibverbs, mpi

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 cache events (evictions, hits, inserts, misses, and reclaims) for the connection cache of the given connection type on the given locality (see <cache_statistics>, e.g. cache-insertions, cache-evictions, cache-hits, cache-misses, or cache-reclaims).

The performance counters for the connection type ipc are available only if the compile time constant HPX_HAVE_PARCELPORT_IPC was defined while compiling the HPX core library (which is not defined by default).

The performance counters for the connection type ibverbs are available only if the compile time constant HPX_HAVE_PARCELPORT_IBVERBS was defined while compiling the HPX core library (which is not defined by default).

The performance counters for the connection type mpi are available only if the compile time constant HPX_HAVE_PARCELPORT_MPI was defined while compiling the HPX core library (which is not defined by default).

Please see CMake Variables used to configure HPX for more details.

/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).

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


Table 21. 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 all worker threads separately. This counter is available only if the configuration time constant HPX_THREAD_MAINTAIN_CUMULATIVE_COUNTS is set to ON (default: ON).

/threads/count/cumulative-phases

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

where:
locality#* is defining the locality for which the overall number of executed HPX-thread phases (invocations) 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 executed HPX-thread phases (invocations) 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 HPX-thread phases (invocations) on the given locality since application start. If the instance name is total the counter returns the accumulated number of executed HPX-thread phases (invocations) for all worker threads (cores) on that locality. If the instance name is worker-thread#* the counter will return the overall number of executed HPX-thread phases for all worker threads separately. This counter is available only if the configuration time constant HPX_THREAD_MAINTAIN_CUMULATIVE_COUNTS is set to ON (default: ON).

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

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

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.

The staged thread state refers to registered tasks before they are converted to thread objects.

None

Returns the current number of HPX-threads having the given thread state on the given locality. 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 all worker threads separately.

/threads/wait-time/<thread-state>

where:
<thread-state> is one of the following: pending, staged

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.

The staged thread state refers to the wait time of registered tasks before they are converted into thread objects, while the pending thread state refers to the wait time of threads in any of the scheduling queues.

None

Returns the average wait time of HPX-threads (if the thread state is pending) or of task descriptions (if the thread state is staged) on the given locality since application start. If the instance name is total the counter returns the wait time 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 wait time of HPX-threads in the given state for all worker threads separately.

These counters are available only if the compile time constant HPX_THREAD_MAINTAIN_QUEUE_WAITTIME was defined while compiling the HPX core library (default: OFF).

/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 average idle 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. This counter is available only if the configuration time constant HPX_THREAD_MAINTAIN_IDLE_RATES is set to ON (default: OFF)/.

/threads/creation-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 average idle rate for the given worker thread(s) on the given locality which is caused by creating new threads. The creation idle rate is defined as the ratio of the time spent on creating new threads and the overall time spent executing work since the application started. This counter is available only if the configuration time constants HPX_THREAD_MAINTAIN_IDLE_RATES (default: OFF) and HPX_THREAD_MAINTAIN_CREATION_AND_CLEANUP_RATES are set to ON.

/threads/cleanup-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 average idle rate for the given worker thread(s) on the given locality which is caused by cleaning up terminated threads. The cleanup idle rate is defined as the ratio of the time spent on cleaning up terminated thread objects and the overall time spent executing work since the application started. This counter is available only if the configuration time constants HPX_THREAD_MAINTAIN_IDLE_RATES (default: OFF) and HPX_THREAD_MAINTAIN_CREATION_AND_CLEANUP_RATES are set to ON.

/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.

/threads/count/stolen-from-pending

locality#*/total

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

None

Returns the total number of HPX-threads 'stolen' from the pending thread queue by a neighboring thread worker thread (these threads are executed by a different worker thread than they were initially scheduled on). This counter is available only if the configuration time constant HPX_THREAD_MAINTAIN_STEALING_COUNTS is set to ON (default: ON).

/threads/count/pending-misses

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 total number of times that the referenced worker-thread on the referenced locality failed to find pending HPX-threads in its associated queue. This counter is available only if the configuration time constant HPX_THREAD_MAINTAIN_STEALING_COUNTS is set to ON (default: ON).

/threads/count/pending-accesses

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 total number of times that the referenced worker-thread on the referenced locality looked for pending HPX-threads in its associated queue. This counter is available only if the configuration time constant HPX_THREAD_MAINTAIN_STEALING_COUNTS is set to ON (default: ON).

/threads/count/stolen-from-staged

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 total number of HPX-threads 'stolen' from the staged thread queue by a neighboring worker thread (these threads are executed by a different worker thread than they were initially scheduled on). This counter is available only if the configuration time constant HPX_THREAD_MAINTAIN_STEALING_COUNTS is set to ON (default: ON).

/threads/count/stolen-to-pending

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 total number of HPX-threads 'stolen' from the pending thread queue of a neighboring worker thread (these threads are executed by a different worker thread than they were initially scheduled on). This counter is available only if the configuration time constant HPX_THREAD_MAINTAIN_STEALING_COUNTS is set to ON (default: ON).

/threads/count/stolen-to-staged

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 total number of HPX-threads 'stolen' from the staged thread queue of a neighboring worker thread (these threads are executed by a different worker thread than they were initially scheduled on). This counter is available only if the configuration time constant HPX_THREAD_MAINTAIN_STEALING_COUNTS is set to ON (default: ON).

/threads/count/objects

locality#*/total or
locality#*/allocator#*

where:
locality#* is defining the locality for which the current (cumulative) number of all created HPX-thread objects should be queried for. The locality id (given by *) is a (zero based) number identifying the locality.

allocator#* is defining the number of the allocator instance using which the threads have been created. HPX uses a varying number of allocators to create (and recycle) HPX-thread objects, most likely these counters are of use for debugging purposes only. The allocator id (given by *) is a (zero based) number identifying the allocator to query.

None

Returns the total number of HPX-thread objects created. Note that thread objects are reused to improve system performance, thus this number does not reflect the number of actually executed (retired) HPX-threads.


Table 22. 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 23. 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/virtual

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 24. 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 as specified by the first parameter.

Returns the current average (mean) 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 1000 [ms] as the default.

/statistics/stddev

Any full performance counter name. The referenced performance counter is queried at fixed time intervals as specified by the first parameter.

Returns the current standard deviation (stddev) 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 1000 [ms] as the default.

/statistics/rolling_average

Any full performance counter name. The referenced performance counter is queried at fixed time intervals as specified by the first parameter.

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

Any parameter will be interpreted as a list of two comma separated (integer) values, where the first is the time interval (in milliseconds) at which the underlying counter should be queried. If no value is specified, the counter will assume 1000 [ms] as the default. The second value will be interpreted as the size of the rolling window (the number of latest values to use to calculate the rolling average). The default value for this is 10.

/statistics/median

Any full performance counter name. The referenced performance counter is queried at fixed time intervals as specified by the first parameter.

Returns the current (statistically estimated) median 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 1000 [ms] as the default.

/statistics/max

Any full performance counter name. The referenced performance counter is queried at fixed time intervals as specified by the first parameter.

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 1000 [ms] as the default.

/statistics/min

Any full performance counter name. The referenced performance counter is queried at fixed time intervals as specified by the first parameter.

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 1000 [ms] as the default.


Table 25. Performance Counters for Elementary Arithmetic Operations

Counter Type

Counter Instance Formatting

Parameters

Description

/arithmetics/add

None

Returns the sum calculated based on the values queried from the underlying counters (the ones specified as the parameters).

The parameter will be interpreted as a comma separated list of full performance counter names which are queried whenever this counter is accessed. Any wildcards in the counter names will be expanded.

/arithmetics/subtract

None

Returns the difference calculated based on the values queried from the underlying counters (the ones specified as the parameters).

The parameter will be interpreted as a comma separated list of full performance counter names which are queried whenever this counter is accessed. Any wildcards in the counter names will be expanded.

/arithmetics/multiply

None

Returns the product calculated based on the values queried from the underlying counters (the ones specified as the parameters).

The parameter will be interpreted as a comma separated list of full performance counter names which are queried whenever this counter is accessed. Any wildcards in the counter names will be expanded.

/arithmetics/divide

None

Returns the result of division of the values queried from the underlying counters (the ones specified as the parameters).

The parameter will be interpreted as a comma separated list of full performance counter names which are queried whenever this counter is accessed. Any wildcards in the counter names will be expanded.


[Note] Note

The /arithmetics counters can consume an arbitrary number of other counters. For this reason those have to be specified as parameters (a comma separated list of counters appended after a '@'). For instance:

./bin/hello_world -t2 \
    --hpx:print-counter=/threads{locality#0/worker-thread#*}/count/cumulative \
    --hpx:print-counter=/arithmetics/add@/threads{locality#0/worker-thread#*}/count/cumulative
hello world from OS-thread 0 on locality 0
hello world from OS-thread 1 on locality 0
/threads{locality#0/worker-thread#0}/count/cumulative,1,0.515640,[s],25
/threads{locality#0/worker-thread#1}/count/cumulative,1,0.515520,[s],36
/arithmetics/add@/threads{locality#0/worker-thread#*}/count/cumulative,1,0.516445,[s],64

Since all wildcards in the parameters are expanded, this example is fully equivalent to specifying both counters separately to /arithmetics/add:

./bin/hello_world -t2 \
    --hpx:print-counter=/threads{locality#0/worker-thread#*}/count/cumulative \
    --hpx:print-counter=/arithmetics/add@\
        /threads{locality#0/worker-thread#0}/count/cumulative,\
        /threads{locality#0/worker-thread#1}/count/cumulative

PrevUpHomeNext