Skip to content

fix(rocprofiler-systems): Stop delivering timer signals while paused - #9301

Merged
marantic-amd merged 5 commits into
users/marantic-amd/control-session-foundationfrom
users/marantic-amd/sampling-delay-wiring
Sep 10, 2026
Merged

marantic-amd merged 5 commits into
users/marantic-amd/control-session-foundationfrom
users/marantic-amd/sampling-delay-wiring

Conversation

@marantic-amd

@marantic-amd marantic-amd commented Jul 27, 2026 •

Copy link
Copy Markdown
Contributor

Motivation

Pausing sampling only stopped the samples from being recorded , it did not stop them being taken. sampling::pause() flipped trait::runtime_enabled<sampler_t>, which makes the signal handler discard the sample, but left the per-thread POSIX timers armed. They kept firing for the entire paused window, so the profiled application's nanosleep/sleep calls continued to be interrupted with EINTR while no data was being collected.

This is observable to the target program, not just to the trace: a paused profiler was still perturbing the workload it was supposed to have stopped watching. It matters for any pause path, a TRACE_DELAY/TRACE_DURATION window, a ROCTx region ending, SAMPLING_DURATION expiring.

Technical Details

  • sampling::pause() now stops each running per-thread sampler's timer, and resume() restarts it, via a new set_sampler_timers() helper in sampling.cpp. Sample suppression via block_samples()/unblock_samples() is unchanged and still applies.
  • The helper takes an enum class timer_state { stopped, running } rather than a bool, so the call sites read as set_sampler_timers(timer_state::stopped) instead of an opaque set_sampler_timers(false).
  • Iterating every thread's sampler and calling ->stop() from another thread is an existing pattern in this file (configure()'s teardown path does the same), so no new concurrency shape is introduced.
  • Adds examples/minimal/sleep_interrupts.cpp, which sleeps in 50 ms increments and reports how many were cut short by a signal. It uses nanosleep directly because std::this_thread::sleep_for retries on EINTR internally and would hide exactly the effect being measured. It sits alongside the existing recursion.cpp/pthreads.cpp reproducers in examples/minimal, which is already the home for single-purpose regression checks.

Issue Tracking

JIRA ID: AIPROFSYST-91

Test Plan

  • Whole-project build; full rocprof-sys-unit-tests binary.
  • New test_minimal.py::test_paused_sampling_leaves_sleeps_undisturbed, run as a matched pair: one run with sampling active (asserting the sleeps are interrupted, which confirms the platform exhibits the effect and the workload is configured correctly), and one with sampling paused via TRACE_DELAY (asserting they are not). The active run is what prevents the paused assertion from passing vacuously.
  • Existing pause/resume coverage: test_roctx.py, test_time_window.py, transpose-sampling.

Test Result

  • Build clean, no new warnings. rocprof-sys-unit-tests: 1193/1193.
  • test_minimal.py 6/6, test_roctx.py + test_time_window.py 9/9, transpose-sampling passing.
  • The new test was verified to fail without the fix: with the two pause()/resume() call sites removed and the project rebuilt, the paused subtest fails on its assertion while the active subtest still passes.
  • Measured on real hardware, 5 repeat runs per side with no variance.

Submission Checklist

@github-actions

github-actions Bot commented Jul 27, 2026 •

Copy link
Copy Markdown
Contributor

Code Coverage Report

Code Coverage Report

Unit Tests

Code Coverage: unit-tests

Lines: 🔴 23.7% — 8,686/36,680 across 329 files
Functions: 🔴 26.2% — 992/3,783

