Skip to content

[rocprof-sys]: Replace CPU and sampling event timestamps with CLOCK_BOOTTIME to match GPU traces - #11667

Merged
sputhala-amd merged 7 commits into
developfrom
users/sputhala/clockMigration
Oct 8, 2026
Merged

sputhala-amd merged 7 commits into
developfrom
users/sputhala/clockMigration

Conversation

@sputhala-amd

@sputhala-amd sputhala-amd commented Sep 15, 2026 •

Copy link
Copy Markdown
Contributor

Motivation

HIP/HSA/kernel timestamps from rocprofiler-sdk use CLOCK_BOOTTIME, while CPU tracks and samples used CLOCK_MONOTONIC. On systems that have different CLOCK_BOOTTIME vs CLOCK_MONOTONIC, due to suspend/resume, traces shows both as one timeline and shows a misleading CPU vs GPU gap.

This change makes CLOCK_BOOTTIME the only trace timeline clock so CPU, sampling, and SDK records line up.
CPU-time sampling cadence is unchanged.

Technical Details

  • Add stateless internal control::clocks::timeline_now() / timeline_ns() helpers backed by CLOCK_BOOTTIME, independent of timemory and the stateful POSIX time-window clock.
  • Stamp CPU regions, call-stack samples, PMC samples, Kokkos events, pause intervals, and thread/process lifetimes with the common timeline clock.
  • Keep realtime sampling timers in sampling.cpp and causal/sampling.cpp on CLOCK_REALTIME; this clock only controls when sampling signals fire.
  • Configure perf event timestamps, including hardware and software overflow events, to use CLOCK_BOOTTIME.
  • Keep CPU-time sampling timers on CLOCK_THREAD_CPUTIME_ID.
  • Leave SDK record timestamps unchanged because rocprofiler-sdk already uses CLOCK_BOOTTIME.
  • Document that --trace-clock-id controls only collection start/stop timing, not event timestamps.

Note:

  • Probe CLOCK_BOOTTIME before profiling starts. If unavailable, disable all profiling - including SDK tracing - without terminating the target application. <- This fix was removed because during testing it was found that this fix will be unreachable as SDK library will abort before it reaches any fix in rocprofiler-systems:
 LD_PRELOAD="$PWD/libfake-boottime.so:$LD_PRELOAD" ./rocprof-sys-run -- ../transpose
F1006 10:56:06.485420 1008719 utility.hpp:77] clock_gettime failed: Invalid argument
*** Check failure stack trace: ***
Aborted (core dumped)

Issue Tracking

JIRA ID: AIPROFSYST-772

Test Plan

  • timeline_clock_test.available_on_linux confirms that CLOCK_BOOTTIME is available.
  • timeline_clock_test.uses_clock_boottime checks that both timeline_now() and timeline_ns() fall between surrounding clock_gettime(CLOCK_BOOTTIME) reads.
  • category_region_* (33 tests) confirms that the injected mock clock still drives the category-region seam. These tests do not verify the production CLOCK_BOOTTIME source.
  • On a machine whose boot-to-monotonic offset is seconds, collect CPU sampling together with HIP/HSA traces and confirm that Perfetto shows no suspend-sized gap between CPU and GPU events.
  • In that same run, compare the rocpd CPU and region timestamps with the SDK HIP/HSA timestamps.

Test Result

Current Behavior:

image image

After Fix:
image

Submission Checklist

@github-actions

github-actions Bot commented Sep 15, 2026 •

Copy link
Copy Markdown
Contributor

rocprofiler-systems CI Summary

Test Results (for commit 269a5aa)

Workflow jobs covered: 36

Workflow Runs Avg Test Time Tests Skipped Failed
Ubuntu 22.04 5 31m 07s 2,685 105 0
Ubuntu 24.04 5 29m 51s 2,705 115 0
Debian 4 38m 30s 2,260 82 0
RHEL 12 34m 38s 6,444 307 0
System deps 10 28m 59s 5,594 226 0
Total 36 32m 21s 19,688 835 0

Failed Tests

No failed tests reported.

Sanitizers

Thread Undefined Address
Passed Passed Passed

@github-actions github-actions Bot added documentation Improvements or additions to documentation project: rocprofiler-systems labels Sep 15, 2026
@therock-pr-bot

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?

@github-actions

github-actions Bot commented Sep 15, 2026 •

Copy link
Copy Markdown
Contributor

Code Coverage Report

Code Coverage Report

Unit Tests

Lines: 🔴 23.6% (📉 -3.55% vs base) — 8,069/34,217 across 324 files
Functions: 🔴 23.1% — 810/3,501

