From: Steven Rostedt <rostedt@kernel.org>
To: linux-kernel@vger.kernel.org, linux-trace-kernel@vger.kernel.org,
bpf@vger.kernel.org, x86@kernel.org
Cc: Masami Hiramatsu <mhiramat@kernel.org>,
Mathieu Desnoyers <mathieu.desnoyers@efficios.com>,
Josh Poimboeuf <jpoimboe@kernel.org>,
Peter Zijlstra <peterz@infradead.org>,
Ingo Molnar <mingo@kernel.org>, Jiri Olsa <jolsa@kernel.org>,
Arnaldo Carvalho de Melo <acme@kernel.org>,
Namhyung Kim <namhyung@kernel.org>,
Thomas Gleixner <tglx@linutronix.de>,
Andrii Nakryiko <andrii@kernel.org>,
Indu Bhagat <indu.bhagat@oracle.com>,
"Jose E. Marchesi" <jemarch@gnu.org>,
Beau Belgrave <beaub@linux.microsoft.com>,
Jens Remus <jremus@linux.ibm.com>,
Linus Torvalds <torvalds@linux-foundation.org>,
Andrew Morton <akpm@linux-foundation.org>,
Florian Weimer <fweimer@redhat.com>, Sam James <sam@gentoo.org>,
Kees Cook <kees@kernel.org>,
"Carlos O'Donell" <codonell@redhat.com>
Subject: [RESEND][PATCH v15 0/4] perf: Support the deferred unwinding infrastructure
Date: Mon, 08 Sep 2025 13:14:12 -0400 [thread overview]
Message-ID: <20250908171412.268168931@kernel.org> (raw)
[
This is simply a resend of version 15 of this patch series
but with only the kernel changes. I'm separating out the user space
changes to their own series.
The original v15 is here:
https://lore.kernel.org/linux-trace-kernel/20250825180638.877627656@kernel.org/
]
This patch set is based off of perf/core of the tip tree:
git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip.git
To run this series, you can checkout this repo that has this series as well as the above:
git://git.kernel.org/pub/scm/linux/kernel/git/trace/linux-trace.git unwind/perf-test
This series implements the perf interface to use deferred user space stack
tracing.
Patch 1 adds a new API interface to the user unwinder logic to allow perf to
get the current context cookie for it's task event tracing. Perf's task event
tracing maps a single task per perf event buffer and it follows the task
around, so it only needs to implement its own task_work to do the deferred
stack trace. Because it can still suffer not knowing which user stack trace
belongs to which kernel stack due to dropped events, having the cookie to
create a unique identifier for each user space stack trace to know which
kernel stack to append it to is useful.
Patch 2 adds the per task deferred stack traces to perf. It adds a new event
type called PERF_RECORD_CALLCHAIN_DEFERRED that is recorded when a task is
about to go back to user space and happens in a location that pages may be
faulted in. It also adds a new callchain context called PERF_CONTEXT_USER_DEFERRED
that is used as a place holder in a kernel callchain to append the deferred
user space stack trace to.
Patch 3 adds the user stack trace context cookie in the kernel callchain right
after the PERF_CONTEXT_USER_DEFERRED context so that the user space side can
map the request to the deferred user space stack trace.
Patch 4 adds support for the per CPU perf events that will allow the kernel to
associate each of the per CPU perf event buffers to a single application. This
is needed so that when a request for a deferred stack trace happens on a task
that then migrates to another CPU, it will know which CPU buffer to use to
record the stack trace on. It is possible to have more than one perf user tool
running and a request made by one perf tool should have the deferred trace go
to the same perf tool's perf CPU event buffer. A global list of all the
descriptors representing each perf tool that is using deferred stack tracing
is created to manage this.
Josh Poimboeuf (1):
perf: Support deferred user callchains
Steven Rostedt (3):
unwind deferred: Add unwind_user_get_cookie() API
perf: Have the deferred request record the user context cookie
perf: Support deferred user callchains for per CPU events
----
include/linux/perf_event.h | 11 +-
include/linux/unwind_deferred.h | 5 +
include/uapi/linux/perf_event.h | 25 +-
kernel/bpf/stackmap.c | 4 +-
kernel/events/callchain.c | 14 +-
kernel/events/core.c | 421 +++++++++++++++++++++++++++++++++-
kernel/unwind/deferred.c | 21 ++
tools/include/uapi/linux/perf_event.h | 25 +-
8 files changed, 518 insertions(+), 8 deletions(-)
next reply other threads:[~2025-09-08 17:14 UTC|newest]
Thread overview: 25+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-09-08 17:14 Steven Rostedt [this message]
2025-09-08 17:14 ` [RESEND][PATCH v15 1/4] unwind deferred: Add unwind_user_get_cookie() API Steven Rostedt
2025-09-08 17:14 ` [RESEND][PATCH v15 2/4] perf: Support deferred user callchains Steven Rostedt
2025-09-23 9:19 ` Peter Zijlstra
2025-09-23 9:35 ` Steven Rostedt
2025-09-23 9:38 ` Peter Zijlstra
2025-09-23 10:28 ` [RESEND][PATCH v15 2/4] perf: Support deferred user callchainshttps://lore.kernel.org/linux-trace-kernel/20250827193644.527334838@kernel.org/ Steven Rostedt
2025-09-23 10:35 ` Peter Zijlstra
2025-09-23 10:01 ` [RESEND][PATCH v15 2/4] perf: Support deferred user callchains Peter Zijlstra
2025-09-23 10:32 ` Peter Zijlstra
2025-09-23 12:36 ` Steven Rostedt
2025-10-03 19:56 ` Steven Rostedt
2025-09-08 17:14 ` [RESEND][PATCH v15 3/4] perf: Have the deferred request record the user context cookie Steven Rostedt
2025-09-08 17:14 ` [RESEND][PATCH v15 4/4] perf: Support deferred user callchains for per CPU events Steven Rostedt
2025-09-08 17:21 ` [RESEND][PATCH v15 0/4] perf: Support the deferred unwinding infrastructure Steven Rostedt
2025-09-16 14:41 ` Steven Rostedt
2025-09-18 11:46 ` Peter Zijlstra
2025-09-18 15:18 ` Steven Rostedt
2025-09-18 17:24 ` Peter Zijlstra
2025-09-18 17:32 ` Peter Zijlstra
2025-09-18 19:10 ` Steven Rostedt
2025-09-19 23:34 ` Josh Poimboeuf
2025-09-21 23:33 ` Steven Rostedt
2025-09-22 7:23 ` Peter Zijlstra
2025-09-22 14:17 ` Peter Zijlstra
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20250908171412.268168931@kernel.org \
--to=rostedt@kernel.org \
--cc=acme@kernel.org \
--cc=akpm@linux-foundation.org \
--cc=andrii@kernel.org \
--cc=beaub@linux.microsoft.com \
--cc=bpf@vger.kernel.org \
--cc=codonell@redhat.com \
--cc=fweimer@redhat.com \
--cc=indu.bhagat@oracle.com \
--cc=jemarch@gnu.org \
--cc=jolsa@kernel.org \
--cc=jpoimboe@kernel.org \
--cc=jremus@linux.ibm.com \
--cc=kees@kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-trace-kernel@vger.kernel.org \
--cc=mathieu.desnoyers@efficios.com \
--cc=mhiramat@kernel.org \
--cc=mingo@kernel.org \
--cc=namhyung@kernel.org \
--cc=peterz@infradead.org \
--cc=sam@gentoo.org \
--cc=tglx@linutronix.de \
--cc=torvalds@linux-foundation.org \
--cc=x86@kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).