🔴 0-20% (192 files)
Lines Functions File
0.0% 0/10 0/2 build/coverage/_deps/nlohmann_json-src/include/nlohmann/byte_container_with_subtype.hpp
0.0% 0/1 0/1 build/coverage/_deps/spdlog-src/include/spdlog/details/log_msg_buffer.h
0.0% 0/1 0/1 build/coverage/_deps/spdlog-src/include/spdlog/sinks/ansicolor_sink.h
0.0% 0/2 0/1 build/coverage/include/profiler-hub/shared_types.hpp
0.0% 0/105 0/9 source/bin/common/argument_registration.hpp
0.0% 0/254 0/28 source/bin/common/tool_runner.cpp
0.0% 0/61 0/6 source/bin/rocprof-sys-avail/avail.hpp
0.0% 0/258 0/12 source/bin/rocprof-sys-avail/generate_config.cpp
0.0% 0/102 0/6 source/bin/rocprof-sys-avail/hw_counter_query.cpp
0.0% 0/446 0/47 source/bin/rocprof-sys-causal/impl.cpp
0.0% 0/80 0/2 source/bin/rocprof-sys-causal/rocprof-sys-causal.cpp
0.0% 0/673 0/46 source/bin/rocprof-sys-instrument/details.cpp
0.0% 0/91 0/7 source/bin/rocprof-sys-instrument/function_signature.cpp
0.0% 0/20 0/5 source/bin/rocprof-sys-instrument/function_signature.hpp
0.0% 0/158 0/7 source/bin/rocprof-sys-instrument/info.hpp
0.0% 0/264 0/22 source/bin/rocprof-sys-instrument/internal_libs.cpp
0.0% 0/64 0/6 source/bin/rocprof-sys-instrument/log.cpp
0.0% 0/5 0/1 source/bin/rocprof-sys-instrument/log.hpp
0.0% 0/532 0/41 source/bin/rocprof-sys-instrument/module_function.cpp
0.0% 0/93 0/7 source/bin/rocprof-sys-instrument/module_function.hpp
0.0% 0/1536 0/87 source/bin/rocprof-sys-instrument/rocprof-sys-instrument.cpp
0.0% 0/157 0/12 source/bin/rocprof-sys-instrument/rocprof-sys-instrument.hpp
0.0% 0/2 0/1 source/bin/rocprof-sys-run/rocprof-sys-run.cpp
0.0% 0/2 0/1 source/bin/rocprof-sys-sample/rocprof-sys-sample.cpp
0.0% 0/24 0/1 source/lib/backends/amd_smi/wrapper.hpp
0.0% 0/16 0/4 source/lib/binary/address_multirange.cpp
0.0% 0/9 0/1 source/lib/binary/address_multirange.hpp
0.0% 0/117 0/5 source/lib/binary/analysis.cpp
0.0% 0/7 0/1 source/lib/binary/binary_info.hpp
0.0% 0/102 0/9 source/lib/binary/dwarf_entry.cpp
0.0% 0/1 0/1 source/lib/binary/dwarf_entry.hpp
0.0% 0/69 0/6 source/lib/binary/link_map.cpp
0.0% 0/3 0/1 source/lib/binary/link_map.hpp
0.0% 0/10 0/1 source/lib/binary/scope_filter.cpp
0.0% 0/5 0/2 source/lib/binary/scope_filter.hpp
0.0% 0/158 0/18 source/lib/binary/symbol.cpp
0.0% 0/8 0/8 source/lib/binary/symbol.hpp
0.0% 0/9 0/2 source/lib/common/env_vars.hpp
0.0% 0/40 0/3 source/lib/common/invoke.hpp
0.0% 0/150 0/10 source/lib/common/md5sum.hpp
0.0% 0/22 0/2 source/lib/common/setup.hpp
0.0% 0/166 0/2 source/lib/core/agent_info.hpp
0.0% 0/80 0/18 source/lib/core/binary/address_range.cpp
0.0% 0/9 0/3 source/lib/core/binary/address_range.hpp
0.0% 0/21 0/6 source/lib/core/categories.cpp
0.0% 0/11 0/11 source/lib/core/components/fwd.hpp
0.0% 0/14 0/2 source/lib/core/containers/aligned_static_vector.hpp
0.0% 0/11 0/3 source/lib/core/containers/c_array.hpp
0.0% 0/1 0/1 source/lib/core/containers/operators.hpp
0.0% 0/46 0/12 source/lib/core/containers/stable_vector.hpp
0.0% 0/23 0/5 source/lib/core/containers/static_vector.hpp
0.0% 0/15 0/3 source/lib/core/control/clocks/steady.cpp
0.0% 0/2 0/2 source/lib/core/control/clocks/steady.hpp
0.0% 0/89 0/6 source/lib/core/cpu.cpp
0.0% 0/1 0/1 source/lib/core/cpu.hpp
0.0% 0/53 0/6 source/lib/core/dynamic_library.cpp
0.0% 0/28 0/7 source/lib/core/exception.cpp
0.0% 0/160 0/12 source/lib/core/gpu_metrics.cpp
0.0% 0/33 0/6 source/lib/core/mpi.hpp
0.0% 0/24 0/2 source/lib/core/node_info.cpp
0.0% 0/2 0/2 source/lib/core/node_info.hpp
0.0% 0/80 0/5 source/lib/core/perf.cpp
0.0% 0/51 0/5 source/lib/core/perfetto/cached_perfetto_session.cpp
0.0% 0/33 0/4 source/lib/core/perfetto/counter_track.hpp
0.0% 0/29 0/7 source/lib/core/perfetto/emitter.cpp
0.0% 0/48 0/9 source/lib/core/perfetto/emitter.hpp
0.0% 0/7 0/1 source/lib/core/perfetto/sinks/append_mode.hpp
0.0% 0/13 0/3 source/lib/core/perfetto/sinks/tee_sink.cpp
0.0% 0/1 0/1 source/lib/core/perfetto/sinks/tee_sink.hpp
0.0% 0/1 0/1 source/lib/core/progress/bar.hpp
0.0% 0/8 0/3 source/lib/core/sdk/tracing-config-deps.hpp
0.0% 0/54 0/3 source/lib/core/trace_cache/cache_manager.cpp
0.0% 0/7 0/3 source/lib/core/trace_cache/cache_manager.hpp
0.0% 0/516 0/71 source/lib/core/trace_cache/metadata_registry.cpp
0.0% 0/779 0/103 source/lib/core/trace_cache/perfetto_processor.cpp
0.0% 0/119 0/12 source/lib/core/trace_cache/post_processor.cpp
0.0% 0/829 0/32 source/lib/core/trace_cache/rocpd_processor.cpp
0.0% 0/77 0/1 source/lib/core/trace_cache/sample_processor.hpp
0.0% 0/14 0/6 source/lib/rocprof-sys-causal-api/causal_api.cpp
0.0% 0/539 0/85 source/lib/rocprof-sys-dl/dl.cpp
0.0% 0/16 0/1 source/lib/rocprof-sys-dl/main.c
0.0% 0/280 0/31 source/lib/rocprof-sys-rt/src/RTcommon.c
0.0% 0/29 0/4 source/lib/rocprof-sys-rt/src/RTheap-linux.c
0.0% 0/65 0/4 source/lib/rocprof-sys-rt/src/RTheap.c
0.0% 0/212 0/22 source/lib/rocprof-sys-rt/src/RTlinux.c
0.0% 0/97 0/8 source/lib/rocprof-sys-rt/src/RTposix.c
0.0% 0/6 0/2 source/lib/rocprof-sys-rt/src/RTsignal.c
0.0% 0/11 0/2 source/lib/rocprof-sys-rt/src/RTthread-x86-64.c
0.0% 0/3 0/1 source/lib/rocprof-sys-rt/src/RTthread.c
0.0% 0/84 0/20 source/lib/rocprof-sys/api.cpp
0.0% 0/669 0/40 source/lib/rocprof-sys/library.cpp
0.0% 0/73 0/6 source/lib/rocprof-sys/library/causal/components/backtrace.cpp
0.0% 0/7 0/2 source/lib/rocprof-sys/library/causal/components/backtrace.hpp
0.0% 0/105 0/11 source/lib/rocprof-sys/library/causal/components/blocking_gotcha.cpp
0.0% 0/33 0/7 source/lib/rocprof-sys/library/causal/components/causal_gotcha.cpp
0.0% 0/85 0/22 source/lib/rocprof-sys/library/causal/components/progress_point.cpp
0.0% 0/23 0/3 source/lib/rocprof-sys/library/causal/components/progress_point.hpp
0.0% 0/49 0/8 source/lib/rocprof-sys/library/causal/components/unblocking_gotcha.cpp
0.0% 0/553 0/33 source/lib/rocprof-sys/library/causal/data.cpp
0.0% 0/89 0/16 source/lib/rocprof-sys/library/causal/delay.cpp
0.0% 0/380 0/29 source/lib/rocprof-sys/library/causal/experiment.cpp
0.0% 0/3 0/2 source/lib/rocprof-sys/library/causal/experiment.hpp
0.0% 0/24 0/5 source/lib/rocprof-sys/library/causal/sample_data.cpp
0.0% 0/268 0/25 source/lib/rocprof-sys/library/causal/sampling.cpp
0.0% 0/4 0/1 source/lib/rocprof-sys/library/causal/selected_entry.cpp
0.0% 0/5 0/3 source/lib/rocprof-sys/library/causal/selected_entry.hpp
0.0% 0/71 0/11 source/lib/rocprof-sys/library/components/backtrace.cpp
0.0% 0/1 0/1 source/lib/rocprof-sys/library/components/backtrace.hpp
0.0% 0/214 0/30 source/lib/rocprof-sys/library/components/backtrace_metrics.cpp
0.0% 0/11 0/2 source/lib/rocprof-sys/library/components/backtrace_metrics.hpp
0.0% 0/9 0/3 source/lib/rocprof-sys/library/components/backtrace_timestamp.cpp
0.0% 0/4 0/2 source/lib/rocprof-sys/library/components/backtrace_timestamp.hpp
0.0% 0/71 0/10 source/lib/rocprof-sys/library/components/callchain.cpp
0.0% 0/1 0/1 source/lib/rocprof-sys/library/components/callchain.hpp
0.0% 0/367 0/30 source/lib/rocprof-sys/library/components/comm_data.cpp
0.0% 0/19 0/5 source/lib/rocprof-sys/library/components/comm_data.hpp
0.0% 0/8 0/2 source/lib/rocprof-sys/library/components/ensure_storage.hpp
0.0% 0/28 0/6 source/lib/rocprof-sys/library/components/exit_gotcha.cpp
0.0% 0/1 0/1 source/lib/rocprof-sys/library/components/exit_gotcha.hpp
0.0% 0/68 0/8 source/lib/rocprof-sys/library/components/fork_gotcha.cpp
0.0% 0/1 0/1 source/lib/rocprof-sys/library/components/fork_gotcha.hpp
0.0% 0/13 0/3 source/lib/rocprof-sys/library/components/kill_gotcha.cpp
0.0% 0/1 0/1 source/lib/rocprof-sys/library/components/kill_gotcha.hpp
0.0% 0/158 0/22 source/lib/rocprof-sys/library/components/mpi_gotcha.cpp
0.0% 0/2 0/1 source/lib/rocprof-sys/library/components/mpi_gotcha.hpp
0.0% 0/533 0/12 source/lib/rocprof-sys/library/components/mpip.hpp
0.0% 0/78 0/19 source/lib/rocprof-sys/library/components/numa_gotcha.cpp
0.0% 0/2 0/1 source/lib/rocprof-sys/library/components/numa_gotcha.hpp
0.0% 0/334 0/20 source/lib/rocprof-sys/library/components/pthread_create_gotcha.cpp
0.0% 0/5 0/1 source/lib/rocprof-sys/library/components/pthread_create_gotcha.hpp
0.0% 0/34 0/9 source/lib/rocprof-sys/library/components/pthread_gotcha.cpp
0.0% 0/24 0/2 source/lib/rocprof-sys/library/components/pthread_mutex_gotcha_policy.hpp
0.0% 0/164 0/31 source/lib/rocprof-sys/library/components/vaapi_gotcha.cpp
0.0% 0/2 0/1 source/lib/rocprof-sys/library/components/vaapi_gotcha.hpp
0.0% 0/143 0/10 source/lib/rocprof-sys/library/coverage.cpp
0.0% 0/29 0/5 source/lib/rocprof-sys/library/coverage.hpp
0.0% 0/60 0/16 source/lib/rocprof-sys/library/coverage/impl.hpp
0.0% 0/252 0/37 source/lib/rocprof-sys/library/kokkosp.cpp
0.0% 0/252 0/32 source/lib/rocprof-sys/library/perf.cpp
0.0% 0/11 0/3 source/lib/rocprof-sys/library/perf.hpp
0.0% 0/186 0/12 source/lib/rocprof-sys/library/pmc/collectors/common/settings.hpp
0.0% 0/66 0/5 source/lib/rocprof-sys/library/pmc/collectors/cpu/cache_policy.hpp
0.0% 0/47 0/6 source/lib/rocprof-sys/library/pmc/collectors/cpu/cpu_traits.hpp
0.0% 0/52 0/9 source/lib/rocprof-sys/library/pmc/collectors/cpu/perfetto_policy.hpp
0.0% 0/100 0/6 source/lib/rocprof-sys/library/pmc/collectors/gpu/cache_policy.hpp
0.0% 0/224 0/36 source/lib/rocprof-sys/library/pmc/collectors/gpu/perfetto_policy.hpp
0.0% 0/25 0/3 source/lib/rocprof-sys/library/pmc/collectors/gpu/sample.hpp
0.0% 0/32 0/3 source/lib/rocprof-sys/library/pmc/collectors/gpu_perf_counter/cache_policy.hpp
0.0% 0/39 0/7 source/lib/rocprof-sys/library/pmc/collectors/gpu_perf_counter/perfetto_policy.hpp
0.0% 0/16 0/2 source/lib/rocprof-sys/library/pmc/collectors/nic/sample.hpp
0.0% 0/14 0/2 source/lib/rocprof-sys/library/pmc/device_providers/procfs/provider.hpp
0.0% 0/148 0/18 source/lib/rocprof-sys/library/pmc/sampler.cpp
0.0% 0/114 0/11 source/lib/rocprof-sys/library/process_sampler.cpp
0.0% 0/15 0/3 source/lib/rocprof-sys/library/process_sampler.hpp
0.0% 0/2 0/1 source/lib/rocprof-sys/library/rocm.cpp
0.0% 0/1263 0/89 source/lib/rocprof-sys/library/rocprofiler-sdk.cpp
0.0% 0/111 0/13 source/lib/rocprof-sys/library/rocprofiler-sdk/counters.cpp
0.0% 0/17 0/6 source/lib/rocprof-sys/library/rocprofiler-sdk/counters.hpp
0.0% 0/129 0/9 source/lib/rocprof-sys/library/rocprofiler-sdk/fwd.cpp
0.0% 0/34 0/7 source/lib/rocprof-sys/library/rocprofiler-sdk/fwd.hpp
0.0% 0/36 0/9 source/lib/rocprof-sys/library/rocprofiler-sdk/marker_writer.cpp
0.0% 0/136 0/13 source/lib/rocprof-sys/library/rocprofiler-sdk/rccl.cpp
0.0% 0/108 0/10 source/lib/rocprof-sys/library/rocprofiler-sdk/roctx_client.cpp
0.0% 0/118 0/20 source/lib/rocprof-sys/library/runtime.cpp
0.0% 0/2 0/1 source/lib/rocprof-sys/library/runtime.hpp
0.0% 0/955 0/58 source/lib/rocprof-sys/library/sampling.cpp
0.0% 0/145 0/31 source/lib/rocprof-sys/library/thread_data.hpp
0.0% 0/10 0/3 source/lib/rocprof-sys/library/thread_data_growth.hpp
0.0% 0/10 0/1 source/lib/rocprof-sys/library/thread_deleter.cpp
0.0% 0/5 0/1 source/lib/rocprof-sys/library/thread_deleter.hpp
0.0% 0/161 0/27 source/lib/rocprof-sys/library/thread_info.cpp
0.0% 0/2 0/1 source/lib/rocprof-sys/library/thread_info.hpp
0.0% 0/113 0/11 source/lib/rocprof-sys/library/tracing.cpp
0.0% 0/109 0/30 source/lib/rocprof-sys/library/tracing.hpp
0.0% 0/3 0/1 source/lib/rocprof-sys/library/tracing/annotation.cpp
0.0% 0/45 0/4 source/lib/rocprof-sys/library/tracing/annotation.hpp
0.0% 0/8 0/2 source/lib/rocprof-sys/progress.cpp
0.0% 0/74 0/16 source/lib/rocprof-sys/regions.cpp
0.0% 0/91 0/6 source/lib/rocprof-sys/timeout.cpp
0.0% 0/440 0/45 source/python/libpyrocprofsys.cpp
0.6% 1/169 1/13 source/lib/core/perfetto.cpp
0.8% 7/859 1/74 source/lib/core/argparse.cpp
6.1% 2/33 1/3 source/lib/core/amd_smi.cpp
6.9% 31/449 6/53 build/coverage/_deps/fmt-src/include/fmt/chrono.h
7.1% 1/14 0/1 build/coverage/_deps/nlohmann_json-src/include/nlohmann/detail/iterators/primitive_iterator.hpp
13.2% 30/227 8/25 source/bin/rocprof-sys-avail/common.cpp
15.4% 4/26 0/6 source/lib/core/trace_cache/metadata_registry.hpp
18.0% 32/178 6/23 source/lib/core/gpu.cpp
18.2% 4/22 1/3 source/lib/common/static_object.hpp
18.8% 9/48 2/5 source/lib/core/output_file_registry.cpp
19.0% 4/21 0/2 source/lib/backends/rocprofiler_sdk/wrapper.hpp
19.4% 6/31 2/5 source/bin/common/common_utils.hpp
🟠 20-50% (12 files)
Lines Functions File
20.0% 1/5 0/2 source/lib/core/argparse.hpp
23.2% 13/56 1/4 source/lib/core/mproc.cpp
29.4% 354/1206 34/96 build/coverage/_deps/fmt-src/include/fmt/format.h
32.1% 52/162 7/17 build/coverage/_deps/nlohmann_json-src/include/nlohmann/detail/input/json_sax.hpp
32.8% 20/61 4/9 source/lib/core/utility.hpp
35.1% 13/37 1/4 source/lib/core/perfetto/sinks/io_helpers.hpp
35.1% 608/1730 156/302 source/lib/core/config.cpp
36.5% 23/63 6/12 source/lib/core/agent_manager.cpp
40.3% 195/484 14/17 build/coverage/_deps/nlohmann_json-src/include/nlohmann/detail/input/lexer.hpp
40.5% 17/42 5/12 build/coverage/_deps/nlohmann_json-src/include/nlohmann/detail/exceptions.hpp
46.0% 433/941 10/48 source/bin/rocprof-sys-avail/avail.cpp
49.6% 127/256 14/32 source/lib/rocprof-sys/library/components/category_region.hpp
🟡 50-80% (36 files)
Lines Functions File
50.0% 153/306 9/11 build/coverage/_deps/nlohmann_json-src/include/nlohmann/detail/output/serializer.hpp
50.0% 1/2 0/1 source/lib/rocprof-sys/library/pmc/collectors/nic/types.hpp
51.9% 220/424 25/37 source/bin/common/common_utils.cpp
52.0% 13/25 2/3 source/lib/rocprof-sys/library/pmc/collectors/gpu_perf_counter/gpu_perf_counter_traits.hpp
53.3% 8/15 3/3 source/lib/core/perfetto/sinks/per_pid_file_sink.cpp
54.0% 257/476 20/39 build/coverage/_deps/fmt-src/include/fmt/base.h
55.0% 22/40 4/6 build/coverage/_deps/fmt-src/include/fmt/ranges.h
55.7% 34/61 5/8 source/lib/rocprof-sys/library/pmc/collectors/cpu/sample.hpp
58.3% 14/24 3/8 build/coverage/_deps/nlohmann_json-src/include/nlohmann/detail/output/output_adapters.hpp
58.3% 7/12 0/4 build/coverage/_deps/spdlog-src/include/spdlog/common.h
60.0% 3/5 1/1 source/lib/core/agent.hpp
62.1% 18/29 1/1 source/lib/core/perfetto/locked_file_append.cpp
62.1% 41/66 7/8 source/lib/rocprof-sys/library/pmc/collectors/base/collector.hpp
62.8% 49/78 4/5 source/lib/core/trace_cache/discovery.cpp
63.1% 70/111 7/10 source/lib/core/progress/bar.cpp
63.4% 272/429 33/40 build/coverage/_deps/nlohmann_json-src/include/nlohmann/json.hpp
64.1% 336/524 26/40 source/bin/common/json_config.cpp
65.4% 34/52 4/4 build/coverage/_deps/nlohmann_json-src/include/nlohmann/detail/conversions/from_json.hpp
65.4% 17/26 2/3 source/lib/core/config.hpp
66.2% 47/71 5/5 source/lib/rocprof-sys/library/pmc/collectors/gpu/gpu_traits.hpp
66.4% 87/131 4/5 build/coverage/_deps/nlohmann_json-src/include/nlohmann/detail/input/parser.hpp
66.7% 2/3 0/2 source/lib/rocprof-sys/library/pmc/collectors/cpu/types.hpp
67.2% 43/64 11/14 source/lib/core/trace_cache/data_types.cpp
68.4% 39/57 4/6 source/lib/core/perfetto.hpp
68.8% 22/32 3/8 source/lib/rocprof-sys/library/pmc/collectors/gpu_perf_counter/types.hpp
71.1% 69/97 8/8 build/coverage/_deps/nlohmann_json-src/include/nlohmann/detail/iterators/iter_impl.hpp
71.9% 220/306 15/17 source/bin/common/preset_registry.cpp
72.2% 13/18 2/6 source/lib/rocprof-sys/library/rocprofiler-sdk/roctx_client.hpp
72.3% 86/119 14/17 source/lib/core/perfetto/engine.cpp
73.7% 28/38 6/7 build/coverage/_deps/nlohmann_json-src/include/nlohmann/detail/iterators/iteration_proxy.hpp
74.5% 41/55 4/7 source/lib/core/config/trace_period_config.hpp
75.0% 3/4 0/1 source/lib/backends/amd_smi/nic_types.hpp
75.0% 3/4 1/2 source/lib/core/perfetto/sinks/single_file_sink.hpp
76.5% 78/102 4/4 source/lib/core/perfetto/sinks/single_file_sink.cpp
77.8% 7/9 0/1 source/bin/rocprof-sys-avail/info_type.hpp
77.8% 77/99 10/11 source/lib/core/perfetto/engine_impl.hpp
🟢 80-100% (89 files)
Lines Functions File
80.0% 8/10 1/2 build/coverage/include/profiler-hub/writer_types.hpp
80.5% 62/77 9/10 source/lib/rocprof-sys/library/pmc/device_providers/rocprofiler_sdk/provider.hpp
81.1% 99/122 14/16 source/lib/common/path.hpp
82.8% 48/58 6/7 build/coverage/_deps/nlohmann_json-src/include/nlohmann/detail/conversions/to_json.hpp
83.9% 135/161 12/16 source/lib/backends/procfs/backend.hpp
85.0% 85/100 11/15 source/lib/logger/logger.hpp
85.1% 40/47 2/2 source/lib/core/trace_cache/storage_parser.hpp
86.9% 213/245 15/16 build/coverage/_deps/nlohmann_json-src/include/nlohmann/detail/conversions/to_chars.hpp
89.0% 276/310 30/35 source/lib/common/environment.hpp
89.1% 49/55 4/4 source/lib/rocprof-sys/library/pmc/collectors/gpu_perf_counter/device.hpp
89.1% 221/248 23/33 source/lib/core/sdk/tracing-config.hpp
89.1% 41/46 7/7 source/lib/core/control/triggers/time_window.hpp
89.5% 34/38 5/8 build/coverage/_deps/nlohmann_json-src/include/nlohmann/detail/input/input_adapters.hpp
90.0% 54/60 4/4 source/lib/core/trace_cache/buffer_storage.cpp
90.1% 100/111 8/8 source/lib/rocprof-sys/library/pmc/collectors/cpu/device.hpp
90.7% 303/334 28/31 source/lib/core/trace_cache/sample_type.hpp
90.9% 10/11 1/2 build/coverage/_deps/nlohmann_json-src/include/nlohmann/detail/json_ref.hpp
91.0% 243/267 19/20 source/lib/core/trace_cache/unified_memory_processor.cpp
91.3% 178/195 14/18 source/lib/rocprof-sys/library/components/shmem_gotcha.hpp
91.7% 11/12 2/2 source/lib/core/perfetto/session_backend.hpp
91.7% 44/48 4/4 source/lib/core/utility.cpp
92.2% 47/51 7/7 source/lib/core/control/clocks/posix.hpp
92.6% 163/176 9/9 source/lib/rocprof-sys/library/pmc/collectors/gpu/device.hpp
92.9% 13/14 0/1 source/lib/rocprof-sys/library/pmc/collectors/common/collector_slice.hpp
93.0% 40/43 6/11 source/lib/core/demangler.hpp
93.2% 68/73 7/8 source/lib/core/trace_cache/buffer_storage.hpp
94.1% 16/17 3/3 source/bin/rocprof-sys-avail/component_categories.hpp
94.2% 129/137 29/32 source/lib/backends/rocprofiler_sdk/backend.hpp
94.7% 36/38 7/7 build/coverage/_deps/spdlog-src/include/spdlog/logger.h
94.7% 54/57 6/8 source/lib/rocprof-sys/library/components/pthread_mutex_gotcha.hpp
94.8% 55/58 1/5 source/lib/core/trace_cache/cacheable.hpp
95.0% 19/20 4/6 build/coverage/_deps/nlohmann_json-src/include/nlohmann/detail/string_concat.hpp
95.7% 22/23 4/6 source/lib/common/synchronized.hpp
95.8% 23/24 2/4 source/lib/common/pci_bdf.hpp
95.9% 162/169 19/22 source/lib/rocprof-sys/library/components/ucx_gotcha.hpp
96.2% 25/26 1/2 source/lib/common/delimit.hpp
96.5% 82/85 11/12 source/lib/core/state.hpp
96.8% 30/31 3/4 source/lib/rocprof-sys/library/pmc/collectors/gpu_perf_counter/sample.hpp
97.3% 73/75 3/3 source/lib/core/perfetto/packet_framing.hpp
97.4% 74/76 6/6 source/lib/core/common_types.hpp
97.5% 39/40 6/7 source/lib/core/trace_cache/rocpd_helpers.hpp
97.7% 85/87 11/12 source/lib/core/control/triggers/roctx.cpp
97.8% 45/46 7/7 source/lib/rocprof-sys/library/rocprofiler-sdk/rccl_internal.hpp
97.9% 47/48 3/3 source/lib/rocprof-sys/library/pmc/collectors/nic/device.hpp
98.1% 51/52 7/7 source/lib/rocprof-sys/library/pmc/device_providers/amd_smi/provider.hpp
98.7% 78/79 15/16 source/lib/backends/amd_smi/backend.hpp
99.0% 98/99 16/16 source/lib/core/control/session.cpp
100.0% 14/14 1/1 build/coverage/_deps/fmt-src/include/fmt/ostream.h
100.0% 6/6 0/3 build/coverage/_deps/nlohmann_json-src/include/nlohmann/adl_serializer.hpp
100.0% 2/2 0/1 build/coverage/_deps/nlohmann_json-src/include/nlohmann/detail/input/position_t.hpp
100.0% 2/2 0/1 build/coverage/_deps/spdlog-src/include/spdlog/details/backtracer.h
100.0% 2/2 0/1 build/coverage/_deps/spdlog-src/include/spdlog/details/circular_q.h
100.0% 1/1 0/1 build/coverage/include/profiler-hub/reader_types.hpp
100.0% 1/1 0/1 source/bin/common/json_config.hpp
100.0% 39/39 2/2 source/bin/rocprof-sys-avail/get_availability.hpp
100.0% 10/10 1/1 source/bin/rocprof-sys-avail/get_categories.hpp
100.0% 4/4 1/1 source/bin/rocprof-sys-avail/info_type.cpp
100.0% 107/107 13/14 source/lib/backends/amd_smi/device.hpp
100.0% 7/7 0/1 source/lib/backends/amd_smi/gpu_types.hpp
100.0% 1/1 0/1 source/lib/backends/rocprofiler_sdk/types.hpp
100.0% 12/12 1/1 source/lib/common/join.hpp
100.0% 5/5 1/1 source/lib/common/string_utility.hpp
100.0% 11/11 2/3 source/lib/common/units/data_size.hpp
100.0% 11/11 2/3 source/lib/common/units/frequency.hpp
100.0% 11/11 2/3 source/lib/common/units/power.hpp
100.0% 5/5 0/2 source/lib/common/units/quantity.hpp
100.0% 8/8 0/2 source/lib/common/version.hpp
100.0% 2/2 1/2 source/lib/core/agent_manager.hpp
100.0% 15/15 3/5 source/lib/core/control/session.hpp
100.0% 3/3 0/2 source/lib/core/control/triggers/roctx.hpp
100.0% 1/1 0/1 source/lib/core/output_file_registry.hpp
100.0% 1/1 0/1 source/lib/core/perfetto/category_registry.hpp
100.0% 1/1 0/1 source/lib/core/perfetto/engine.hpp
100.0% 7/7 0/1 source/lib/core/perfetto/locked_file_append.hpp
100.0% 9/9 2/3 source/lib/core/perfetto/sinks/polymorphic_sink_view.hpp
100.0% 6/6 2/2 source/lib/core/perfetto/sinks/recording_sink.cpp
100.0% 5/5 0/2 source/lib/core/perfetto/sinks/recording_sink.hpp
100.0% 6/6 2/2 source/lib/core/progress/tracker.cpp
100.0% 1/1 0/1 source/lib/core/progress/tracker.hpp
100.0% 4/4 0/3 source/lib/core/trace_cache/data_types.hpp
100.0% 9/9 3/3 source/lib/core/trace_cache/type_registry.hpp
100.0% 24/24 4/5 source/lib/core/trace_cache/unified_memory_processor.hpp
100.0% 5/5 2/2 source/lib/core/track_registry.cpp
100.0% 4/4 0/2 source/lib/core/track_registry.hpp
100.0% 10/10 1/1 source/lib/logger/logger.cpp
100.0% 9/9 0/2 source/lib/rocprof-sys/library/pmc/collectors/gpu/types.hpp
100.0% 20/20 4/4 source/lib/rocprof-sys/library/pmc/collectors/nic/perfetto_policy.hpp
100.0% 2/2 0/2 source/lib/rocprof-sys/library/pmc/common/types.hpp
100.0% 34/34 3/4 source/lib/rocprof-sys/library/rocprofiler-sdk/marker_writer.hpp