🔴 0-20% (177 files)
Lines Functions File
0.0% 0/106 0/9 source/bin/common/argument_registration.hpp
0.0% 0/267 0/28 source/bin/common/tool_runner.cpp
0.0% 0/992 0/48 source/bin/rocprof-sys-avail/avail.cpp
0.0% 0/60 0/6 source/bin/rocprof-sys-avail/avail.hpp
0.0% 0/223 0/24 source/bin/rocprof-sys-avail/common.cpp
0.0% 0/18 0/3 source/bin/rocprof-sys-avail/component_categories.hpp
0.0% 0/274 0/12 source/bin/rocprof-sys-avail/generate_config.cpp
0.0% 0/39 0/2 source/bin/rocprof-sys-avail/get_availability.hpp
0.0% 0/11 0/1 source/bin/rocprof-sys-avail/get_categories.hpp
0.0% 0/106 0/6 source/bin/rocprof-sys-avail/hw_counter_query.cpp
0.0% 0/4 0/1 source/bin/rocprof-sys-avail/info_type.cpp
0.0% 0/9 0/1 source/bin/rocprof-sys-avail/info_type.hpp
0.0% 0/454 0/47 source/bin/rocprof-sys-causal/impl.cpp
0.0% 0/82 0/2 source/bin/rocprof-sys-causal/rocprof-sys-causal.cpp
0.0% 0/706 0/45 source/bin/rocprof-sys-instrument/details.cpp
0.0% 0/106 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/160 0/7 source/bin/rocprof-sys-instrument/info.hpp
0.0% 0/277 0/22 source/bin/rocprof-sys-instrument/internal_libs.cpp
0.0% 0/63 0/5 source/bin/rocprof-sys-instrument/log.cpp
0.0% 0/5 0/1 source/bin/rocprof-sys-instrument/log.hpp
0.0% 0/547 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/1588 0/87 source/bin/rocprof-sys-instrument/rocprof-sys-instrument.cpp
0.0% 0/166 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/46 0/2 source/lib/backends/rocprofiler_sdk/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/126 0/5 source/lib/binary/analysis.cpp
0.0% 0/7 0/1 source/lib/binary/binary_info.hpp
0.0% 0/107 0/9 source/lib/binary/dwarf_entry.cpp
0.0% 0/1 0/1 source/lib/binary/dwarf_entry.hpp
0.0% 0/74 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/6 0/2 source/lib/binary/scope_filter.hpp
0.0% 0/162 0/18 source/lib/binary/symbol.cpp
0.0% 0/8 0/8 source/lib/binary/symbol.hpp
0.0% 0/10 0/2 source/lib/common/env_vars.hpp
0.0% 0/40 0/3 source/lib/common/invoke.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/25 0/2 source/lib/core/amd_smi.cpp
0.0% 0/74 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/29 0/3 source/lib/core/config.hpp
0.0% 0/85 0/5 source/lib/core/cpu.cpp
0.0% 0/1 0/1 source/lib/core/cpu.hpp
0.0% 0/61 0/6 source/lib/core/dynamic_library.cpp
0.0% 0/28 0/7 source/lib/core/exception.cpp
0.0% 0/242 0/29 source/lib/core/gpu.cpp
0.0% 0/162 0/12 source/lib/core/gpu_metrics.cpp
0.0% 0/33 0/6 source/lib/core/mpi.hpp
0.0% 0/59 0/4 source/lib/core/mproc.cpp
0.0% 0/78 0/5 source/lib/core/perf.cpp
0.0% 0/52 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/32 0/7 source/lib/core/perfetto/emitter.cpp
0.0% 0/48 0/9 source/lib/core/perfetto/emitter.hpp
0.0% 0/9 0/1 source/lib/core/perfetto/sinks/append_mode.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/823 0/104 source/lib/core/trace_cache/perfetto_processor.cpp
0.0% 0/1 0/1 source/lib/core/trace_cache/perfetto_processor.hpp
0.0% 0/122 0/12 source/lib/core/trace_cache/post_processor.cpp
0.0% 0/45 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/543 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/694 0/40 source/lib/rocprof-sys/library.cpp
0.0% 0/78 0/6 source/lib/rocprof-sys/library/causal/components/backtrace.cpp
0.0% 0/8 0/1 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/37 0/7 source/lib/rocprof-sys/library/causal/components/causal_gotcha.cpp
0.0% 0/86 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/50 0/8 source/lib/rocprof-sys/library/causal/components/unblocking_gotcha.cpp
0.0% 0/564 0/33 source/lib/rocprof-sys/library/causal/data.cpp
0.0% 0/91 0/16 source/lib/rocprof-sys/library/causal/delay.cpp
0.0% 0/391 0/29 source/lib/rocprof-sys/library/causal/experiment.cpp
0.0% 0/3 0/1 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/296 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/76 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/217 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/74 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/378 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/29 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/70 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/176 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/79 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/352 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/35 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/165 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/147 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/66 0/16 source/lib/rocprof-sys/library/coverage/impl.hpp
0.0% 0/268 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/156 0/9 source/lib/rocprof-sys/library/pmc/collectors/common/settings.hpp
0.0% 0/69 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/53 0/9 source/lib/rocprof-sys/library/pmc/collectors/cpu/perfetto_policy.hpp
0.0% 0/116 0/6 source/lib/rocprof-sys/library/pmc/collectors/gpu/cache_policy.hpp
0.0% 0/225 0/36 source/lib/rocprof-sys/library/pmc/collectors/gpu/perfetto_policy.hpp
0.0% 0/34 0/3 source/lib/rocprof-sys/library/pmc/collectors/gpu_perf_counter/cache_policy.hpp
0.0% 0/44 0/7 source/lib/rocprof-sys/library/pmc/collectors/gpu_perf_counter/perfetto_policy.hpp
0.0% 0/14 0/2 source/lib/rocprof-sys/library/pmc/device_providers/procfs/provider.hpp
0.0% 0/167 0/20 source/lib/rocprof-sys/library/pmc/sampler.cpp
0.0% 0/125 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/1084 0/69 source/lib/rocprof-sys/library/rocprofiler-sdk.cpp
0.0% 0/16 0/2 source/lib/rocprof-sys/library/rocprofiler-sdk/callback/hip_stream.hpp
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/132 0/9 source/lib/rocprof-sys/library/rocprofiler-sdk/fwd.cpp
0.0% 0/33 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/109 0/10 source/lib/rocprof-sys/library/rocprofiler-sdk/roctx_client.cpp
0.0% 0/122 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/977 0/58 source/lib/rocprof-sys/library/sampling.cpp
0.0% 0/148 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/11 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/168 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/118 0/11 source/lib/rocprof-sys/library/tracing.cpp
0.0% 0/111 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/453 0/45 source/python/libpyrocprofsys.cpp
0.6% 1/173 1/13 source/lib/core/perfetto.cpp
0.8% 7/855 1/72 source/lib/core/argparse.cpp
3.6% 66/1812 10/304 source/lib/core/config.cpp
18.8% 6/32 2/5 source/bin/common/common_utils.hpp
🟠 20-50% (7 files)
Lines Functions File
20.0% 1/5 0/2 source/lib/core/argparse.hpp
20.0% 5/25 0/3 source/lib/rocprof-sys/library/pmc/collectors/gpu/sample.hpp
30.6% 159/520 34/71 source/lib/core/trace_cache/metadata_registry.cpp
31.2% 20/64 4/9 source/lib/core/utility.hpp
31.8% 7/22 0/2 source/lib/rocprof-sys/library/pmc/collectors/nic/sample.hpp
40.9% 18/44 1/7 source/lib/rocprof-sys/library/rocprofiler-sdk/types.hpp
49.4% 130/263 14/32 source/lib/rocprof-sys/library/components/category_region.hpp
🟡 50-80% (29 files)
Lines Functions File
50.0% 19/38 4/5 source/lib/common/static_object.hpp
50.0% 1/2 0/1 source/lib/rocprof-sys/library/pmc/collectors/nic/types.hpp
50.2% 210/418 23/35 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
56.2% 9/16 3/3 source/lib/core/perfetto/sinks/per_pid_file_sink.cpp
57.4% 31/54 3/5 source/lib/core/output_file_registry.cpp
60.0% 36/60 7/12 source/lib/core/agent_manager.cpp
61.4% 70/114 7/10 source/lib/core/progress/bar.cpp
61.7% 350/567 26/40 source/bin/common/json_config.cpp
63.1% 53/84 4/5 source/lib/core/trace_cache/discovery.cpp
64.9% 24/37 4/18 source/lib/core/trace_cache/unified_memory_processor.hpp
66.2% 47/71 5/5 source/lib/rocprof-sys/library/pmc/collectors/gpu/gpu_traits.hpp
66.7% 2/3 0/2 source/lib/rocprof-sys/library/pmc/collectors/cpu/types.hpp
66.7% 22/33 3/8 source/lib/rocprof-sys/library/pmc/collectors/gpu_perf_counter/types.hpp
68.4% 39/57 4/6 source/lib/core/perfetto.hpp
68.7% 46/67 11/14 source/lib/core/trace_cache/data_types.cpp
70.0% 236/337 15/17 source/bin/common/preset_registry.cpp
71.4% 25/35 2/2 source/lib/rocprof-sys/library/rocprofiler-sdk/callback/rccl/event_info.hpp
71.9% 87/121 14/17 source/lib/core/perfetto/engine.cpp
72.2% 13/18 2/5 source/lib/rocprof-sys/library/pmc/collectors/hipfile/types.hpp
72.2% 13/18 2/6 source/lib/rocprof-sys/library/rocprofiler-sdk/roctx_client.hpp
72.7% 32/44 3/3 source/lib/core/perfetto/sinks/file_output.cpp
74.3% 78/105 9/10 source/lib/core/perfetto/engine_impl.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.4% 46/61 6/8 source/lib/rocprof-sys/library/pmc/collectors/cpu/sample.hpp
78.2% 61/78 9/10 source/lib/rocprof-sys/library/pmc/device_providers/rocprofiler_sdk/provider.hpp
78.8% 78/99 4/4 source/lib/core/perfetto/sinks/single_file_sink.cpp
79.2% 19/24 2/2 source/lib/core/node_info.cpp
🟢 80-100% (111 files)
Lines Functions File
80.0% 100/125 14/16 source/lib/common/path.hpp
80.0% 4/5 1/1 source/lib/core/agent.hpp
80.6% 133/165 10/14 source/lib/backends/procfs/backend.hpp
80.8% 135/167 30/33 source/lib/backends/rocprofiler_sdk/backend.hpp
81.8% 719/879 29/34 source/lib/core/trace_cache/rocpd_processor.cpp
81.8% 36/44 3/6 source/lib/core/containers/static_vector.hpp
82.6% 57/69 8/8 source/lib/rocprof-sys/library/pmc/collectors/base/collector.hpp
83.9% 73/87 10/12 source/lib/logger/logger.hpp
84.6% 55/65 4/4 source/lib/rocprof-sys/library/rocprofiler-sdk/buffered/kfd/page_migrate.hpp
85.1% 40/47 2/2 source/lib/core/trace_cache/storage_parser.hpp
85.2% 213/250 20/33 source/lib/core/sdk/tracing-config.hpp
86.0% 49/57 4/4 source/lib/rocprof-sys/library/pmc/collectors/gpu_perf_counter/device.hpp
86.6% 259/299 27/33 source/lib/common/environment.hpp
86.7% 26/30 3/6 source/lib/core/trace_cache/metadata_registry.hpp
87.8% 151/172 17/19 source/lib/rocprof-sys/library/rocprofiler-sdk/domain_service.hpp
88.9% 24/27 5/6 source/lib/rocprof-sys/library/rocprofiler-sdk/stream_stack_service.hpp
89.1% 106/119 8/8 source/lib/rocprof-sys/library/pmc/collectors/cpu/device.hpp
89.3% 50/56 3/3 source/lib/rocprof-sys/library/rocprofiler-sdk/buffered/kfd/event_page_migrate.hpp
90.0% 54/60 4/4 source/lib/core/trace_cache/buffer_storage.cpp
90.4% 178/197 14/18 source/lib/rocprof-sys/library/components/shmem_gotcha.hpp
90.5% 249/275 19/20 source/lib/core/trace_cache/unified_memory_processor.cpp
90.7% 39/43 3/3 source/lib/rocprof-sys/library/rocprofiler-sdk/buffered/kfd/event_page_fault.hpp
90.7% 39/43 3/3 source/lib/rocprof-sys/library/rocprofiler-sdk/buffered/kfd/event_queue.hpp
90.9% 10/11 2/2 source/lib/core/control/clocks/timeline.hpp
91.1% 41/45 3/3 source/lib/rocprof-sys/library/rocprofiler-sdk/buffered/kfd/queue.hpp
91.5% 43/47 7/7 source/lib/core/control/triggers/time_window.hpp
91.7% 11/12 2/2 source/lib/core/perfetto/session_backend.hpp
91.7% 44/48 3/3 source/lib/rocprof-sys/library/rocprofiler-sdk/buffered/kfd/event_unmap_from_gpu.hpp
91.8% 45/49 3/4 source/lib/rocprof-sys/library/pmc/collectors/nic/nic_traits.hpp
91.9% 34/37 3/4 source/lib/rocprof-sys/library/rocprofiler-sdk/callback/common_tracing_callbacks.hpp
92.1% 70/76 7/8 source/lib/core/trace_cache/buffer_storage.hpp
92.2% 47/51 7/7 source/lib/core/control/clocks/posix.hpp
92.3% 24/26 1/3 source/lib/core/containers/c_array.hpp
92.3% 36/39 2/2 source/lib/rocprof-sys/library/rocprofiler-sdk/buffered/scratch_memory.hpp
92.3% 12/13 1/1 source/lib/rocprof-sys/library/rocprofiler-sdk/callback/rccl/transferred_bytes_tracker.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
92.9% 13/14 1/2 source/lib/rocprof-sys/library/rocprofiler-sdk/callback_domain.hpp
93.1% 54/58 6/8 source/lib/rocprof-sys/library/components/pthread_mutex_gotcha.hpp
94.4% 51/54 4/7 source/lib/core/containers/aligned_static_vector.hpp
95.0% 38/40 6/7 source/lib/core/trace_cache/rocpd_helpers.hpp
95.1% 253/266 21/30 source/lib/core/trace_cache/sample_type.hpp
95.2% 20/21 2/2 source/lib/rocprof-sys/library/rocprofiler-sdk/buffered/memory_allocation.hpp
95.3% 162/170 19/22 source/lib/rocprof-sys/library/components/ucx_gotcha.hpp
95.4% 62/65 1/5 source/lib/core/trace_cache/cacheable.hpp
95.4% 83/87 19/23 source/lib/core/containers/stable_vector.hpp
95.8% 23/24 2/4 source/lib/common/pci_bdf.hpp
96.3% 26/27 1/2 source/lib/common/delimit.hpp
96.5% 82/85 11/12 source/lib/core/state.hpp
96.7% 148/153 9/10 source/lib/common/md5sum.hpp
96.8% 30/31 3/4 source/lib/rocprof-sys/library/pmc/collectors/gpu_perf_counter/sample.hpp
97.0% 32/33 2/2 source/lib/rocprof-sys/library/rocprofiler-sdk/buffered/kfd/event_dropped_events.hpp
97.4% 74/76 6/6 source/lib/core/common_types.hpp
97.5% 39/40 3/3 source/lib/core/utility.cpp
97.5% 39/40 2/2 source/lib/rocprof-sys/library/rocprofiler-sdk/buffered/memory_copy.hpp
97.7% 85/87 11/12 source/lib/core/control/triggers/roctx.cpp
97.7% 43/44 5/6 source/lib/rocprof-sys/library/rocprofiler-sdk/buffered_domain.hpp
97.8% 44/45 7/11 source/lib/core/demangler.hpp
97.8% 45/46 3/3 source/lib/rocprof-sys/library/rocprofiler-sdk/buffered/kfd/page_fault.hpp
98.0% 49/50 3/3 source/lib/rocprof-sys/library/pmc/collectors/nic/device.hpp
98.1% 53/54 7/7 source/lib/rocprof-sys/library/pmc/device_providers/amd_smi/provider.hpp
98.5% 67/68 10/12 source/lib/common/string_utility.hpp
98.7% 76/77 3/3 source/lib/core/perfetto/packet_framing.hpp
98.8% 81/82 15/16 source/lib/backends/amd_smi/backend.hpp
99.1% 115/116 19/19 source/lib/core/control/session.cpp
100.0% 1/1 0/1 source/bin/common/json_config.hpp
100.0% 110/110 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% 32/32 2/3 source/lib/backends/hipfile/backend.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% 24/24 5/6 source/lib/common/synchronized.hpp
100.0% 14/14 2/4 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/3 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% 22/22 0/2 source/lib/core/containers/operators.hpp
100.0% 19/19 4/4 source/lib/core/control/clocks/steady.cpp
100.0% 2/2 1/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% 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/sinks/file_output.hpp
100.0% 1/1 0/1 source/lib/core/perfetto/sinks/per_pid_file_sink.hpp
100.0% 2/2 0/1 source/lib/core/perfetto/sinks/single_file_sink.hpp
100.0% 2/2 0/1 source/lib/core/perfetto/sinks/trace_sink.hpp
100.0% 7/7 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% 2/2 0/1 source/lib/core/trace_cache/sample_processor_interface.hpp
100.0% 9/9 3/3 source/lib/core/trace_cache/type_registry.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% 12/12 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% 55/55 4/4 source/lib/rocprof-sys/library/pmc/collectors/hipfile/device.hpp
100.0% 36/36 2/3 source/lib/rocprof-sys/library/pmc/collectors/hipfile/hipfile_traits.hpp
100.0% 20/20 2/3 source/lib/rocprof-sys/library/pmc/collectors/hipfile/sample.hpp
100.0% 21/21 4/4 source/lib/rocprof-sys/library/pmc/collectors/nic/perfetto_policy.hpp
100.0% 3/3 0/3 source/lib/rocprof-sys/library/pmc/common/types.hpp
100.0% 43/43 2/2 source/lib/rocprof-sys/library/rocprofiler-sdk/buffered/kernel_dispatch.hpp
100.0% 4/4 1/1 source/lib/rocprof-sys/library/rocprofiler-sdk/callback/code_object.hpp
100.0% 17/17 2/2 source/lib/rocprof-sys/library/rocprofiler-sdk/callback/rccl/device_resolver.hpp
100.0% 48/48 4/4 source/lib/rocprof-sys/library/rocprofiler-sdk/callback/rccl/rccl.hpp
100.0% 27/27 3/4 source/lib/rocprof-sys/library/rocprofiler-sdk/domain_registry.hpp
100.0% 33/33 3/4 source/lib/rocprof-sys/library/rocprofiler-sdk/marker_writer.hpp

