Skip to content
Elad Persiko edited this page Apr 13, 2017 · 6 revisions

Throughout the code there are counting points. The counters are divided into classes. The classes are arranged in hierarchy. An example of classes and their relation maybe:

 ucp_worker->uct_iface->uct_ep->rc_fc

For example the group uct_ep contains the counters:am, put, get, atomic, bytes_short, bytes_bcopy, bytes_zcopy, no_res, flush, flush_wait.

The counters maybe printed in two ways: full report and summary. In full report mode all classes and their counters will be printed. The user may specified just subset of the counters to be printed. He may give a list of counters or a list of regular expressions (globing). The result will be just in one line. For example if the user specified the following

list:=*copy*,*eager*

then the result will look like:

[elrond1:13966] ucp_worker{rx_eager_msg:10000 rx_eager_chunk_exp:1670000 rx_eager_chunk_unexp:0} ucp_ep{tx_eager:10000 tx_eager_sync:0} uct_ep{bytes_bcopy:10253440130 uct_ep.bytes_zcopy:0}

Each counter will be accumulation of its instances with its class in the full report. For example: uct_ep.bytes_bcopy has 2 instance in:

ucp_worker-0x6aeb90:

    uct_iface-mlx5_0:1-0x6b4760:

         uct_ep-0x7289d0:

              bytes_bcopy: 10253440000

    uct_iface-mlx5_0:1-0x716020:

         uct_ep-0x732a30:

              bytes_bcopy: 130

The list will be in the var UCX_STATS_FILTER. If UCX_STATS_FILTER=* then full report will be provided. Otherwize a summary.

Clone this wiki locally