Re: [PATCH RFC 1/5] perf: Add ioctl to emit sideband events

From: Peter Zijlstra
Date: Mon Apr 17 2023 - 07:00:51 EST


On Fri, Apr 14, 2023 at 11:22:56AM +0300, Adrian Hunter wrote:
> perf tools currently read /proc to get this information, but that
> races with changes made by the kernel.
>
> Add an ioctl to output status-only sideband events for a currently
> active event on the current CPU. Using timestamps, these status-only
> sideband events will be correctly ordered with respect to "real"
> sideband events.
>
> The assumption is a user will:
> - open and enable a dummy event to track sideband events
> - call the new ioctl to get sideband information for currently
> running processes as needed
> - enable the remaining selected events
>
> The initial sideband events to be supported will be: fork, namespaces, comm
> and mmap.
>
> Add a new misc flag PERF_RECORD_MISC_STATUS_ONLY to differentiate "real"
> sideband events from status-only sideband events.
>
> The limitation that the event must be active is significant. The ioctl
> caller must either:
> i) For a CPU context, set CPU affinity to the correct CPU.
> Note, obviously that would not need to be done for system-wide
> tracing on all CPUs. It would also only need to be done for the
> period of tracing when the ioctl is to be used.
> ii) Use an event opened for the current process on all CPUs.
> Note, if such an additional event is needed, it would also use
> additional memory from the user's perf_event_mlock_kb /
> RLIMIT_MEMLOCK limit.

Why would a single per-task event not work? I see nothing in the code
that would require a per-task-per-cpu setup. Or am I just having trouble
reading again?