Distribution

Range Files
0-20% 177
20-50% 7
50-80% 29
80-100% 111

Unit Tests (PR Diff Files Only)

Lines: 🔴 5.4% (📈 +0.25% vs base) — 187/3,441 across 13 files
Functions: 🔴 7.2% — 23/319

🔴 0-20% (10 files)
Lines Functions File
0.0% 0/694 0/40 source/lib/rocprof-sys/library.cpp
0.0% 0/9 0/3 source/lib/rocprof-sys/library/components/backtrace_timestamp.cpp
0.0% 0/352 0/20 source/lib/rocprof-sys/library/components/pthread_create_gotcha.cpp
0.0% 0/268 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/167 0/20 source/lib/rocprof-sys/library/pmc/sampler.cpp
0.0% 0/977 0/58 source/lib/rocprof-sys/library/sampling.cpp
0.0% 0/168 0/27 source/lib/rocprof-sys/library/thread_info.cpp
0.0% 0/118 0/11 source/lib/rocprof-sys/library/tracing.cpp
0.0% 0/111 0/30 source/lib/rocprof-sys/library/tracing.hpp
🟠 20-50% (1 files)
Lines Functions File
49.4% 130/263 (📉 -0.19%) 14/32 source/lib/rocprof-sys/library/components/category_region.hpp
🟢 80-100% (2 files)
Lines Functions File
90.9% 10/11 2/2 source/lib/core/control/clocks/timeline.hpp
92.2% 47/51 7/7 source/lib/core/control/clocks/posix.hpp

