linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
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: [PATCH v6 0/6] tracing: Deferred unwinding of user space stack traces
Date: Thu, 28 Aug 2025 14:03:00 -0400	[thread overview]
Message-ID: <20250828180300.591225320@kernel.org> (raw)


This is the tracefs (ftrace) implementation of the deferred stack tracing.

This creates two new events that get set for every trace event when the new
"userstacktrace_delay" option is enabled. The first event happens at the time
of the request (after a trace event) that saves the cookie that represents the
current user space stack trace (it stays the same while the task is in the
kernel, as the user space stack doesn't change during this time). The second
event is where the user space stacktrace is recorded along with the cookie.

Since the callback is called in faultable context, it uses this opportunity
to look at the addresses in the stacktrace and convert them to where
they would be in the executable file (if found). It also records
the inode and device major/minor numbers into the trace, so that post
processing can find the exact location where the stacks are.

To simplify the finding of the files, a new "inode_cache" event is created
that gets triggered whenever a new inode/device is added to a new rhashtable.
It will then look up the path that represents that inode/device via the vma
descriptor. To keep the recording down to a minimum, this event is only
triggered when a new inode/device is added to the rhashtable. The rhashtable
is reset when certain changes occur in the tracefs system so that new readers
of this event can get the latest changes.

Changes since v5: https://lore.kernel.org/linux-trace-kernel/20250424192456.851953422@goodmis.org/

- Removed unwind infrastructure patches as they have already been merged.

- Also add check for PF_USER_WORKER to test for kernel thread

- Have the userstacktrace_delay option not depend on the userstacktrace
  option.

- Do not expose the userstacktrace_delay option if it's not supported.

- Set inode to -1L if vma is not found for that address to let user space
  know that, and differentiate from a vdso section.

- Added "inode_cache" to dsiplay inode/device paths when added to a stack trace

Steven Rostedt (6):
      tracing: Do not bother getting user space stacktraces for kernel threads
      tracing: Rename __dynamic_array() to __dynamic_field() for ftrace events
      tracing: Implement deferred user space stacktracing
      tracing: Have deferred user space stacktrace show file offsets
      tracing: Show inode and device major:minor in deferred user space stacktrace
      tracing: Add an event to map the inodes to their file names

----
 kernel/trace/Makefile            |   3 +
 kernel/trace/inode_cache.c       | 144 ++++++++++++++++++++++++++++++++++++++
 kernel/trace/trace.c             | 146 ++++++++++++++++++++++++++++++++++++++-
 kernel/trace/trace.h             |  32 ++++++++-
 kernel/trace/trace_entries.h     |  38 ++++++++--
 kernel/trace/trace_export.c      |  25 ++++++-
 kernel/trace/trace_inode_cache.h |  42 +++++++++++
 kernel/trace/trace_output.c      |  99 ++++++++++++++++++++++++++
 8 files changed, 520 insertions(+), 9 deletions(-)
 create mode 100644 kernel/trace/inode_cache.c
 create mode 100644 kernel/trace/trace_inode_cache.h

             reply	other threads:[~2025-08-28 18:03 UTC|newest]

Thread overview: 59+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-08-28 18:03 Steven Rostedt [this message]
2025-08-28 18:03 ` [PATCH v6 1/6] tracing: Do not bother getting user space stacktraces for kernel threads Steven Rostedt
2025-08-28 18:03 ` [PATCH v6 2/6] tracing: Rename __dynamic_array() to __dynamic_field() for ftrace events Steven Rostedt
2025-08-28 18:03 ` [PATCH v6 3/6] tracing: Implement deferred user space stacktracing Steven Rostedt
2025-08-28 18:03 ` [PATCH v6 4/6] tracing: Have deferred user space stacktrace show file offsets Steven Rostedt
2025-08-28 18:03 ` [PATCH v6 5/6] tracing: Show inode and device major:minor in deferred user space stacktrace Steven Rostedt
2025-08-28 18:39   ` Linus Torvalds
2025-08-28 18:58     ` Arnaldo Carvalho de Melo
2025-08-28 19:02       ` Mathieu Desnoyers
2025-08-28 19:18       ` Linus Torvalds
2025-08-28 20:04         ` Arnaldo Carvalho de Melo
2025-08-28 20:37           ` Linus Torvalds
2025-08-28 20:17         ` Steven Rostedt
2025-08-28 20:27           ` Arnaldo Carvalho de Melo
2025-08-28 20:42             ` Linus Torvalds
2025-08-28 20:51             ` Steven Rostedt
2025-08-28 21:00               ` Arnaldo Carvalho de Melo
2025-08-28 21:27                 ` Steven Rostedt
2025-08-29 16:27                 ` Sam James
2025-08-28 20:38           ` Linus Torvalds
2025-08-28 20:48             ` Steven Rostedt
2025-08-28 21:06               ` Linus Torvalds
2025-08-28 21:17                 ` Steven Rostedt
2025-08-28 22:10                   ` Linus Torvalds
2025-08-28 22:44                     ` Steven Rostedt
2025-08-29 15:06                     ` Steven Rostedt
2025-08-29 15:47                       ` Linus Torvalds
2025-08-29 16:07                         ` Linus Torvalds
2025-08-29 16:33                           ` Steven Rostedt
2025-08-29 16:42                             ` Linus Torvalds
2025-08-29 16:50                               ` Linus Torvalds
2025-08-29 17:02                                 ` Steven Rostedt
2025-08-29 17:13                                   ` Linus Torvalds
2025-08-29 17:57                                     ` Arnaldo Carvalho de Melo
2025-08-29 20:51                                       ` Linus Torvalds
2025-08-29 16:57                               ` Steven Rostedt
2025-08-29 17:02                                 ` Linus Torvalds
2025-08-29 17:52                                   ` Steven Rostedt
2025-08-29 16:19                         ` Steven Rostedt
2025-08-29 16:28                           ` Linus Torvalds
2025-08-29 16:49                             ` Steven Rostedt
2025-08-29 16:59                               ` Linus Torvalds
2025-08-29 17:17                                 ` Arnaldo Carvalho de Melo
2025-08-29 17:33                                   ` Linus Torvalds
2025-08-29 18:11                                     ` Steven Rostedt
2025-08-29 20:54                                       ` Linus Torvalds
2025-08-29 21:18                                         ` Steven Rostedt
2025-08-29 22:40                                           ` Linus Torvalds
2025-08-29 23:09                                             ` Steven Rostedt
2025-08-29 23:42                                               ` Steven Rostedt
2025-08-30  0:36                                                 ` Steven Rostedt
2025-08-30  0:44                                               ` Steven Rostedt
2025-08-30  0:45                                               ` Linus Torvalds
2025-08-30  1:20                                                 ` Steven Rostedt
2025-08-30  1:26                                                   ` Steven Rostedt
2025-08-30 18:31                                                 ` Steven Rostedt
2025-08-30 19:03                                                   ` Arnaldo Carvalho de Melo
2025-08-30 19:03                                                   ` Linus Torvalds
2025-08-28 18:03 ` [PATCH v6 6/6] tracing: Add an event to map the inodes to their file names Steven Rostedt

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=20250828180300.591225320@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).