Distribution

Range Files
0-20% 192
20-50% 12
50-80% 36
80-100% 89

E2E Tests

Code Coverage: e2e-tests

Lines: 🟡 63.5% — 23,274/36,680 across 329 files
Functions: 🟡 64.2% — 2,428/3,783

🔴 0-20% (50 files)
Lines Functions File
0.0% 0/10 0/2 build/coverage/_deps/nlohmann_json-src/include/nlohmann/byte_container_with_subtype.hpp
0.0% 0/1 0/1 build/coverage/_deps/spdlog-src/include/spdlog/details/log_msg_buffer.h
0.0% 0/1 0/1 build/coverage/_deps/spdlog-src/include/spdlog/sinks/ansicolor_sink.h
0.0% 0/2 0/1 build/coverage/include/profiler-hub/shared_types.hpp
0.0% 0/102 0/6 source/bin/rocprof-sys-avail/hw_counter_query.cpp
0.0% 0/24 0/1 source/lib/backends/amd_smi/wrapper.hpp
0.0% 0/166 0/2 source/lib/core/agent_info.hpp
0.0% 0/89 0/6 source/lib/core/cpu.cpp
0.0% 0/1 0/1 source/lib/core/cpu.hpp
0.0% 0/53 0/6 source/lib/core/dynamic_library.cpp
0.0% 0/28 0/7 source/lib/core/exception.cpp
0.0% 0/160 0/12 source/lib/core/gpu_metrics.cpp
0.0% 0/13 0/3 source/lib/core/perfetto/sinks/tee_sink.cpp
0.0% 0/1 0/1 source/lib/core/perfetto/sinks/tee_sink.hpp
0.0% 0/8 0/3 source/lib/core/sdk/tracing-config-deps.hpp
0.0% 0/6 0/2 source/lib/rocprof-sys-rt/src/RTsignal.c
0.0% 0/11 0/2 source/lib/rocprof-sys-rt/src/RTthread-x86-64.c
0.0% 0/3 0/1 source/lib/rocprof-sys-rt/src/RTthread.c
0.0% 0/1 0/1 source/lib/rocprof-sys/library/components/exit_gotcha.hpp
0.0% 0/1 0/1 source/lib/rocprof-sys/library/components/kill_gotcha.hpp
0.0% 0/52 0/9 source/lib/rocprof-sys/library/pmc/collectors/cpu/perfetto_policy.hpp
0.0% 0/100 0/6 source/lib/rocprof-sys/library/pmc/collectors/gpu/cache_policy.hpp
0.0% 0/224 0/36 source/lib/rocprof-sys/library/pmc/collectors/gpu/perfetto_policy.hpp
0.0% 0/25 0/3 source/lib/rocprof-sys/library/pmc/collectors/gpu/sample.hpp
0.0% 0/32 0/3 source/lib/rocprof-sys/library/pmc/collectors/gpu_perf_counter/cache_policy.hpp
0.0% 0/39 0/7 source/lib/rocprof-sys/library/pmc/collectors/gpu_perf_counter/perfetto_policy.hpp
0.0% 0/16 0/2 source/lib/rocprof-sys/library/pmc/collectors/nic/sample.hpp
0.0% 0/2 0/1 source/lib/rocprof-sys/library/rocm.cpp
0.0% 0/111 0/13 source/lib/rocprof-sys/library/rocprofiler-sdk/counters.cpp
0.0% 0/17 0/6 source/lib/rocprof-sys/library/rocprofiler-sdk/counters.hpp
0.0% 0/129 0/9 source/lib/rocprof-sys/library/rocprofiler-sdk/fwd.cpp
0.0% 0/136 0/13 source/lib/rocprof-sys/library/rocprofiler-sdk/rccl.cpp
0.0% 0/108 0/10 source/lib/rocprof-sys/library/rocprofiler-sdk/roctx_client.cpp
0.0% 0/3 0/1 source/lib/rocprof-sys/library/tracing/annotation.cpp
0.0% 0/45 0/4 source/lib/rocprof-sys/library/tracing/annotation.hpp
0.0% 0/440 0/45 source/python/libpyrocprofsys.cpp
0.6% 1/169 1/13 source/lib/core/perfetto.cpp
4.8% 61/1263 12/89 source/lib/rocprof-sys/library/rocprofiler-sdk.cpp
4.9% 8/164 2/31 source/lib/rocprof-sys/library/components/vaapi_gotcha.cpp
6.1% 2/33 1/3 source/lib/core/amd_smi.cpp
6.9% 31/449 6/53 build/coverage/_deps/fmt-src/include/fmt/chrono.h
7.1% 1/14 0/1 build/coverage/_deps/nlohmann_json-src/include/nlohmann/detail/iterators/primitive_iterator.hpp
8.3% 3/36 1/9 source/lib/rocprof-sys/library/rocprofiler-sdk/marker_writer.cpp
8.8% 3/34 0/7 source/lib/rocprof-sys/library/rocprofiler-sdk/fwd.hpp
13.6% 38/280 7/31 source/lib/rocprof-sys-rt/src/RTcommon.c
13.8% 4/29 1/4 source/lib/rocprof-sys-rt/src/RTheap-linux.c
14.2% 30/212 4/22 source/lib/rocprof-sys-rt/src/RTlinux.c
16.2% 12/74 4/16 source/lib/rocprof-sys/regions.cpp
18.0% 32/178 6/23 source/lib/core/gpu.cpp
19.0% 4/21 0/2 source/lib/backends/rocprofiler_sdk/wrapper.hpp
🟠 20-50% (25 files)
Lines Functions File
23.2% 192/829 9/32 source/lib/core/trace_cache/rocpd_processor.cpp
23.6% 122/516 24/71 source/lib/core/trace_cache/metadata_registry.cpp
23.8% 19/80 3/5 source/lib/core/perf.cpp
27.8% 27/97 4/8 source/lib/rocprof-sys-rt/src/RTposix.c
31.2% 243/779 32/103 source/lib/core/trace_cache/perfetto_processor.cpp
31.7% 59/186 6/12 source/lib/rocprof-sys/library/pmc/collectors/common/settings.hpp
32.1% 52/162 7/17 build/coverage/_deps/nlohmann_json-src/include/nlohmann/detail/input/json_sax.hpp
35.1% 423/1206 43/96 build/coverage/_deps/fmt-src/include/fmt/format.h
35.7% 30/84 10/20 source/lib/rocprof-sys/api.cpp
35.7% 10/28 3/6 source/lib/rocprof-sys/library/components/exit_gotcha.cpp
37.1% 39/105 5/11 source/lib/rocprof-sys/library/causal/components/blocking_gotcha.cpp
38.5% 5/13 2/3 source/lib/rocprof-sys/library/components/kill_gotcha.cpp
38.8% 31/80 1/2 source/bin/rocprof-sys-causal/rocprof-sys-causal.cpp
40.3% 195/484 14/17 build/coverage/_deps/nlohmann_json-src/include/nlohmann/detail/input/lexer.hpp
40.5% 17/42 5/12 build/coverage/_deps/nlohmann_json-src/include/nlohmann/detail/exceptions.hpp
41.3% 26/63 7/12 source/lib/core/agent_manager.cpp
43.8% 21/48 6/9 source/lib/core/perfetto/emitter.hpp
44.4% 4/9 1/3 source/lib/rocprof-sys/library/components/backtrace_timestamp.cpp
45.0% 27/60 6/16 source/lib/rocprof-sys/library/coverage/impl.hpp
45.6% 72/158 3/7 source/bin/rocprof-sys-instrument/info.hpp
46.2% 42/91 2/6 source/lib/rocprof-sys/timeout.cpp
47.7% 31/65 3/4 source/lib/rocprof-sys-rt/src/RTheap.c
47.7% 52/109 12/30 source/lib/rocprof-sys/library/tracing.hpp
48.3% 14/29 5/7 source/lib/core/perfetto/emitter.cpp
48.5% 178/367 16/30 source/lib/rocprof-sys/library/components/comm_data.cpp
🟡 50-80% (67 files)
Lines Functions File
50.0% 8/16 2/4 source/lib/binary/address_multirange.cpp
50.0% 7/14 2/6 source/lib/rocprof-sys-causal-api/causal_api.cpp
50.0% 1/2 0/1 source/lib/rocprof-sys/library/components/numa_gotcha.hpp
50.0% 1/2 0/1 source/lib/rocprof-sys/library/components/vaapi_gotcha.hpp
50.0% 1/2 0/1 source/lib/rocprof-sys/library/pmc/collectors/nic/types.hpp
50.0% 1/2 0/1 source/lib/rocprof-sys/library/thread_info.hpp
50.0% 4/8 1/2 source/lib/rocprof-sys/progress.cpp
52.0% 13/25 2/3 source/lib/rocprof-sys/library/pmc/collectors/gpu_perf_counter/gpu_perf_counter_traits.hpp
52.4% 132/252 27/37 source/lib/rocprof-sys/library/kokkosp.cpp
53.2% 41/77 0/1 source/lib/core/trace_cache/sample_processor.hpp
55.0% 22/40 4/6 build/coverage/_deps/fmt-src/include/fmt/ranges.h
56.2% 172/306 9/11 build/coverage/_deps/nlohmann_json-src/include/nlohmann/detail/output/serializer.hpp
56.4% 44/78 8/19 source/lib/rocprof-sys/library/components/numa_gotcha.cpp
57.5% 23/40 1/3 source/lib/common/invoke.hpp
58.3% 14/24 3/8 build/coverage/_deps/nlohmann_json-src/include/nlohmann/detail/output/output_adapters.hpp
58.3% 7/12 0/4 build/coverage/_deps/spdlog-src/include/spdlog/common.h
59.5% 88/148 13/18 source/lib/rocprof-sys/library/pmc/sampler.cpp
60.0% 63/105 5/9 source/bin/common/argument_registration.hpp
60.0% 3/5 1/1 source/lib/core/agent.hpp
60.7% 130/214 12/30 source/lib/rocprof-sys/library/components/backtrace_metrics.cpp
61.8% 42/68 5/8 source/lib/rocprof-sys/library/components/fork_gotcha.cpp
62.1% 18/29 1/1 source/lib/core/perfetto/locked_file_append.cpp
62.5% 50/80 13/18 source/lib/core/binary/address_range.cpp
62.8% 49/78 4/5 source/lib/core/trace_cache/discovery.cpp
63.1% 70/111 7/10 source/lib/core/progress/bar.cpp
63.9% 161/252 24/32 source/lib/rocprof-sys/library/perf.cpp
64.3% 306/476 23/39 build/coverage/_deps/fmt-src/include/fmt/base.h
65.4% 34/52 4/4 build/coverage/_deps/nlohmann_json-src/include/nlohmann/detail/conversions/from_json.hpp
65.5% 281/429 33/40 build/coverage/_deps/nlohmann_json-src/include/nlohmann/json.hpp
66.1% 37/56 3/4 source/lib/core/mproc.cpp
66.2% 47/71 5/5 source/lib/rocprof-sys/library/pmc/collectors/gpu/gpu_traits.hpp
66.4% 87/131 4/5 build/coverage/_deps/nlohmann_json-src/include/nlohmann/detail/input/parser.hpp
66.9% 79/118 15/20 source/lib/rocprof-sys/library/runtime.cpp
67.6% 25/37 3/4 source/lib/core/perfetto/sinks/io_helpers.hpp
68.8% 22/32 3/8 source/lib/rocprof-sys/library/pmc/collectors/gpu_perf_counter/types.hpp
69.1% 465/673 34/46 source/bin/rocprof-sys-instrument/details.cpp
69.2% 373/539 40/85 source/lib/rocprof-sys-dl/dl.cpp
69.2% 18/26 2/6 source/lib/core/trace_cache/metadata_registry.hpp
70.2% 40/57 4/6 source/lib/core/perfetto.hpp
70.3% 64/91 5/7 source/bin/rocprof-sys-instrument/function_signature.cpp
70.9% 112/158 16/22 source/lib/rocprof-sys/library/components/mpi_gotcha.cpp
71.1% 69/97 8/8 build/coverage/_deps/nlohmann_json-src/include/nlohmann/detail/iterators/iter_impl.hpp
71.4% 10/14 1/2 source/lib/core/containers/aligned_static_vector.hpp
71.4% 35/49 5/8 source/lib/rocprof-sys/library/causal/components/unblocking_gotcha.cpp
72.2% 13/18 2/6 source/lib/rocprof-sys/library/rocprofiler-sdk/roctx_client.hpp
72.7% 24/33 5/7 source/lib/rocprof-sys/library/causal/components/causal_gotcha.cpp
73.4% 701/955 46/58 source/lib/rocprof-sys/library/sampling.cpp
73.7% 28/38 6/7 build/coverage/_deps/nlohmann_json-src/include/nlohmann/detail/iterators/iteration_proxy.hpp
74.0% 409/553 30/33 source/lib/rocprof-sys/library/causal/data.cpp
74.2% 227/306 16/17 source/bin/common/preset_registry.cpp
74.5% 35/47 4/6 source/lib/rocprof-sys/library/pmc/collectors/cpu/cpu_traits.hpp
75.0% 15/20 5/5 source/bin/rocprof-sys-instrument/function_signature.hpp
75.0% 3/4 0/1 source/lib/backends/amd_smi/nic_types.hpp
75.0% 18/24 4/5 source/lib/rocprof-sys/library/causal/sample_data.cpp
75.2% 394/524 30/40 source/bin/common/json_config.cpp
75.5% 1159/1536 51/87 source/bin/rocprof-sys-instrument/rocprof-sys-instrument.cpp
75.6% 90/119 11/12 source/lib/core/trace_cache/post_processor.cpp
76.5% 407/532 40/41 source/bin/rocprof-sys-instrument/module_function.cpp
76.6% 49/64 5/6 source/bin/rocprof-sys-instrument/log.cpp
76.8% 53/69 5/6 source/lib/binary/link_map.cpp
77.3% 17/22 3/3 source/lib/common/static_object.hpp
77.4% 328/424 35/37 source/bin/common/common_utils.cpp
77.9% 113/145 26/31 source/lib/rocprof-sys/library/thread_data.hpp
78.0% 209/268 23/25 source/lib/rocprof-sys/library/causal/sampling.cpp
79.1% 201/254 24/28 source/bin/common/tool_runner.cpp
79.2% 19/24 2/2 source/lib/core/node_info.cpp
79.9% 211/264 20/22 source/bin/rocprof-sys-instrument/internal_libs.cpp
🟢 80-100% (187 files)
Lines Functions File
80.0% 4/5 0/1 source/bin/rocprof-sys-instrument/log.hpp
80.5% 62/77 9/10 source/lib/rocprof-sys/library/pmc/device_providers/rocprofiler_sdk/provider.hpp
81.2% 69/85 17/22 source/lib/rocprof-sys/library/causal/components/progress_point.cpp
81.2% 13/16 1/1 source/lib/rocprof-sys-dl/main.c
81.4% 131/161 24/27 source/lib/rocprof-sys/library/thread_info.cpp
81.7% 1413/1730 277/302 source/lib/core/config.cpp
81.8% 81/99 11/11 source/lib/core/perfetto/engine_impl.hpp
82.4% 42/51 5/5 source/lib/core/perfetto/cached_perfetto_session.cpp
82.4% 187/227 22/25 source/bin/rocprof-sys-avail/common.cpp
83.1% 556/669 35/40 source/lib/rocprof-sys/library.cpp
83.3% 85/102 4/4 source/lib/core/perfetto/sinks/single_file_sink.cpp
83.4% 131/157 12/12 source/bin/rocprof-sys-instrument/rocprof-sys-instrument.hpp
84.2% 16/19 3/5 source/lib/rocprof-sys/library/components/comm_data.hpp
84.3% 86/102 8/9 source/lib/binary/dwarf_entry.cpp
84.8% 134/158 17/18 source/lib/binary/symbol.cpp
84.8% 56/66 8/8 source/lib/rocprof-sys/library/pmc/collectors/base/collector.hpp
85.3% 324/380 18/29 source/lib/rocprof-sys/library/causal/experiment.cpp
85.4% 76/89 14/16 source/lib/rocprof-sys/library/causal/delay.cpp
86.0% 86/100 11/15 source/lib/logger/logger.hpp
86.0% 80/93 5/7 source/bin/rocprof-sys-instrument/module_function.hpp
87.0% 47/54 3/3 source/lib/core/trace_cache/cache_manager.cpp
87.4% 390/446 35/47 source/bin/rocprof-sys-causal/impl.cpp
87.5% 42/48 4/5 source/lib/core/output_file_registry.cpp
87.6% 141/161 13/16 source/lib/backends/procfs/backend.hpp
87.6% 99/113 10/11 source/lib/rocprof-sys/library/tracing.cpp
88.8% 127/143 10/10 source/lib/rocprof-sys/library/coverage.cpp
89.0% 276/310 31/35 source/lib/common/environment.hpp
89.1% 49/55 4/4 source/lib/rocprof-sys/library/pmc/collectors/gpu_perf_counter/device.hpp
89.1% 221/248 23/33 source/lib/core/sdk/tracing-config.hpp
89.4% 768/859 59/74 source/lib/core/argparse.cpp
89.8% 220/245 15/16 build/coverage/_deps/nlohmann_json-src/include/nlohmann/detail/conversions/to_chars.hpp
90.0% 9/10 1/1 source/lib/binary/scope_filter.cpp
90.0% 54/60 4/4 source/lib/core/trace_cache/buffer_storage.cpp
90.0% 9/10 1/1 source/lib/rocprof-sys/library/thread_deleter.cpp
90.1% 64/71 9/11 source/lib/rocprof-sys/library/components/backtrace.cpp
90.1% 64/71 7/10 source/lib/rocprof-sys/library/components/callchain.cpp
90.7% 303/334 28/31 source/lib/core/trace_cache/sample_type.hpp
90.9% 10/11 1/2 build/coverage/_deps/nlohmann_json-src/include/nlohmann/detail/json_ref.hpp
90.9% 20/22 2/2 source/lib/common/setup.hpp
91.0% 243/267 19/20 source/lib/core/trace_cache/unified_memory_processor.cpp
91.1% 235/258 11/12 source/bin/rocprof-sys-avail/generate_config.cpp
91.3% 21/23 4/5 source/lib/core/containers/static_vector.hpp
91.3% 305/334 18/20 source/lib/rocprof-sys/library/components/pthread_create_gotcha.cpp
91.5% 107/117 5/5 source/lib/binary/analysis.cpp
91.7% 11/12 2/2 source/lib/core/perfetto/session_backend.hpp
91.9% 102/111 8/8 source/lib/rocprof-sys/library/pmc/collectors/cpu/device.hpp
92.2% 47/51 7/7 source/lib/core/control/clocks/posix.hpp
92.6% 163/176 9/9 source/lib/rocprof-sys/library/pmc/collectors/gpu/device.hpp
92.8% 873/941 41/48 source/bin/rocprof-sys-avail/avail.cpp
92.9% 13/14 2/2 source/lib/rocprof-sys/library/pmc/device_providers/procfs/provider.hpp
93.1% 27/29 3/5 source/lib/rocprof-sys/library/coverage.hpp
93.2% 68/73 7/8 source/lib/core/trace_cache/buffer_storage.hpp
93.3% 111/119 16/17 source/lib/core/perfetto/engine.cpp
93.3% 14/15 3/3 source/lib/core/perfetto/sinks/per_pid_file_sink.cpp
93.4% 239/256 28/32 source/lib/rocprof-sys/library/components/category_region.hpp
93.9% 107/114 11/11 source/lib/rocprof-sys/library/process_sampler.cpp
93.9% 31/33 6/6 source/lib/core/mpi.hpp
94.1% 16/17 3/3 source/bin/rocprof-sys-avail/component_categories.hpp
94.1% 32/34 7/9 source/lib/rocprof-sys/library/components/pthread_gotcha.cpp
94.2% 129/137 29/32 source/lib/backends/rocprofiler_sdk/backend.hpp
94.7% 36/38 7/7 build/coverage/_deps/spdlog-src/include/spdlog/logger.h
94.8% 55/58 1/5 source/lib/core/trace_cache/cacheable.hpp
95.0% 19/20 4/6 build/coverage/_deps/nlohmann_json-src/include/nlohmann/detail/string_concat.hpp
95.1% 116/122 15/16 source/lib/common/path.hpp
95.1% 58/61 7/8 source/lib/rocprof-sys/library/pmc/collectors/cpu/sample.hpp
95.4% 186/195 16/18 source/lib/rocprof-sys/library/components/shmem_gotcha.hpp
95.7% 44/46 10/12 source/lib/core/containers/stable_vector.hpp
95.7% 45/47 2/2 source/lib/core/trace_cache/storage_parser.hpp
95.8% 23/24 2/4 source/lib/common/pci_bdf.hpp
95.9% 162/169 19/22 source/lib/rocprof-sys/library/components/ucx_gotcha.hpp
95.9% 70/73 6/6 source/lib/rocprof-sys/library/causal/components/backtrace.cpp
96.2% 25/26 1/2 source/lib/common/delimit.hpp
96.6% 56/58 7/7 build/coverage/_deps/nlohmann_json-src/include/nlohmann/detail/conversions/to_json.hpp
96.7% 59/61 9/9 source/lib/core/utility.hpp
96.8% 30/31 3/4 source/lib/rocprof-sys/library/pmc/collectors/gpu_perf_counter/sample.hpp
96.9% 62/64 14/14 source/lib/core/trace_cache/data_types.cpp
97.0% 32/33 4/4 source/lib/core/perfetto/counter_track.hpp
97.3% 73/75 3/3 source/lib/core/perfetto/packet_framing.hpp
97.4% 74/76 6/6 source/lib/core/common_types.hpp
97.5% 39/40 6/7 source/lib/core/trace_cache/rocpd_helpers.hpp
97.7% 85/87 11/12 source/lib/core/control/triggers/roctx.cpp
97.8% 45/46 7/7 source/lib/rocprof-sys/library/rocprofiler-sdk/rccl_internal.hpp
97.9% 47/48 4/4 source/lib/core/utility.cpp
97.9% 47/48 3/3 source/lib/rocprof-sys/library/pmc/collectors/nic/device.hpp
98.0% 147/150 9/10 source/lib/common/md5sum.hpp
98.1% 51/52 7/7 source/lib/rocprof-sys/library/pmc/device_providers/amd_smi/provider.hpp
98.2% 56/57 6/8 source/lib/rocprof-sys/library/components/pthread_mutex_gotcha.hpp
98.7% 78/79 15/16 source/lib/backends/amd_smi/backend.hpp
99.0% 98/99 16/16 source/lib/core/control/session.cpp
100.0% 14/14 1/1 build/coverage/_deps/fmt-src/include/fmt/ostream.h
100.0% 6/6 0/3 build/coverage/_deps/nlohmann_json-src/include/nlohmann/adl_serializer.hpp
100.0% 38/38 7/8 build/coverage/_deps/nlohmann_json-src/include/nlohmann/detail/input/input_adapters.hpp
100.0% 2/2 0/1 build/coverage/_deps/nlohmann_json-src/include/nlohmann/detail/input/position_t.hpp
100.0% 2/2 0/1 build/coverage/_deps/spdlog-src/include/spdlog/details/backtracer.h
100.0% 2/2 0/1 build/coverage/_deps/spdlog-src/include/spdlog/details/circular_q.h
100.0% 1/1 0/1 build/coverage/include/profiler-hub/reader_types.hpp
100.0% 10/10 1/2 build/coverage/include/profiler-hub/writer_types.hpp
100.0% 31/31 4/5 source/bin/common/common_utils.hpp
100.0% 1/1 0/1 source/bin/common/json_config.hpp
100.0% 61/61 6/6 source/bin/rocprof-sys-avail/avail.hpp
100.0% 39/39 2/2 source/bin/rocprof-sys-avail/get_availability.hpp
100.0% 10/10 1/1 source/bin/rocprof-sys-avail/get_categories.hpp
100.0% 4/4 1/1 source/bin/rocprof-sys-avail/info_type.cpp
100.0% 9/9 0/1 source/bin/rocprof-sys-avail/info_type.hpp
100.0% 2/2 1/1 source/bin/rocprof-sys-run/rocprof-sys-run.cpp
100.0% 2/2 1/1 source/bin/rocprof-sys-sample/rocprof-sys-sample.cpp
100.0% 107/107 13/14 source/lib/backends/amd_smi/device.hpp
100.0% 7/7 0/1 source/lib/backends/amd_smi/gpu_types.hpp
100.0% 1/1 0/1 source/lib/backends/rocprofiler_sdk/types.hpp
100.0% 9/9 0/1 source/lib/binary/address_multirange.hpp
100.0% 7/7 1/1 source/lib/binary/binary_info.hpp
100.0% 1/1 0/1 source/lib/binary/dwarf_entry.hpp
100.0% 3/3 0/1 source/lib/binary/link_map.hpp
100.0% 5/5 1/2 source/lib/binary/scope_filter.hpp
100.0% 8/8 7/8 source/lib/binary/symbol.hpp
100.0% 9/9 2/2 source/lib/common/env_vars.hpp
100.0% 12/12 1/1 source/lib/common/join.hpp
100.0% 5/5 1/1 source/lib/common/string_utility.hpp
100.0% 23/23 5/6 source/lib/common/synchronized.hpp
100.0% 11/11 2/3 source/lib/common/units/data_size.hpp
100.0% 11/11 2/3 source/lib/common/units/frequency.hpp
100.0% 11/11 2/3 source/lib/common/units/power.hpp
100.0% 5/5 0/2 source/lib/common/units/quantity.hpp
100.0% 8/8 0/2 source/lib/common/version.hpp
100.0% 2/2 1/2 source/lib/core/agent_manager.hpp
100.0% 5/5 0/2 source/lib/core/argparse.hpp
100.0% 9/9 1/3 source/lib/core/binary/address_range.hpp
100.0% 21/21 6/6 source/lib/core/categories.cpp
100.0% 11/11 11/11 source/lib/core/components/fwd.hpp
100.0% 26/26 3/3 source/lib/core/config.hpp
100.0% 55/55 6/7 source/lib/core/config/trace_period_config.hpp
100.0% 11/11 1/3 source/lib/core/containers/c_array.hpp
100.0% 1/1 0/1 source/lib/core/containers/operators.hpp
100.0% 15/15 3/3 source/lib/core/control/clocks/steady.cpp
100.0% 2/2 2/2 source/lib/core/control/clocks/steady.hpp
100.0% 15/15 3/5 source/lib/core/control/session.hpp
100.0% 3/3 0/2 source/lib/core/control/triggers/roctx.hpp
100.0% 46/46 7/7 source/lib/core/control/triggers/time_window.hpp
100.0% 43/43 7/11 source/lib/core/demangler.hpp
100.0% 2/2 2/2 source/lib/core/node_info.hpp
100.0% 1/1 0/1 source/lib/core/output_file_registry.hpp
100.0% 1/1 0/1 source/lib/core/perfetto/category_registry.hpp
100.0% 1/1 0/1 source/lib/core/perfetto/engine.hpp
100.0% 7/7 0/1 source/lib/core/perfetto/locked_file_append.hpp
100.0% 7/7 1/1 source/lib/core/perfetto/sinks/append_mode.hpp
100.0% 9/9 2/3 source/lib/core/perfetto/sinks/polymorphic_sink_view.hpp
100.0% 6/6 2/2 source/lib/core/perfetto/sinks/recording_sink.cpp
100.0% 5/5 0/2 source/lib/core/perfetto/sinks/recording_sink.hpp
100.0% 4/4 2/2 source/lib/core/perfetto/sinks/single_file_sink.hpp
100.0% 1/1 0/1 source/lib/core/progress/bar.hpp
100.0% 6/6 2/2 source/lib/core/progress/tracker.cpp
100.0% 1/1 0/1 source/lib/core/progress/tracker.hpp
100.0% 85/85 11/12 source/lib/core/state.hpp
100.0% 7/7 1/3 source/lib/core/trace_cache/cache_manager.hpp
100.0% 4/4 0/3 source/lib/core/trace_cache/data_types.hpp
100.0% 9/9 3/3 source/lib/core/trace_cache/type_registry.hpp
100.0% 24/24 4/5 source/lib/core/trace_cache/unified_memory_processor.hpp
100.0% 5/5 2/2 source/lib/core/track_registry.cpp
100.0% 4/4 0/2 source/lib/core/track_registry.hpp
100.0% 10/10 1/1 source/lib/logger/logger.cpp
100.0% 7/7 1/2 source/lib/rocprof-sys/library/causal/components/backtrace.hpp
100.0% 23/23 2/3 source/lib/rocprof-sys/library/causal/components/progress_point.hpp
100.0% 3/3 1/2 source/lib/rocprof-sys/library/causal/experiment.hpp
100.0% 4/4 1/1 source/lib/rocprof-sys/library/causal/selected_entry.cpp
100.0% 5/5 2/3 source/lib/rocprof-sys/library/causal/selected_entry.hpp
100.0% 1/1 1/1 source/lib/rocprof-sys/library/components/backtrace.hpp
100.0% 11/11 1/2 source/lib/rocprof-sys/library/components/backtrace_metrics.hpp
100.0% 4/4 0/2 source/lib/rocprof-sys/library/components/backtrace_timestamp.hpp
100.0% 1/1 1/1 source/lib/rocprof-sys/library/components/callchain.hpp
100.0% 8/8 2/2 source/lib/rocprof-sys/library/components/ensure_storage.hpp
100.0% 1/1 0/1 source/lib/rocprof-sys/library/components/fork_gotcha.hpp
100.0% 2/2 0/1 source/lib/rocprof-sys/library/components/mpi_gotcha.hpp
100.0% 533/533 12/12 source/lib/rocprof-sys/library/components/mpip.hpp
100.0% 5/5 0/1 source/lib/rocprof-sys/library/components/pthread_create_gotcha.hpp
100.0% 24/24 1/2 source/lib/rocprof-sys/library/components/pthread_mutex_gotcha_policy.hpp
100.0% 11/11 0/3 source/lib/rocprof-sys/library/perf.hpp
100.0% 14/14 0/1 source/lib/rocprof-sys/library/pmc/collectors/common/collector_slice.hpp
100.0% 66/66 5/5 source/lib/rocprof-sys/library/pmc/collectors/cpu/cache_policy.hpp
100.0% 3/3 0/2 source/lib/rocprof-sys/library/pmc/collectors/cpu/types.hpp
100.0% 9/9 0/2 source/lib/rocprof-sys/library/pmc/collectors/gpu/types.hpp
100.0% 20/20 4/4 source/lib/rocprof-sys/library/pmc/collectors/nic/perfetto_policy.hpp
100.0% 2/2 0/2 source/lib/rocprof-sys/library/pmc/common/types.hpp
100.0% 15/15 2/3 source/lib/rocprof-sys/library/process_sampler.hpp
100.0% 34/34 3/4 source/lib/rocprof-sys/library/rocprofiler-sdk/marker_writer.hpp
100.0% 2/2 0/1 source/lib/rocprof-sys/library/runtime.hpp
100.0% 10/10 3/3 source/lib/rocprof-sys/library/thread_data_growth.hpp
100.0% 5/5 1/1 source/lib/rocprof-sys/library/thread_deleter.hpp

