From: Arnaldo Carvalho de Melo <acme@kernel.org>
To: Namhyung Kim <namhyung@kernel.org>
Cc: Linus Torvalds <torvalds@linux-foundation.org>,
Ian Rogers <irogers@google.com>,
Kan Liang <kan.liang@linux.intel.com>,
Peter Zijlstra <peterz@infradead.org>,
Ingo Molnar <mingo@kernel.org>,
LKML <linux-kernel@vger.kernel.org>,
linux-perf-users@vger.kernel.org
Subject: Re: [GIT PULL] perf-tools changes for v6.13
Date: Tue, 26 Nov 2024 21:59:44 -0300 [thread overview]
Message-ID: <Z0ZvAB0vcL-D-a6f@x1> (raw)
In-Reply-To: <Z0ZhDHXxHKoE2Nrl@google.com>
On Tue, Nov 26, 2024 at 04:00:12PM -0800, Namhyung Kim wrote:
> Hello,
>
> On Tue, Nov 26, 2024 at 03:33:10PM -0800, Linus Torvalds wrote:
> > On Sun, 24 Nov 2024 at 23:17, Namhyung Kim <namhyung@kernel.org> wrote:
> > >
> > > Please consider pulling the following changes in perf tools for v6.13.
> >
> > Hmm. Has the default search path for the vmlinux image changed?
>
> I don't think so.
> > Doing profiling with this, I get
> >
> > openat(AT_FDCWD, "vmlinux", O_RDONLY) = 5
> >
> > which is very very wrong for my kernel build - it basically picks up
> > the vmlinux image from the build directory, which has absolutely
> > *nothign* to do with the image that is being run at the moment.
>
> Sure, at least it should match the build-id before use.
I tried it here and at first I reproduced Linus results, which I found
very strange, then I tried to bisect it, and all the previous versions
were producing this:
root@number:/home/acme/git/perf-tools# perf -v ; perf report -vv |& grep -A5 "^Looking at the vmlinux_path"
perf version 6.12.gb50ecc5aca4d
Looking at the vmlinux_path (8 entries long)
symsrc__init: build id mismatch for vmlinux.
symsrc__init: cannot get elf header.
overlapping maps:
ffffffffc034b75c-ffffffffc034b89b 0 bpf_prog_40ddf486530245f5_sd_devices
ffffffffc0000000-ffffffffff000000 7fffc0004000 vmlinux
root@number:/home/acme/git/perf-tools#
Which is what I got from the perf-tools branch you asked him to pull.
The algorithm in perf is similar to the one in pahole (that stole it
from perf):
root@number:/home/acme/git/perf-tools# strace -e openat pahole --running_kernel_vmlinux |& tail -12
openat(AT_FDCWD, "/sys/kernel/notes", O_RDONLY) = 3
openat(AT_FDCWD, "vmlinux", O_RDONLY) = 3
openat(AT_FDCWD, "/boot/vmlinux", O_RDONLY) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/boot/vmlinux-6.11.8-200.fc40.x86_64", O_RDONLY) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/usr/lib/debug/boot/vmlinux-6.11.8-200.fc40.x86_64", O_RDONLY) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/lib/modules/6.11.8-200.fc40.x86_64/build/vmlinux", O_RDONLY) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/usr/lib/debug/lib/modules/6.11.8-200.fc40.x86_64/vmlinux", O_RDONLY) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/usr/lib/debug/boot/vmlinux-6.11.8-200.fc40.x86_64.debug", O_RDONLY) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/root/.cache/debuginfod_client/55152ddca5da77ca62deb3dd0db105e82b3711e0/debuginfo", O_RDONLY) = -1 ENOENT (No such file or directory)
pahole: couldn't find a vmlinux that matches the running kernel
HINT: Maybe you're inside a container or missing a debuginfo package?
+++ exited with 1 +++
root@number:/home/acme/git/perf-tools#
The one in perf does very much the same:
root@number:/home/acme/git/perf-tools# perf -v ; strace -e openat -o /tmp/strace.output perf report -vv |& grep -A5 "^Looking at the vmlinux_path" ; grep '"vmlinux"' -B1 -A10 /tmp/strace.output
perf version 6.12.gb50ecc5aca4d
Looking at the vmlinux_path (8 entries long)
symsrc__init: build id mismatch for vmlinux.
symsrc__init: cannot get elf header.
overlapping maps:
ffffffffc034b75c-ffffffffc034b89b 0 bpf_prog_40ddf486530245f5_sd_devices
ffffffffc0000000-ffffffffff000000 7fffc0004000 vmlinux
openat(AT_FDCWD, "/root/.debug/.build-id/55/152ddca5da77ca62deb3dd0db105e82b3711e0/elf", O_RDONLY) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "vmlinux", O_RDONLY) = 142
openat(AT_FDCWD, "/boot/vmlinux", O_RDONLY) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/boot/vmlinux-6.11.8-200.fc40.x86_64", O_RDONLY) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/usr/lib/debug/boot/vmlinux-6.11.8-200.fc40.x86_64", O_RDONLY) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/lib/modules/6.11.8-200.fc40.x86_64/build/vmlinux", O_RDONLY) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/usr/lib/debug/lib/modules/6.11.8-200.fc40.x86_64/vmlinux", O_RDONLY) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/usr/lib/debug/boot/vmlinux-6.11.8-200.fc40.x86_64.debug", O_RDONLY) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/root/.debug/.build-id/55/152ddca5da77ca62deb3dd0db105e82b3711e0/kallsyms", O_RDONLY) = 142
openat(AT_FDCWD, "/sys/kernel/notes", O_RDONLY) = 142
openat(AT_FDCWD, "/proc/kcore", O_RDONLY) = 142
openat(AT_FDCWD, "/proc/kallsyms", O_RDONLY) = 142
root@number:/home/acme/git/perf-tools#
root@number:/home/acme/git/perf-tools# perf buildid-list -h -k
Usage: perf buildid-list [<options>]
-k, --kernel Show current kernel build id
root@number:/home/acme/git/perf-tools# perf buildid-list -k
55152ddca5da77ca62deb3dd0db105e82b3711e0
root@number:/home/acme/git/perf-tools# file vmlinux
vmlinux: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), statically linked, BuildID[sha1]=e86cad482822bd4b4caabb01e7cd00161fd51a38, with debug_info, not stripped
root@number:/home/acme/git/perf-tools#
And it ends up using /proc/kallsyms
Today I did some bisects, etc, but even with at first reproducing what
Linus described, i.e. it used the non-matching vmlinux in the current
directory to resolve symbols, I couldn't reproduce it after trying to
bisect it :-\
> > So now I need to point "perf report" at the actual image, which I
> > didn't need to do before.
>
> Ok, I'll try to reproduce it and take a look.
Hope you root cause this, late in this part of the world, going AFK now.
- Arnaldo
next prev parent reply other threads:[~2024-11-27 0:59 UTC|newest]
Thread overview: 14+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-11-25 7:16 [GIT PULL] perf-tools changes for v6.13 Namhyung Kim
2024-11-25 19:07 ` Sasha Levin
2024-11-26 2:53 ` Namhyung Kim
2024-11-26 7:36 ` Ian Rogers
2024-12-03 18:33 ` Namhyung Kim
2024-11-26 23:33 ` Linus Torvalds
2024-11-27 0:00 ` Namhyung Kim
2024-11-27 0:59 ` Arnaldo Carvalho de Melo [this message]
2024-11-27 3:25 ` Namhyung Kim
2024-11-27 13:12 ` Arnaldo Carvalho de Melo
2024-11-27 16:02 ` Linus Torvalds
2024-11-27 18:27 ` Namhyung Kim
2024-11-28 5:53 ` Ian Rogers
2024-11-26 23:40 ` pr-tracker-bot
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=Z0ZvAB0vcL-D-a6f@x1 \
--to=acme@kernel.org \
--cc=irogers@google.com \
--cc=kan.liang@linux.intel.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-perf-users@vger.kernel.org \
--cc=mingo@kernel.org \
--cc=namhyung@kernel.org \
--cc=peterz@infradead.org \
--cc=torvalds@linux-foundation.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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.