Skip to content

Expose CPU time in wall-mode Firefox output#178

Draft
joshuay03 wants to merge 1 commit into
mainfrom
fix-29
Draft

Expose CPU time in wall-mode Firefox output#178
joshuay03 wants to merge 1 commit into
mainfrom
fix-29

Conversation

@joshuay03

@joshuay03 joshuay03 commented Jul 4, 2026

Copy link
Copy Markdown
Collaborator

Fixes #29.

Surfaces CPU time in wall-mode profiles two ways.

  1. Attached to every "Thread Running" marker interval as cpu_time. Hovering over the marker in the Firefox profiler shows how much CPU the thread actually consumed during that run, making preemption visible.
  2. Emitted as per-sample threadCPUDelta when Vernier.profile(cpu_time: true) is set. The Firefox profiler renders this as a per-thread CPU utilization track.

Opt-in on the sample side because Firefox swaps the timeline's activity graph from category-coloured sample density to CPU utilization when the field is present, which reads as gaps for I/O-heavy workloads.

Measure CPU time via pthread_getcpuclockid on Linux and Mach thread_info
on macOS, and surface it two ways:

  1. Attached to every "Thread Running" marker interval as `cpu_time`.
     Hovering over the marker in the Firefox profiler shows how much
     CPU the thread actually consumed during that run, making preemption
     visible.

  2. Emitted as per-sample threadCPUDelta on the samples table when the
     new `cpu_time:` option is set. The Firefox profiler renders this as
     a per-thread CPU utilization track. Opt-in because the profiler
     swaps the timeline's activity graph from category-coloured sample
     density to CPU utilization when the field is present.

Fixes #29.
@joshuay03 joshuay03 self-assigned this Jul 4, 2026
@joshuay03 joshuay03 moved this to On Hold in Open Source Jul 4, 2026
@joshuay03 joshuay03 moved this from On Hold to In Progress / Pending Review in Open Source Jul 4, 2026
@jhawthorn

Copy link
Copy Markdown
Owner

Thanks for looking into this ❤️

Have you gotten any sense of the overhead? In my experience, reading from the CPU time clocks on linux is very expensive.

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

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[feat] :cpu mode for on-CPU collection?

2 participants