Distribution

Range Files
0-20% 50
20-50% 25
50-80% 67
80-100% 187

@marantic-amd
marantic-amd force-pushed the users/marantic-amd/sampling-delay-wiring branch from 71038cc to d2e1273 Compare July 30, 2026 09:09
@therock-pr-bot

therock-pr-bot Bot commented Jul 30, 2026 •

Copy link
Copy Markdown

✅ All Policy Checks Passed

Check Status Details
📝 PR Description ✅ Pass —
⛔ Forbidden Files ✅ Pass —
🧪 Unit Test ✅ Pass —
🚫 Draft PR 🔜 To Be Enabled —
🚩 Feature Flag 🔜 To Be Enabled —
📊 Code Coverage 🔜 To Be Enabled —

🎉 All policy checks passed!

📖 Need help? See the Policy FAQ for details on every check and how to fix failures.

🙋 Wish to Override Policy?

@marantic-amd
marantic-amd marked this pull request as ready for review July 30, 2026 13:54
@marantic-amd
marantic-amd requested review from a team and jrmadsen as code owners July 30, 2026 13:54
@marantic-amd
marantic-amd force-pushed the users/marantic-amd/sampling-delay-wiring branch from d2e1273 to 6fe89eb Compare August 6, 2026 13:00
@marantic-amd
marantic-amd force-pushed the users/marantic-amd/sampling-delay-wiring branch from 6fe89eb to 500ca62 Compare August 10, 2026 08:01
@marantic-amd
marantic-amd force-pushed the users/marantic-amd/sampling-delay-wiring branch from 500ca62 to 6f5e7b6 Compare August 11, 2026 11:40
@github-actions