Distribution

Range Files
0-20% 10
20-50% 1
50-80% 0
80-100% 2

E2E Tests

Lines: 🟡 68.3% — 23,379/34,217 across 324 files
Functions: 🟡 66.8% — 2,338/3,501

🔴 0-20% (40 files)
Lines Functions File
0.0% 0/106 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/85 0/5 source/lib/core/cpu.cpp
0.0% 0/1 0/1 source/lib/core/cpu.hpp
0.0% 0/61 0/6 source/lib/core/dynamic_library.cpp
0.0% 0/28 0/7 source/lib/core/exception.cpp
0.0% 0/162 0/12 source/lib/core/gpu_metrics.cpp
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/53 0/9 source/lib/rocprof-sys/library/pmc/collectors/cpu/perfetto_policy.hpp
0.0% 0/116 0/6 source/lib/rocprof-sys/library/pmc/collectors/gpu/cache_policy.hpp
0.0% 0/225 0/36 source/lib/rocprof-sys/library/pmc/collectors/gpu/perfetto_policy.hpp
0.0% 0/34 0/3 source/lib/rocprof-sys/library/pmc/collectors/gpu_perf_counter/cache_policy.hpp
0.0% 0/44 0/7 source/lib/rocprof-sys/library/pmc/collectors/gpu_perf_counter/perfetto_policy.hpp
0.0% 0/2 0/1 source/lib/rocprof-sys/library/rocm.cpp
0.0% 0/16 0/2 source/lib/rocprof-sys/library/rocprofiler-sdk/callback/hip_stream.hpp
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/132 0/9 source/lib/rocprof-sys/library/rocprofiler-sdk/fwd.cpp
0.0% 0/109 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/453 0/45 source/python/libpyrocprofsys.cpp
0.6% 1/173 1/13 source/lib/core/perfetto.cpp
4.8% 8/165 2/31 source/lib/rocprof-sys/library/components/vaapi_gotcha.cpp
5.6% 61/1084 12/69 source/lib/rocprof-sys/library/rocprofiler-sdk.cpp
8.3% 3/36 1/9 source/lib/rocprof-sys/library/rocprofiler-sdk/marker_writer.cpp
8.7% 4/46 0/2 source/lib/backends/rocprofiler_sdk/wrapper.hpp
9.1% 3/33 0/7 source/lib/rocprof-sys/library/rocprofiler-sdk/fwd.hpp
12.0% 3/25 1/2 source/lib/core/amd_smi.cpp
13.2% 32/242 6/29 source/lib/core/gpu.cpp
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
🟠 20-50% (20 files)
Lines Functions File
20.0% 5/25 0/3 source/lib/rocprof-sys/library/pmc/collectors/gpu/sample.hpp
21.8% 34/156 4/9 source/lib/rocprof-sys/library/pmc/collectors/common/settings.hpp
24.4% 19/78 3/5 source/lib/core/perf.cpp
27.8% 27/97 4/8 source/lib/rocprof-sys-rt/src/RTposix.c
30.3% 249/823 32/104 source/lib/core/trace_cache/perfetto_processor.cpp
31.8% 7/22 0/2 source/lib/rocprof-sys/library/pmc/collectors/nic/sample.hpp
31.9% 166/520 36/71 source/lib/core/trace_cache/metadata_registry.cpp
34.5% 10/29 3/6 source/lib/rocprof-sys/library/components/exit_gotcha.cpp
35.7% 30/84 10/20 source/lib/rocprof-sys/api.cpp
37.1% 39/105 5/11 source/lib/rocprof-sys/library/causal/components/blocking_gotcha.cpp
37.8% 31/82 1/2 source/bin/rocprof-sys-causal/rocprof-sys-causal.cpp
38.5% 5/13 2/3 source/lib/rocprof-sys/library/components/kill_gotcha.cpp
40.9% 18/44 1/7 source/lib/rocprof-sys/library/rocprofiler-sdk/types.hpp
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% 72/160 3/7 source/bin/rocprof-sys-instrument/info.hpp
45.5% 30/66 6/16 source/lib/rocprof-sys/library/coverage/impl.hpp
46.2% 42/91 2/6 source/lib/rocprof-sys/timeout.cpp
47.4% 179/378 16/30 source/lib/rocprof-sys/library/components/comm_data.cpp
47.7% 31/65 3/4 source/lib/rocprof-sys-rt/src/RTheap.c
🟡 50-80% (63 files)
Lines Functions File
50.0% 8/16 2/4 source/lib/binary/address_multirange.cpp
50.0% 16/32 5/7 source/lib/core/perfetto/emitter.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
50.5% 56/111 12/30 source/lib/rocprof-sys/library/tracing.hpp
52.0% 13/25 2/3 source/lib/rocprof-sys/library/pmc/collectors/gpu_perf_counter/gpu_perf_counter_traits.hpp
53.0% 142/268 27/37 source/lib/rocprof-sys/library/kokkosp.cpp
55.6% 25/45 0/1 source/lib/core/trace_cache/sample_processor.hpp
57.0% 45/79 8/19 source/lib/rocprof-sys/library/components/numa_gotcha.cpp
57.5% 23/40 1/3 source/lib/common/invoke.hpp
58.1% 97/167 15/20 source/lib/rocprof-sys/library/pmc/sampler.cpp
59.4% 63/106 5/9 source/bin/common/argument_registration.hpp
59.5% 44/74 13/18 source/lib/core/binary/address_range.cpp
60.8% 132/217 12/30 source/lib/rocprof-sys/library/components/backtrace_metrics.cpp
61.4% 70/114 7/10 source/lib/core/progress/bar.cpp
62.7% 37/59 3/4 source/lib/core/mproc.cpp
62.9% 44/70 5/8 source/lib/rocprof-sys/library/components/fork_gotcha.cpp
63.9% 161/252 24/32 source/lib/rocprof-sys/library/perf.cpp
64.3% 54/84 4/5 source/lib/core/trace_cache/discovery.cpp
64.9% 24/37 4/18 source/lib/core/trace_cache/unified_memory_processor.hpp
66.2% 47/71 5/5 source/lib/rocprof-sys/library/pmc/collectors/gpu/gpu_traits.hpp
66.3% 468/706 33/45 source/bin/rocprof-sys-instrument/details.cpp
66.4% 81/122 15/20 source/lib/rocprof-sys/library/runtime.cpp
66.7% 6/9 1/1 source/lib/core/perfetto/sinks/append_mode.hpp
66.7% 22/33 3/8 source/lib/rocprof-sys/library/pmc/collectors/gpu_perf_counter/types.hpp
67.6% 25/37 5/7 source/lib/rocprof-sys/library/causal/components/causal_gotcha.cpp
69.1% 375/543 40/85 source/lib/rocprof-sys-dl/dl.cpp
70.0% 35/50 5/8 source/lib/rocprof-sys/library/causal/components/unblocking_gotcha.cpp
70.2% 40/57 4/6 source/lib/core/perfetto.hpp
70.5% 124/176 16/22 source/lib/rocprof-sys/library/components/mpi_gotcha.cpp
71.4% 25/35 2/2 source/lib/rocprof-sys/library/rocprofiler-sdk/callback/rccl/event_info.hpp
72.1% 409/567 30/40 source/bin/common/json_config.cpp
72.2% 13/18 2/5 source/lib/rocprof-sys/library/pmc/collectors/hipfile/types.hpp
72.2% 13/18 2/6 source/lib/rocprof-sys/library/rocprofiler-sdk/roctx_client.hpp
72.7% 245/337 16/17 source/bin/common/preset_registry.cpp
72.7% 32/44 3/3 source/lib/core/perfetto/sinks/file_output.cpp
73.0% 54/74 5/6 source/lib/binary/link_map.cpp
73.0% 713/977 46/58 source/lib/rocprof-sys/library/sampling.cpp
73.6% 78/106 5/7 source/bin/rocprof-sys-instrument/function_signature.cpp
74.5% 35/47 4/6 source/lib/rocprof-sys/library/pmc/collectors/cpu/cpu_traits.hpp
74.6% 1184/1588 51/87 source/bin/rocprof-sys-instrument/rocprof-sys-instrument.cpp
74.6% 47/63 4/5 source/bin/rocprof-sys-instrument/log.cpp
74.6% 312/418 33/35 source/bin/common/common_utils.cpp
74.6% 421/564 30/33 source/lib/rocprof-sys/library/causal/data.cpp
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.3% 223/296 23/25 source/lib/rocprof-sys/library/causal/sampling.cpp
75.7% 414/547 40/41 source/bin/rocprof-sys-instrument/module_function.cpp
76.2% 93/122 11/12 source/lib/core/trace_cache/post_processor.cpp
76.3% 29/38 5/5 source/lib/common/static_object.hpp
76.7% 46/60 10/12 source/lib/core/agent_manager.cpp
78.2% 61/78 9/10 source/lib/rocprof-sys/library/pmc/device_providers/rocprofiler_sdk/provider.hpp
78.3% 209/267 24/28 source/bin/common/tool_runner.cpp
78.4% 116/148 26/31 source/lib/rocprof-sys/library/thread_data.hpp
79.0% 83/105 10/10 source/lib/core/perfetto/engine_impl.hpp
79.1% 219/277 20/22 source/bin/rocprof-sys-instrument/internal_libs.cpp
79.2% 19/24 2/2 source/lib/core/node_info.cpp
79.8% 134/168 24/27 source/lib/rocprof-sys/library/thread_info.cpp
🟢 80-100% (201 files)
Lines Functions File
80.0% 4/5 0/1 source/bin/rocprof-sys-instrument/log.hpp
80.0% 4/5 1/1 source/lib/core/agent.hpp
80.7% 134/166 12/12 source/bin/rocprof-sys-instrument/rocprof-sys-instrument.hpp
80.8% 135/167 30/33 source/lib/backends/rocprofiler_sdk/backend.hpp
81.2% 181/223 21/24 source/bin/rocprof-sys-avail/common.cpp
81.2% 13/16 1/1 source/lib/rocprof-sys-dl/main.c
81.3% 1474/1812 278/304 source/lib/core/config.cpp
81.4% 70/86 17/22 source/lib/rocprof-sys/library/causal/components/progress_point.cpp
82.7% 43/52 5/5 source/lib/core/perfetto/cached_perfetto_session.cpp
82.9% 324/391 18/29 source/lib/rocprof-sys/library/causal/experiment.cpp
83.2% 89/107 8/9 source/lib/binary/dwarf_entry.cpp
83.3% 578/694 35/40 source/lib/rocprof-sys/library.cpp
84.2% 16/19 3/5 source/lib/rocprof-sys/library/components/comm_data.hpp
84.2% 139/165 11/14 source/lib/backends/procfs/backend.hpp
84.3% 741/879 29/34 source/lib/core/trace_cache/rocpd_processor.cpp
84.6% 137/162 17/18 source/lib/binary/symbol.cpp
84.6% 55/65 4/4 source/lib/rocprof-sys/library/rocprofiler-sdk/buffered/kfd/page_migrate.hpp
84.8% 84/99 4/4 source/lib/core/perfetto/sinks/single_file_sink.cpp
85.1% 74/87 10/12 source/lib/logger/logger.hpp
85.7% 78/91 14/16 source/lib/rocprof-sys/library/causal/delay.cpp
86.0% 49/57 4/4 source/lib/rocprof-sys/library/pmc/collectors/gpu_perf_counter/device.hpp
86.0% 80/93 5/7 source/bin/rocprof-sys-instrument/module_function.hpp
86.7% 26/30 3/6 source/lib/core/trace_cache/metadata_registry.hpp
87.0% 47/54 3/3 source/lib/core/trace_cache/cache_manager.cpp
87.6% 262/299 29/33 source/lib/common/environment.hpp
87.8% 129/147 10/10 source/lib/rocprof-sys/library/coverage.cpp
87.8% 151/172 17/19 source/lib/rocprof-sys/library/rocprofiler-sdk/domain_service.hpp
87.9% 399/454 35/47 source/bin/rocprof-sys-causal/impl.cpp
88.1% 104/118 10/11 source/lib/rocprof-sys/library/tracing.cpp
88.2% 67/76 9/11 source/lib/rocprof-sys/library/components/backtrace.cpp
88.4% 61/69 8/8 source/lib/rocprof-sys/library/pmc/collectors/base/collector.hpp
88.9% 48/54 4/5 source/lib/core/output_file_registry.cpp
88.9% 24/27 5/6 source/lib/rocprof-sys/library/rocprofiler-sdk/stream_stack_service.hpp
89.0% 761/855 57/72 source/lib/core/argparse.cpp
89.2% 66/74 7/10 source/lib/rocprof-sys/library/components/callchain.cpp
89.2% 223/250 23/33 source/lib/core/sdk/tracing-config.hpp
89.3% 50/56 3/3 source/lib/rocprof-sys/library/rocprofiler-sdk/buffered/kfd/event_page_migrate.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.1% 247/274 11/12 source/bin/rocprof-sys-avail/generate_config.cpp
90.5% 249/275 19/20 source/lib/core/trace_cache/unified_memory_processor.cpp
90.7% 39/43 3/3 source/lib/rocprof-sys/library/rocprofiler-sdk/buffered/kfd/event_page_fault.hpp
90.7% 39/43 3/3 source/lib/rocprof-sys/library/rocprofiler-sdk/buffered/kfd/event_queue.hpp
90.9% 20/22 2/2 source/lib/common/setup.hpp
90.9% 10/11 2/2 source/lib/core/control/clocks/timeline.hpp
90.9% 320/352 18/20 source/lib/rocprof-sys/library/components/pthread_create_gotcha.cpp
90.9% 10/11 1/1 source/lib/rocprof-sys/library/thread_deleter.cpp
91.1% 41/45 3/3 source/lib/rocprof-sys/library/rocprofiler-sdk/buffered/kfd/queue.hpp
91.6% 109/119 8/8 source/lib/rocprof-sys/library/pmc/collectors/cpu/device.hpp
91.7% 11/12 2/2 source/lib/core/perfetto/session_backend.hpp
91.7% 44/48 3/3 source/lib/rocprof-sys/library/rocprofiler-sdk/buffered/kfd/event_unmap_from_gpu.hpp
91.8% 45/49 3/4 source/lib/rocprof-sys/library/pmc/collectors/nic/nic_traits.hpp
91.9% 34/37 3/4 source/lib/rocprof-sys/library/rocprofiler-sdk/callback/common_tracing_callbacks.hpp
92.1% 116/126 5/5 source/lib/binary/analysis.cpp
92.1% 70/76 7/8 source/lib/core/trace_cache/buffer_storage.hpp
92.2% 47/51 7/7 source/lib/core/control/clocks/posix.hpp
92.3% 36/39 2/2 source/lib/rocprof-sys/library/rocprofiler-sdk/buffered/scratch_memory.hpp
92.3% 12/13 1/1 source/lib/rocprof-sys/library/rocprofiler-sdk/callback/rccl/transferred_bytes_tracker.hpp
92.6% 112/121 16/17 source/lib/core/perfetto/engine.cpp
92.6% 163/176 9/9 source/lib/rocprof-sys/library/pmc/collectors/gpu/device.hpp
92.6% 919/992 41/48 source/bin/rocprof-sys-avail/avail.cpp
92.8% 244/263 28/32 source/lib/rocprof-sys/library/components/category_region.hpp
92.9% 13/14 2/2 source/lib/rocprof-sys/library/pmc/device_providers/procfs/provider.hpp
92.9% 13/14 1/2 source/lib/rocprof-sys/library/rocprofiler-sdk/callback_domain.hpp
93.1% 27/29 3/5 source/lib/rocprof-sys/library/coverage.hpp
93.6% 117/125 11/11 source/lib/rocprof-sys/library/process_sampler.cpp
93.8% 15/16 3/3 source/lib/core/perfetto/sinks/per_pid_file_sink.cpp
93.9% 31/33 6/6 source/lib/core/mpi.hpp
94.3% 33/35 7/9 source/lib/rocprof-sys/library/components/pthread_gotcha.cpp
94.4% 118/125 15/16 source/lib/common/path.hpp
94.4% 186/197 16/18 source/lib/rocprof-sys/library/components/shmem_gotcha.hpp
94.4% 17/18 3/3 source/bin/rocprof-sys-avail/component_categories.hpp
94.9% 74/78 6/6 source/lib/rocprof-sys/library/causal/components/backtrace.cpp
95.0% 38/40 6/7 source/lib/core/trace_cache/rocpd_helpers.hpp
95.1% 58/61 7/8 source/lib/rocprof-sys/library/pmc/collectors/cpu/sample.hpp
95.1% 253/266 21/30 source/lib/core/trace_cache/sample_type.hpp
95.2% 20/21 2/2 source/lib/rocprof-sys/library/rocprofiler-sdk/buffered/memory_allocation.hpp
95.3% 162/170 19/22 source/lib/rocprof-sys/library/components/ucx_gotcha.hpp
95.4% 62/65 1/5 source/lib/core/trace_cache/cacheable.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
96.3% 26/27 1/2 source/lib/common/delimit.hpp
96.3% 52/54 5/7 source/lib/core/containers/aligned_static_vector.hpp
96.6% 28/29 3/3 source/lib/core/config.hpp
96.7% 148/153 9/10 source/lib/common/md5sum.hpp
96.8% 30/31 3/4 source/lib/rocprof-sys/library/pmc/collectors/gpu_perf_counter/sample.hpp
96.9% 62/64 9/9 source/lib/core/utility.hpp
97.0% 32/33 4/4 source/lib/core/perfetto/counter_track.hpp
97.0% 32/33 2/2 source/lib/rocprof-sys/library/rocprofiler-sdk/buffered/kfd/event_dropped_events.hpp
97.0% 65/67 14/14 source/lib/core/trace_cache/data_types.cpp
97.4% 74/76 6/6 source/lib/core/common_types.hpp
97.5% 39/40 3/3 source/lib/core/utility.cpp
97.5% 39/40 2/2 source/lib/rocprof-sys/library/rocprofiler-sdk/buffered/memory_copy.hpp
97.7% 85/87 11/12 source/lib/core/control/triggers/roctx.cpp
97.7% 43/44 5/6 source/lib/rocprof-sys/library/rocprofiler-sdk/buffered_domain.hpp
97.8% 44/45 7/11 source/lib/core/demangler.hpp
97.8% 45/46 3/3 source/lib/rocprof-sys/library/rocprofiler-sdk/buffered/kfd/page_fault.hpp
98.0% 49/50 3/3 source/lib/rocprof-sys/library/pmc/collectors/nic/device.hpp
98.1% 53/54 7/7 source/lib/rocprof-sys/library/pmc/device_providers/amd_smi/provider.hpp
98.3% 57/58 6/8 source/lib/rocprof-sys/library/components/pthread_mutex_gotcha.hpp
98.5% 67/68 10/12 source/lib/common/string_utility.hpp
98.6% 68/69 5/5 source/lib/rocprof-sys/library/pmc/collectors/cpu/cache_policy.hpp
98.7% 76/77 3/3 source/lib/core/perfetto/packet_framing.hpp
98.8% 81/82 15/16 source/lib/backends/amd_smi/backend.hpp
99.1% 115/116 19/19 source/lib/core/control/session.cpp
100.0% 32/32 4/5 source/bin/common/common_utils.hpp
100.0% 1/1 0/1 source/bin/common/json_config.hpp
100.0% 60/60 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% 11/11 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% 110/110 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% 32/32 2/3 source/lib/backends/hipfile/backend.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% 6/6 1/2 source/lib/binary/scope_filter.hpp
100.0% 8/8 7/8 source/lib/binary/symbol.hpp
100.0% 10/10 2/2 source/lib/common/env_vars.hpp
100.0% 12/12 1/1 source/lib/common/join.hpp
100.0% 24/24 5/6 source/lib/common/synchronized.hpp
100.0% 14/14 2/4 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/3 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% 55/55 6/7 source/lib/core/config/trace_period_config.hpp
100.0% 26/26 1/3 source/lib/core/containers/c_array.hpp
100.0% 22/22 0/2 source/lib/core/containers/operators.hpp
100.0% 87/87 20/23 source/lib/core/containers/stable_vector.hpp
100.0% 44/44 3/6 source/lib/core/containers/static_vector.hpp
100.0% 19/19 4/4 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% 47/47 7/7 source/lib/core/control/triggers/time_window.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/sinks/file_output.hpp
100.0% 1/1 0/1 source/lib/core/perfetto/sinks/per_pid_file_sink.hpp
100.0% 2/2 0/1 source/lib/core/perfetto/sinks/single_file_sink.hpp
100.0% 2/2 0/1 source/lib/core/perfetto/sinks/trace_sink.hpp
100.0% 1/1 0/1 source/lib/core/progress/bar.hpp
100.0% 7/7 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% 1/1 1/1 source/lib/core/trace_cache/perfetto_processor.hpp
100.0% 2/2 0/1 source/lib/core/trace_cache/sample_processor_interface.hpp
100.0% 9/9 3/3 source/lib/core/trace_cache/type_registry.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% 12/12 1/1 source/lib/logger/logger.cpp
100.0% 8/8 0/1 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 0/1 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 0/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 0/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% 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% 55/55 4/4 source/lib/rocprof-sys/library/pmc/collectors/hipfile/device.hpp
100.0% 36/36 2/3 source/lib/rocprof-sys/library/pmc/collectors/hipfile/hipfile_traits.hpp
100.0% 20/20 2/3 source/lib/rocprof-sys/library/pmc/collectors/hipfile/sample.hpp
100.0% 21/21 4/4 source/lib/rocprof-sys/library/pmc/collectors/nic/perfetto_policy.hpp
100.0% 3/3 0/3 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% 43/43 2/2 source/lib/rocprof-sys/library/rocprofiler-sdk/buffered/kernel_dispatch.hpp
100.0% 4/4 1/1 source/lib/rocprof-sys/library/rocprofiler-sdk/callback/code_object.hpp
100.0% 17/17 2/2 source/lib/rocprof-sys/library/rocprofiler-sdk/callback/rccl/device_resolver.hpp
100.0% 48/48 4/4 source/lib/rocprof-sys/library/rocprofiler-sdk/callback/rccl/rccl.hpp
100.0% 27/27 3/4 source/lib/rocprof-sys/library/rocprofiler-sdk/domain_registry.hpp
100.0% 33/33 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% 40
20-50% 20
50-80% 63
80-100% 201

