Messages in this thread | ![/](/images/icornerl.gif) | | Date | Wed, 20 Dec 2023 18:16:59 +0200 | Subject | Re: [PATCH RFC V2 1/4] perf/core: Add aux_pause, aux_resume, aux_start_paused | From | Adrian Hunter <> |
| |
On 20/12/23 17:54, James Clark wrote: > > > On 08/12/2023 17:24, Adrian Hunter wrote: >> Hardware traces, such as instruction traces, can produce a vast amount of >> trace data, so being able to reduce tracing to more specific circumstances >> can be useful. >> >> The ability to pause or resume tracing when another event happens, can do >> that. >> >> Add ability for an event to "pause" or "resume" AUX area tracing. >> >> Add aux_pause bit to perf_event_attr to indicate that, if the event >> happens, the associated AUX area tracing should be paused. Ditto >> aux_resume. Do not allow aux_pause and aux_resume to be set together. >> >> Add aux_start_paused bit to perf_event_attr to indicate to an AUX area >> event that it should start in a "paused" state. >> >> Add aux_paused to struct perf_event for AUX area events to keep track of >> the "paused" state. aux_paused is initialized to aux_start_paused. >> >> Add PERF_EF_PAUSE and PERF_EF_RESUME modes for ->stop() and ->start() >> callbacks. Call as needed, during __perf_event_output(). Add >> aux_in_pause_resume to struct perf_buffer to prevent races with the NMI >> handler. Pause/resume in NMI context will miss out if it coincides with >> another pause/resume. >> >> To use aux_pause or aux_resume, an event must be in a group with the AUX >> area event as the group leader. >> >> Example (requires Intel PT and tools patches also): >> >> $ perf record --kcore -e '{intel_pt/aux-start-paused/k,syscalls:sys_enter_newuname/aux-resume/,syscalls:sys_exit_newuname/aux-pause/}' uname > > I think it might be useful to have an aux-toggle option as well, and > then you could do sampling if you put it on a PMU counter with an > interval. Unless you can make two events for the same counter with > different intervals, and one does resume and the other does pause? I'm > not sure if that would work?
There is already ->snapshot_aux() for sampling. Is that what you mean?
> > Other than that it looks ok. I got Coresight working with a couple of > changes to what you posted on here, but that can always be done more > thoroughly later if we leave PERF_PMU_CAP_AUX_PAUSE off Coresight for now.
Thanks a lot for looking at this!
| ![\](/images/icornerr.gif) |