github-actions Bot commented Aug 11, 2026 •

Copy link
Copy Markdown
Contributor

rocprofiler-systems CI Summary

Test Results (for commit 408ae20)

Workflow jobs covered: 36

Workflow Runs Avg Test Time Tests Skipped Failed
Ubuntu 22.04 5 29m 48s 2,595 105 0
Ubuntu 24.04 5 31m 53s 2,615 115 0
Debian 4 35m 42s 2,188 82 0
RHEL 12 36m 03s 6,228 307 1
System deps 10 31m 16s 5,414 226 0
Total 36 33m 14s 19,040 835 1

Failed Tests

RHEL (1 failed)
Artifact Failed Test
junit-build-rhel-primary-build-1 ucx-bcast-16384-binary-rewrite.ucx-bcast-16384-binary-rewrite

Sanitizers

Thread Undefined Address
Passed Passed Passed

@dgaliffiAMD
dgaliffiAMD force-pushed the users/marantic-amd/sampling-delay-wiring branch from 6f5e7b6 to 480d001 Compare August 11, 2026 20:01
@dgaliffiAMD dgaliffiAMD changed the title fix(trace-control): Stop delivering timer signals while paused fix(rocprofiler-systems): Stop delivering timer signals while paused Aug 12, 2026
@marantic-amd
marantic-amd force-pushed the users/marantic-amd/sampling-delay-wiring branch 4 times, most recently from 2bfc352 to 3e5f1db Compare August 14, 2026 07:31
@marantic-amd
marantic-amd force-pushed the users/marantic-amd/sampling-delay-wiring branch from 3e5f1db to 5b94045 Compare August 14, 2026 09:27
@marantic-amd
marantic-amd force-pushed the users/marantic-amd/sampling-delay-wiring branch from 5b94045 to c2934d1 Compare August 14, 2026 12:27
@marantic-amd
marantic-amd force-pushed the users/marantic-amd/sampling-delay-wiring branch 2 times, most recently from 504c3fc to 8b3a9ec Compare August 24, 2026 15:08
@marantic-amd
marantic-amd force-pushed the users/marantic-amd/sampling-delay-wiring branch from 8b3a9ec to fa24e9d Compare August 25, 2026 06:21
@marantic-amd
marantic-amd requested a review from a team August 25, 2026 06:26