@sputhala-amd
sputhala-amd force-pushed the users/sputhala/clockMigration branch from 64425ee to fd1cd62 Compare September 18, 2026 02:17
@sputhala-amd
sputhala-amd force-pushed the users/sputhala/clockMigration branch from 8df424b to b888d65 Compare September 29, 2026 15:30
@sputhala-amd
sputhala-amd marked this pull request as ready for review September 29, 2026 15:31
@sputhala-amd
sputhala-amd requested review from a team and jrmadsen as code owners September 29, 2026 15:31
@sputhala-amd
sputhala-amd requested review from marantic-amd and a balanced review from Copilot September 29, 2026 15:31

Copilot AI 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.

Copilot review overview

🟡 Changes recommended

Hardware overflow samples remain on CLOCK_MONOTONIC, allowing suspend-induced timeline gaps.

Review effort: Balanced
Findings: 1 High severity

Open (1)
What changed in this PR

Aligns CPU-side trace timestamps with GPU records by standardizing on CLOCK_BOOTTIME.

Changes:

  • Adds shared timeline_ns() clock helpers.
  • Migrates tracing, sampling, PMC, Kokkos, and lifecycle timestamps.
  • Updates sampling clocks, tests, and documentation.
File Description
library/​tracing.hpp Uses the timeline clock for tracing timestamps.
library/​tracing.cpp Aligns thread-start timestamps.
library/​thread_info.cpp Aligns initialized thread lifetimes.
library/​sampling.cpp Updates sampling timers and pause timestamps.
library/​pmc/​sampler.cpp Aligns PMC sample timestamps.
library/​perf.cpp Updates perf sampling clock selection.
library/​kokkosp.cpp Aligns Kokkos event timestamps.
library/​components/​pthread_create_gotcha.cpp Aligns thread-stop timestamps.
library/​components/​category_region.hpp Uses the timeline clock for regions.
library/​components/​backtrace_timestamp.cpp Aligns backtrace sample timestamps.
library/​causal/​sampling.cpp Updates causal timer sampling.
library.cpp Aligns process and main-thread lifetimes.
core/​control/​tests/​test_posix_clock.cpp Tests the BOOTTIME source.
core/​control/​clocks/​posix.hpp Adds timeline clock helpers.
docs/​conceptual/​data-collection-modes.rst Documents timeline-clock behavior.

💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.

@sputhala-amd
sputhala-amd force-pushed the users/sputhala/clockMigration branch 2 times, most recently from b4b8d7d to 87cb0ba Compare October 1, 2026 15:25
@sputhala-amd sputhala-amd changed the title [rocprof-sys]: Replace CPU and sampling events with CLOCK_BOOTTIME to match GPU traces [rocprof-sys]: Replace CPU and sampling event timestamps with CLOCK_BOOTTIME to match GPU traces Oct 1, 2026
@sputhala-amd
sputhala-amd force-pushed the users/sputhala/clockMigration branch from 8d94987 to 388dfbd Compare October 6, 2026 17:26
@sputhala-amd
sputhala-amd merged commit 488452f into develop Oct 8, 2026
145 of 147 checks passed
@sputhala-amd
sputhala-amd deleted the users/sputhala/clockMigration branch October 8, 2026 14:52
@systems-assistant

Copy link
Copy Markdown
Contributor

TheRock Submodule Bump Activity

Newest first

anujshuk-amd pushed a commit that referenced this pull request Oct 12, 2026
…OOTTIME to match GPU traces (#11667)

## Motivation

<!-- Explain the purpose of this PR and the goals it aims to achieve.
-->

HIP/HSA/kernel timestamps from rocprofiler-sdk use `CLOCK_BOOTTIME`,
while CPU tracks and samples used `CLOCK_MONOTONIC`. On systems that
have different `CLOCK_BOOTTIME` vs `CLOCK_MONOTONIC`, due to
suspend/resume, traces shows both as one timeline and shows a misleading
CPU vs GPU gap.

This change makes `CLOCK_BOOTTIME` the only trace timeline clock so CPU,
sampling, and SDK records line up.
CPU-time sampling cadence is unchanged.


## Technical Details

<!-- Explain the changes along with any relevant GitHub links. -->

- Add stateless internal `control::clocks::timeline_now()` /
`timeline_ns()` helpers backed by `CLOCK_BOOTTIME`, independent of
timemory and the stateful POSIX time-window clock.
- Stamp CPU regions, call-stack samples, PMC samples, Kokkos events,
pause intervals, and thread/process lifetimes with the common timeline
clock.
- Keep realtime sampling timers in `sampling.cpp` and
`causal/sampling.cpp` on `CLOCK_REALTIME`; this clock only controls when
sampling signals fire.
- Configure perf event timestamps, including hardware and software
overflow events, to use `CLOCK_BOOTTIME`.
- Keep CPU-time sampling timers on `CLOCK_THREAD_CPUTIME_ID`.
- Leave SDK record timestamps unchanged because rocprofiler-sdk already
uses `CLOCK_BOOTTIME`.
- Document that `--trace-clock-id` controls only collection start/stop
timing, not event timestamps.

Note:

- Probe `CLOCK_BOOTTIME` before profiling starts. If unavailable,
disable all profiling - including SDK tracing - without terminating the
target application. <- This fix was removed because during testing it
was found that this fix will be unreachable as SDK library will abort
before it reaches any fix in rocprofiler-systems:
```
 LD_PRELOAD="$PWD/libfake-boottime.so:$LD_PRELOAD" ./rocprof-sys-run -- ../transpose
F1006 10:56:06.485420 1008719 utility.hpp:77] clock_gettime failed: Invalid argument
*** Check failure stack trace: ***
Aborted (core dumped)
```

## Issue Tracking

<!-- Include a GitHub Issue and/or JIRA ID. Do not post any full JIRA
links here. -->
<!-- GitHub issue: #1234 -->
<!-- JIRA ID: EXAMPLECOMPONENT-1234 -->

JIRA ID: AIPROFSYST-772

## Test Plan

<!-- Explain any relevant testing done to verify this PR. -->

- [x] `timeline_clock_test.available_on_linux` confirms that
`CLOCK_BOOTTIME` is available.
- [x] `timeline_clock_test.uses_clock_boottime` checks that both
`timeline_now()` and `timeline_ns()` fall between surrounding
`clock_gettime(CLOCK_BOOTTIME)` reads.
- [x] `category_region_*` (33 tests) confirms that the injected mock
clock still drives the category-region seam. These tests do not verify
the production `CLOCK_BOOTTIME` source.
- [x] On a machine whose boot-to-monotonic offset is seconds, collect
CPU sampling together with HIP/HSA traces and confirm that Perfetto
shows no suspend-sized gap between CPU and GPU events.
- [x] In that same run, compare the rocpd CPU and region timestamps with
the SDK HIP/HSA timestamps.


## Test Result

<!-- Briefly summarize test outcomes. -->

Current Behavior:

<img width="988" height="132" alt="image"
src="https://github.com/user-attachments/assets/4f74c2d4-7340-421f-8760-11c835f30efb"
/>

<img width="2398" height="2030" alt="image"
src="https://github.com/user-attachments/assets/282424d7-bf64-495d-90b7-3c437087dc91"
/>

After Fix:
<img width="923" height="491" alt="image"
src="https://github.com/user-attachments/assets/58a09a36-2dfb-47e9-aa1c-d1db06b169c4"
/>


## Submission Checklist

- [x] Look over the contributing guidelines at
https://github.com/ROCm/rocm-systems/blob/develop/CONTRIBUTING.md.
lloginov-amd added a commit that referenced this pull request Oct 23, 2026
…ackend (#13730)

## Motivation

<!-- Explain the purpose of this PR and the goals it aims to achieve.
-->

Part of removing the timemory dependency. `tim::get_clock_*_now()` had
been partially replaced by the in-tree timeline clock (#11667 moved
trace timestamps to `CLOCK_BOOTTIME`), but `tim::get_clock_thread_now()`
was still used for per-thread CPU time in `backtrace_metrics`, and
`timemory/components/timing/backends.hpp` was still included in 9 files.
This PR removes that dependency, bans the header, and consolidates the
in-tree clocks so each clock has one home.

## Technical Details

<!-- Explain the changes along with any relevant GitHub links. -->

**timemory clock removal**
- `backtrace_metrics::sample()` reads per-thread CPU time with
`clocks::thread_cpu::now()` (`clock_gettime(CLOCK_THREAD_CPUTIME_ID)`)
instead of `tim::get_clock_thread_now()`. It uses the same clock and
produces the same nanosecond values.
- `backtrace_metrics` stores the value as `std::chrono::nanoseconds
m_cpu_time`, and `get_cpu_timestamp()` is renamed to `get_cpu_time()`:
the value is an amount of CPU time (a difference between two samples),
not a point on the timeline. The `thread_cpu_time` track and the
`sampling_cpu_clock` PROFILE output compute exactly the same values as
before.
- Removed all 9 includes of `timemory/components/timing/backends.hpp`
and added the header to `scripts/banned-includes.json`.

**Clock consolidation (no behavior change)**
- New `common/clocks.hpp`, namespace `rocprofsys::common::clocks`:
stateless, async-signal-safe clock reads.
- `detail::read(clockid_t)`: one shared `clock_gettime` →
`std::chrono::nanoseconds` conversion.
- `timeline::{k_sdk_host_clock_id, now(), now_ns()}`: the trace timeline
(`CLOCK_BOOTTIME`, rocprofiler-sdk's host clock). Replaces
`core/control/clocks/timeline.hpp`; `control::clocks::timeline_ns()`
becomes `clocks::timeline::now_ns()`. The test-only
`timeline_available()` is removed.
  - `thread_cpu::now()`: CPU time of the calling thread.
- Waitable clocks used by trace time windows (renames only):
- `core/control/clocks/{posix,steady}` →
`core/control/waitable_clocks/{posix,steady}`.
- The concept `control::clock_policy` (`control/clock.hpp`) →
`control::waitable_clocks::contract` (`waitable_clocks/contract.hpp`).
- `clock_duration` / `clock_time_point` → `waitable_clocks::duration` /
`time_point`.
- The overflow sampler (`sampling.cpp`) and `perf_event::open`
(`perf.cpp`) now set the perf `clockid` from
`clocks::timeline::k_sdk_host_clock_id` instead of a literal
`CLOCK_BOOTTIME`. Every clock ID that must match the timeline now comes
from one constant; the value is unchanged.

**Small fixes**
- Stale clock comments in `pmc/collectors/hipfile/device.hpp` and
`collector_slice.hpp`.
- `wall_clock_source` renamed to `timeline_clock_source` in
`category_region.hpp`.
- Removed unused `clock_type` aliases in `backtrace.hpp` and
`backtrace_metrics.hpp`.
- Fixed the `clk_lcoks` typo in `steady.cpp`.
- clang-tidy fixes on touched lines: `[[nodiscard]]` getters, `const`,
`k_` constant names.

**Tests**
- New `common/tests/test_clocks.cpp`, in `lib-common-tests`: the
`read()` failure path; the timeline reads `CLOCK_BOOTTIME`; thread CPU
time never decreases, advances while the thread runs, and counts only
the calling thread.
- The waitable clock tests are renamed to
`control/tests/test_waitable_{posix,steady}.cpp`.

## Issue Tracking

<!-- Include a GitHub Issue and/or JIRA ID. Do not post any full JIRA
links here. -->
<!-- GitHub issue: #1234 -->
<!-- JIRA ID: EXAMPLECOMPONENT-1234 -->

JIRA ID: AIPROFSYST-818

## Test Plan

<!-- Explain any relevant testing done to verify this PR. -->

- Existing unit tests and ctest suite
- `thread_cpu_time` values: ran `rocprof-sys-sample` on
`parallel-overhead 20 2 100000` with 300 Hz CPU-time sampling and rocpd
output, and compared the per-thread tracks with the same run on
`develop`.

## Test Result

<!-- Briefly summarize test outcomes. -->

- unit tests and ctest suite pass
- `thread_cpu_time` matches `develop` to within run-to-run variation:

| Track | Samples (develop / PR) | Median sample (develop / PR) | Total
CPU time (develop / PR) |
  |---|---|---|---|
| `thread_cpu_time [0]` | 247 / 251 | 0.003002 / 0.003002 s | 0.823 /
0.837 s |
| `thread_cpu_time [1]` | 249 / 248 | 0.003001 / 0.003000 s | 1.327 /
1.323 s |
| `thread_cpu_time [2]` | 250 / 248 | 0.003000 / 0.003001 s | 1.330 /
1.324 s |

## Submission Checklist

- [x] Look over the contributing guidelines at
https://github.com/ROCm/rocm-systems/blob/develop/CONTRIBUTING.md.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants