[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <aHFzdCv3-BRw9btW@google.com>
Date: Fri, 11 Jul 2025 13:26:28 -0700
From: Namhyung Kim <namhyung@...nel.org>
To: Steven Rostedt <rostedt@...nel.org>
Cc: linux-kernel@...r.kernel.org, linux-trace-kernel@...r.kernel.org,
bpf@...r.kernel.org, x86@...nel.org,
Masami Hiramatsu <mhiramat@...nel.org>,
Mathieu Desnoyers <mathieu.desnoyers@...icios.com>,
Josh Poimboeuf <jpoimboe@...nel.org>,
Peter Zijlstra <peterz@...radead.org>,
Ingo Molnar <mingo@...nel.org>, Jiri Olsa <jolsa@...nel.org>,
Thomas Gleixner <tglx@...utronix.de>,
Andrii Nakryiko <andrii@...nel.org>,
Indu Bhagat <indu.bhagat@...cle.com>,
"Jose E. Marchesi" <jemarch@....org>,
Beau Belgrave <beaub@...ux.microsoft.com>,
Jens Remus <jremus@...ux.ibm.com>,
Linus Torvalds <torvalds@...ux-foundation.org>,
Andrew Morton <akpm@...ux-foundation.org>,
Jens Axboe <axboe@...nel.dk>, Florian Weimer <fweimer@...hat.com>,
Sam James <sam@...too.org>
Subject: Re: [PATCH v13 00/11] perf: Support the deferred unwinding
infrastructure
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/
> 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/
>
> - 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(-)
Powered by blists - more mailing lists