Re: [PATCH v13 00/11] perf: Support the deferred unwinding infrastructure

From
Namhyung Kim <namhyung@kernel.org>
Date
2025-07-11 20:26:31
Also in
bpf, lkml
Reply to
Steven Rostedt, 2025-07-08
Hi Steve,

On Mon, Jul 07, 2025 at 10:00:03PM -0400, Steven Rostedt wrote:
This is based on top of the deferred unwind core patch series:

 https://lore.kernel.org/linux-trace-kernel/20250708012239.268642741@kernel.org/ (local)
   git://git.kernel.org/pub/scm/linux/kernel/git/trace/linux-trace.git
     unwind/core

This series implements the perf interface to use deferred user space stack
tracing.

The code for this series is located here:

  git://git.kernel.org/pub/scm/linux/kernel/git/trace/linux-trace.git
unwind/perf

Changes since v12: https://lore.kernel.org/linux-trace-kernel/20250701180410.755491417@goodmis.org/ (local)

- Also check against PF_USER_WORKER as io workers do not have PF_KTHREAD
  set.

- Removed deferred_request_nmi() and have NMIs just use the normal
  deferred_request() function. As Peter Zijlstra has stated, in_nmi() can
  nest because some exceptions set in_nmi() and another NMI could come in.

- Removed use of timestamp. The deferred unwind has gone back to using
  cookies, and perf doesn't use the cookie. This means the
  struct perf_callchain_deferred_event is not modified.
What about adding the cookies in the records to handle lost data?  Even
if it's not necessary to match callchains to samples, it still needs to
reject invalid callchains across the losts.  Maybe it can just flush
pending samples when it sees LOST records and not try to match them but
having the cookies will handle it more accurately as some callchains may
be valid after the LOST.

Thanks,
Namhyung
Head SHA1: 3d88d03d533ede8d2d513942e768607aa9279c4b


Josh Poimboeuf (5):
      perf: Remove get_perf_callchain() init_nr argument
      perf: Have get_perf_callchain() return NULL if crosstask and user are set
      perf: Simplify get_perf_callchain() user logic
      perf: Skip user unwind if the task is a kernel thread
      perf: Support deferred user callchains

Namhyung Kim (4):
      perf tools: Minimal CALLCHAIN_DEFERRED support
      perf record: Enable defer_callchain for user callchains
      perf script: Display PERF_RECORD_CALLCHAIN_DEFERRED
      perf tools: Merge deferred user callchains

Steven Rostedt (2):
      perf: Use current->flags & PF_KTHREAD|PF_USER_WORKER instead of current->mm == NULL
      perf: Support deferred user callchains for per CPU events

----
 include/linux/perf_event.h                |  13 +-
 include/uapi/linux/perf_event.h           |  19 +-
 kernel/bpf/stackmap.c                     |   8 +-
 kernel/events/callchain.c                 |  49 ++--
 kernel/events/core.c                      | 407 +++++++++++++++++++++++++++++-
 tools/include/uapi/linux/perf_event.h     |  19 +-
 tools/lib/perf/include/perf/event.h       |   7 +
 tools/perf/Documentation/perf-script.txt  |   5 +
 tools/perf/builtin-script.c               |  92 +++++++
 tools/perf/util/callchain.c               |  24 ++
 tools/perf/util/callchain.h               |   3 +
 tools/perf/util/event.c                   |   1 +
 tools/perf/util/evlist.c                  |   1 +
 tools/perf/util/evlist.h                  |   1 +
 tools/perf/util/evsel.c                   |  39 +++
 tools/perf/util/evsel.h                   |   1 +
 tools/perf/util/machine.c                 |   1 +
 tools/perf/util/perf_event_attr_fprintf.c |   1 +
 tools/perf/util/sample.h                  |   3 +-
 tools/perf/util/session.c                 |  78 ++++++
 tools/perf/util/tool.c                    |   2 +
 tools/perf/util/tool.h                    |   4 +-
 22 files changed, 742 insertions(+), 36 deletions(-)
Thread (14 messages) 14 messages, 3 authors, last reply 2025-07-11
Keyboard shortcuts
hback out one level
jnext message in thread / next series-diff position
kprevious message in thread / previous series-diff position
ldrill in
Escclose help / fold thread tree
?toggle this help