@habajpai-amd habajpai-amd left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The timer stop/start implementation is already in this PR's base commit through PR #9074. The current PR only adds the example, its pytest, include cleanup, and a small formatting change in sampling.cpp. Please restack the branches or update the title and description so they describe what this PR actually changes.

@marantic-amd

Copy link
Copy Markdown
Contributor Author

The timer stop/start implementation is already in this PR's base commit through PR #9074. The current PR only adds the example, its pytest, include cleanup, and a small formatting change in sampling.cpp. Please restack the branches or update the title and description so they describe what this PR actually changes.

During the rebasing there were some changes in the code that required to move the feature to an earlier PR. I won't be restacking the PRs but I will update the description so that it matches what is actually added here.

@cfreeamd cfreeamd left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🤖 AI-assisted pre-review (for @cfreeamd)

The core sampling.cpp change looks correct and is well-documented. The overflow perf-event fix (dropping the close() so the fd stays open for a later start()) is a genuine bug fix and is fully present in this diff — it resolves the "fd never reopened" concern rather than leaving it for follow-up. The thread-created-while-paused path is also handled: removing the early-bail in configure() plus setting *_running = true means set_sampler_timers() re-arms the sampler on resume, so those threads are not orphaned. Leaving the CLOCK_THREAD_CPUTIME_ID trigger armed is a deliberate, sound choice — a CPU-time timer can't advance while its thread is blocked in a syscall, and parse_timer_data() already drops in-pause samples via spans_pause_interval(), so the foreign-thread timer_create binding issue is sidestepped rather than hit.

Two things worth addressing before merge: (1) test_paused_sampling_leaves_sleeps_undisturbed uses a 60s pause but the run is only ~3s, so it never exercises resume→timers-restart — the hardest part of this change goes untested; a short pause that verifies interruptions return after resume would close the gap. (2) Per @habajpai-amd, the title/description should be restacked or reworded: the timer stop/start machinery lands via the base PR #9074, so this PR effectively adds the example, its pytest, an include cleanup, and a formatting tweak. Minor example nits (save errno before clock_gettime, validate the iteration arg) are worth a quick pass since example code gets copied. No inline comments — this PR does not touch projects/rocr-runtime/.

@cfreeamd cfreeamd left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🤖 AI-assisted pre-review (for @cfreeamd) — follow-up after author update (2026-08-28 commits)

Author pushed 4 commits addressing parts of the original findings: the test was extended, the perf-event close() was removed to keep the fd open across pause, the early-bail from configure() was removed so threads born while paused get a configured sampler, and the CPU-time trigger was deliberately left armed with a documented rationale.

However, habajpai-amd filed a new CHANGES_REQUESTED on 2026-08-28 after reviewing those commits. The new concerns are substantive:

  • CPU-time sampling still broken for threads born while paused: configure() now skips _sampler->start() when paused (correct), but set_sampler_timers(running) on resume continues past the CPU-time trigger. A thread created during a pause window has its non-cputime timers armed on resume, but its CPU-time trigger is never started — it will never receive CPU-time samples. This partially contradicts the original review's dismissal of concern #7; that dismissal was correct for wall-clock timers but the CPU-time case is still broken.
  • Test gap: The new test uses ROCPROFSYS_SAMPLING_CPUTIME: OFF, so the CPU-time resume path remains untested.
  • TOCTOU race in configure() near line 846: Thread reads sampling_paused as false, a pause() completes before _sampler->start() executes, and the sampler fires into a paused window. Needs coordination with the pause/resume lock.
  • Perf fd/mmap not closed at teardown: Keeping the fd open for pause/resume is correct, but the permanent teardown path now leaks the fd and mmap.

Prior [Important] finding #2 (PR title/description mismatch for the stacked branch context) does not appear to have been addressed by the 2026-08-28 commits.

Re-review verdict: request-changes — blocking issues remain, independently confirmed by habajpai-amd's post-fix review.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants